Page-Creator - скрипт для импорта вики-страниц и другой информации по проектам из Gitlab, Taiga и Cabinet в Wiki.
Использует соответствующие клиенты для выгрузки страниц из Gitlab, Taiga и Cabinet, создает соответствующие страницы для конкретного проекта.
Репозиторий в gitlab
Механизм работы импорта следующий:
Получение списка проектов из кабинета. Происходит импорт списка проектов из кабинета, затем фильтрация этого списка для выбора активных в данный момент проектов.
Выгрузка информации о проектах. Происходит импорт основной информации о проектах и списков участников. Затем на основе этой информации генерируются страницы проектов, которые затем экспортируются в Wiki.
Выгрузка документации проектов. Производится импорт ссылок на документацию проекта по трем разделам: представление, постерная сессия и итоговая документация. В будущем планируется сделать автоматическое преобразование документации в формат вики и ее индексация.
Выгрузка раздела вики из GitLab. На основании списка проектов мы получаем список групп в GitLab, для каждой группы берутся все репозитории(проекты) в этой группе, а затем все страницы в заданном репозитории(проекте) импортируются в Wiki. Вики из репозиториев(проектов) и групп, созданных вне рамок проектной деятельности, не импортируются.
Выгрузка раздела вики из Taiga. На основании списка проектов полученного из кабинета, формируется список проектов которые присутствуют в трекере Taiga, а затем для каждого проекта выгружаются все расположенные в нем Вики-страницы. Вики-страницы из проектов, созданных вне рамок проектной деятельности не импортируются.
Для взаимодействия с другими сервисами используются следющие библиотеки
Для сборки скрипта импорта потребуется операционная система GNU/Linux.
Собранный этим способом архив можно использовать для развертывания page-creator на сервере.
Необходимые программы:
Порядок действий:
git clone https://git.miem.hse.ru/370/page-creator.git
npm install
npm run build
npm prune --production
tar -czf release.tar.gz node_modules dist templates package.json
zip -r release.zip node_modules dist templates package.json
Необходимые программы:
Порядок действий:
git clone https://git.miem.hse.ru/370/page-creator.git
docker build -t page-creator:latest --target page-creator -f scripts/Dockerfile .
В репозитории page-creator настроена автоматическая сборка архивов и контейнеров с помощью механизма CI/CD. Сборка и релиз происходят при размещении в репозитории тега вида vX.X.X
Архивы размещаются в хранилище generic package, образы - в container registry. Ссылки на собранные архивы прикрепляются к релизу.
Независимо от способа развертывания, необходимо заранее получить данные для подключения к другим сервисам:
read_api
от аккаунта, имеющего администратитвный доступ. Это необходимо для возможности получения вики-страниц из закрытых репозиториев.vue_admin_template_token
, содержащей в себе JWT-токен.Данный вид развертывания подразумевает запуск скрипта непосредственно на машине, с помощью установленной на ней node.js.
Необходимые программы:
Порядок действий:
.env
со следующим содержимым:WIKI_URL=https://wiki.yourdomain.ru/graphql # URL сервиса Wiki
WIKI_TOKEN=<token> # Токен от Wiki
GITLAB_URL=https://git.yourdomain.ru # URL сервиса GitLab
GITLAB_TOKEN=<Gitlab-Token> # Персональный токен с доступом ко всем репозиториям
TAIGA_URL=https://taiga.yourdomain.ru # URL сервиса Taiga
TAIGA_LOGIN=<login> # Логин/почта от сервиса Taiga
TAIGA_PASSWORD=<password> # Пароль от сервиса Taiga
CABINET_TOKEN=<token> # Токен от кабинета
LOAD_PROJECTS=FALSE # Выполнять выгрузку проектов из Кабинета
LOAD_PROJECTS_DOCS=FALSE # Выполнять выгрузку документации проектов из Кабинета
LOAD_GITLAB=FALSE # Выполнять выгрузку документации из GitLab
LOAD_TAIGA=FALSE # Выполнять выгрузку документации из Taiga
RENDERING=TRUE # Выполнять рендеринг страниц при выгрузке (рекомендуется)
data
для хранения обновленного токена Кабинетаpage-creator.service
в папке /etc/systemd/system
или /lib/systemd/system
:[Unit]
Description=Page creator script
[Service]
Type=simple
User=<user>
Group=<group>
ExecStart=/usr/bin/npm start
WorkingDirectory=/path/to/script
, где <user>
и <group>
неоходимо заменить на группу и пользователя от имени которых будет выполняться скрипт, и файл таймера page-creator.timer
:[Unit]
Description=Run page creator every night
[Timer]
OnCalendar=*-*-* 02:00:00
Persistent=true
[Install]
WantedBy=timers.target
В качестве времени запуска таймера рекомендуется выбирать время наименьшей загруженности сервисов, например ночь или раннее утро.Обновление можно производить только тогда, когда скрипт не запущен. Необходимо удалить все содержимое папки со скриптом, кроме директории data
и файла .env
. Затем нужно распаковать архив с новой версией скрипта в текущую директорию.
Данный вид развертывания подразумевает запуск скрипта в контейнере.
Необходимые программы:
Порядок действий:
docker login
, используя Deploy Token или Personal Access Token. Подробнее см. справку GitLab Container Registryversion: '3.6'
services:
page-creator:
image: registry.miem.hse.ru/370/wiki/page-creator:latest
environment:
WIKI_URL: https://wiki.yourdomain.ru/graphql # URL сервиса Wiki
WIKI_TOKEN: <token> # Токен от Wiki
GITLAB_URL: https://git.yourdomain.ru # URL сервиса GitLab
GITLAB_TOKEN: <Gitlab-Token> # Персональный токен с доступом ко всем репозиториям
TAIGA_URL: https://taiga.yourdomain.ru # URL сервиса Taiga
TAIGA_LOGIN: <login> # Логин/почта от сервиса Taiga
TAIGA_PASSWORD: <password> # Пароль от сервиса Taiga
CABINET_TOKEN: <token> # Токен от кабинета
LOAD_PROJECTS: 'FALSE' # Выполнять выгрузку проектов из Кабинета
LOAD_PROJECTS_DOCS: 'FALSE' # Выполнять выгрузку документации проектов из Кабинета
LOAD_GITLAB: 'FALSE' # Выполнять выгрузку документации из GitLab
LOAD_TAIGA: 'FALSE' # Выполнять выгрузку документации из Taiga
RENDERING: 'TRUE' # Выполнять рендеринг страниц при выгрузке (рекомендуется)
volumes:
- page-creator-data:/root/app/data # volume для хранения токена кабинета
profiles:
- no-autostart
volumes:
page-creator-data:
особо нужно отметить директиву profiles
, которая отключает автозапуск контейнера при выполнении команды docker compose up -d
, которая может быть использована для запуска других служб в том же compose файле.env_file
.page-creator.service
в папке /etc/systemd/system
или /lib/systemd/system
:[Unit]
Description=Page creator script
[Service]
Type=simple
User=<user>
Group=<group>
ExecStart=docker compose run --rm page-creator
WorkingDirectory=/directory/with/compose/file
и файл таймера page-creator.timer
:[Unit]
Description=Run page creator every night
[Timer]
OnCalendar=*-*-* 02:00:00
Persistent=true
[Install]
WantedBy=timers.target
Обновление можно производить только тогда, когда скрипт не запущен. Для обновления достаточно выполнить команду docker compose pull page-creator
.