Как опубликовать html отчет

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

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

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

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

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

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

  • каков оптимальный способ использования СУЩЕСТВУЮЩЕГО проекта, чтобы просто добавить в него несколько html-страниц (в идеале я бы хотел избежать создания нового проекта только для этой цели)


person pkaramol    schedule 12.02.2018    source источник
comment
Надеюсь, мне удалось ответить на ваш вопрос. Пожалуйста, дайте мне знать, если я что-то пропустил. Если нет, вы можете пометить мой ответ как принятый.   -  person JGC    schedule 17.11.2018


Ответы (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 будет доступно через URL-адрес <group>.pages.<your-gitlab-domain-name>/<project>, что означает, что вы имеете полный контроль над содержимым.

Обратите внимание, что задание страниц в 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

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

person JGC    schedule 20.08.2018
comment
Не могли бы вы рассказать о хаках для обновления существующих страниц? - person Fabian Knorr; 16.11.2018
comment
Как уже упоминалось, вы не можете добавлять содержимое, но вы можете подделать его, загрузив содержимое артефакта public из предыдущего выпуска, что означает, что вы можете затем добавить поверх него, достигнув того же результата. Мне нужно посмотреть на мой код, но я думаю, что использую curl и GitLab API для извлечения артефактов. Если вы считаете, что это было бы полезным дополнением, я могу включить более подробную информацию. ИМХО, конечный результат слишком сложен, и я бы приветствовал более простой способ сделать это. - person JGC; 17.11.2018