Gitlab: опубликовать отчет в формате html

Я использую gitlab трубопровод для запуска некоторых тестов и подготовки отчета о покрытии.

То, что я хотел бы сделать, это иметь возможность публиковать созданную папку покрытия (которая включает в себя HTML-страницу и src папка) в какой-то внутренний gitlab статическая страница, доступная для просмотра некоторым членам команды.

Мне известна концепция страниц gitlab, но шаги показывают, что для этой цели мне нужно использовать генератор статического сайта.

Мои вопросы следующие:

  • эта концепция применима только при публикации на официальном сайте gitlab (gitlab.io) или я могу использовать мой на прем gitlab установка (т.е. чтобы мои страницы были доступны в my.local.gitlab.server/mynamespace/thepagesproject)?

  • могу ли я просто загрузить index.html файл с папкой его содержимого и сделать его доступным?

  • Каков оптимальный способ использования проекта EXISTING, чтобы просто добавить к нему несколько html-страниц (в идеале я бы хотел избежать создания нового проекта только для этой цели)

1 ответ

Могу ли я использовать GitLab Pages на автономном экземпляре?

Да, GitLab Pages работает с автономными экземплярами. Вам может потребоваться зарегистрировать доменное имя с подстановочными знаками для *.pages.<your-gitlab-domain-name> и генерируйте сертификаты SSL, если вы используете gitlab только через https.

Как только у вас есть домен, отредактируйте /etc/gitlab/gitlab.rb и добавьте дополнительные настройки, и запустите gitlab-ctl reconfigure (опустить pages_nginx настройки, если вы работаете только через http:

gitlab_pages['enable'] = true
pages_external_url "https://pages.<your-gitlab-domain-name>"
pages_nginx['redirect_http_to_https'] = true
pages_nginx['ssl_certificate'] = "/etc/gitlab/ssl/pages.<your-gitlab-domain-name>.crt"
pages_nginx['ssl_certificate_key'] = "/etc/gitlab/ssl/pages.<your-gitlab-domain-name>.key"

Как только это будет сделано, вы сможете получить доступ к страницам проекта через <group>.pages.<your-gitlab-domain-name>/<project>

Могу ли я загрузить на страницы все, что захочу?

Да. Каждое задание GitLab CI может создавать контент для публикации на страницах GitLab, записывая его в public папка и регистрация public в качестве каталога артефактов. Финал pages задание должно быть добавлено в конвейер CI, который вызывает публикацию содержимого страниц (перезаписывая все, что было раньше). Все содержание public каталог будет доступен через <group>.pages.<your-gitlab-domain-name>/<project> URL, что означает, что вы имеете полный контроль над контентом.

Обратите внимание, что задание страниц в CI не должно иметь никакого сценария, оно просто должно присутствовать с названием задания "pages". Это волшебное имя задания, которое запускает публикацию страниц. Возможно, вы захотите добавить ограничения на работу, чтобы они работали только на главных ветвях.

Могу ли я добавить страницы публикации в существующий проект?

Да. Любые шаги, которые создают контент, который вы хотите опубликовать, должны записать контент в public подкаталог, и зарегистрируйте public каталог как каталог артефактов.

my job:
  stage: build
script:
  - echo "Do some things and write them to public directory" > public/index.html
artifacts:
  paths:
  - public
    expire_in: 2 weeks

Примечание: я люблю добавлять expire_in: 2 weeks чтобы ограничить продолжительность времени, артефакты хранятся вокруг. После того, как страницы были опубликованы, артефакты больше не нужны.

Наконец, вам нужно добавить pages Работа для запуска страниц публикации:

# This job does nothing but collect artifacts from other jobs and triggers the pages build
# The artifacts are picked up by the pages:deploy job.
pages:
  stage: deploy
  script:
    - ls -l public
  artifacts:
    paths:
      - public
  only:
    - master

Обычно вы хотите публиковать только в основной ветке, но у вас есть свобода выбора, когда вы хотите, чтобы страницы публиковались. Важно отметить, что при публикации страниц он полностью заменит любой ранее опубликованный контент, поэтому вы не можете добавить его к существующему (хотя есть некоторые хаки, которые позволяют добиться чего-то подобного).

Другие вопросы по тегам