Могу ли я использовать 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