À partir de projets hébergés sur https://plmlab.math.cnrs.fr, GitLab Pages permet de :
math.cnrs.fr
¶Pages permet de publier sur une URL qui contient un nom de projet ou d'équipe.
Pour le projet GitLab projectname
qui appartient à
username
ou groupname
, l'adresse de publication sera :
https://[username|groupname].pages.math.cnrs.fr/[projectname]
projectname
est absent de l'URL s'il vaut[username|groupname].pages.math.cnrs.fr
En deux temps, trois mouvements :
gitlab runner
ou on utilise un runner partagé.gitlab-ci.yml
décrivant le job d'intégration continue.pages.math.cnrs.fr
mais si l'admin l'active, on peut ajouter un nom de domaine personnalisé.Quelques lignes dans le fichier /etc/gitlab/gitlab.rb
:
################
# gitlab pages #
################
pages_external_url 'https://pages.math.cnrs.fr'
pages_nginx['redirect_http_to_https'] = true
pages_nginx['ssl_certificate'] = "/etc/gitlab/ssl/star_pages_math_cnrs_fr.pem"
pages_nginx['ssl_certificate_key'] = "/etc/gitlab/ssl/star_pages_math_cnrs_fr.key"
star_pages_math_cnrs_fr.[pem|key]
sont les fichiers du certificat wildcard qui est nécessaire pour publier sur *.pages.math.cnrs.fr
.£La version actuelle de GitLab ne fournit pas d'outil pour monitorer l'utilisation de Pages. Voici un script permettant de lister les contenus publiés avec Pages :
sudo gitlab-admin/gitlab_pages.py
[sudo] password for xxx:
Exploring default Pages path: /var/opt/gitlab/gitlab-rails/shared/pages/
tonus:
https://tonus.pages.math.unistra.fr/schnaps/kirsch (9,5M)
https://tonus.pages.math.unistra.fr/schnaps/schnaps (119M)
formation-python:
https://formation-python.pages.math.unistra.fr (5,2M)
[...]
formation-info:
https://formation-info.pages.math.unistra.fr/gitlab-pages (32K)
https://formation-info.pages.math.unistra.fr/expose-git (1,3M)
https://formation-info.pages.math.unistra.fr/atelier-gitlab --> WARNING: directory is empty
https://formation-info.pages.math.unistra.fr/expose-git-example/methodus-inveniendi-addII.pdf (2,3M)
boileau:
https://boileau.pages.math.unistra.fr/tp-gitlab (4,0M)
https://boileau.pages.math.unistra.fr/website (68K)
https://boileau.pages.math.unistra.fr/relax (4,1M)
master
)plmlab.math.cnrs.fr
¶export USERNAME=mboileau # Remplacez par le vôtre
./reset.sh
demo
:git remote add demo git@plmlab.math.cnrs.fr:$USERNAME/gitlab-pages-demo.git
git push demo
Cette action crée le nouveau projet gitlab-pages-demo
git checkout -b dev
plmlab.math.cnrs.fr
propose des runners partagésCI / CD > Runners settings
dind
pour Docker in Docker.gitlab-ci.yml
¶Avec GitLab-CI, toute l'intégration continue est décrite par un fichier unique .gitlab-ci.yml
qui doit être présent dans la racine du projet :
cat > .gitlab-ci.yml <<- EOM
image: boileaum/jupyter
pages:
script:
- ./build.sh
tags:
- dind
only:
- master
artifacts:
paths:
- public
EOM
avec :
image: boileaum/jupyter
l'image boileaum/jupyter
du conteneur Docker chargé d'exécuter le script d'intégration continue pages:
le job gitlab-ci doit obligatoirement porter ce nombuild.sh
un script qui convertit ce notebook Jupyter en diaporama Reveal.jspublic/
le répertoire dont le contenu sera publié par Pagesonly:
- master
Ce job ne sera exécuté que pour la branche master
.
tags:
- dind
Avec le tag dind
, on cible le runner partagé.
artifacts:
paths:
- public
Nécessaire pour que le répertoire soit effectivement publié.
git add .gitlab-ci.yml gitlab-pages.ipynb
git commit -m "Add .gitlab-ci.yml to trigger GitLab Pages"
git push -u demo
Cette action ne déclenche pas la chaîne d'intégration continue car cette dernière ne concerne que la branche
master
.
CI/CD > Pipelines
Settings > Pages
Elle vaut ici http://mboileau.pages.math.cnrs.fr/gitlab-pages-demomboileau.pages.math.cnrs.fr
demo
(par exemple) et y déplacer le projet en le renommant :
demo.pages.math.cnrs.fr
afin de le publier sur http://demo.pages.math.cnrs.fr.GitLab Pages repose sur le workflow d'intégration continue de GitLab : gitlab-ci. Avec gitlab-ci, les jobs d'intégration continue sont assurés par les gitlab runners.
Pour plus de souplesse, on enregistre un gitlab runner de type Docker
en suivant la doc officielle.
Settings > CI / CD > Runners settings
#export REGISTRATION_TOKEN=my-registration-token
gitlab-runner register --non-interactive \
--name gl_runnner_for_$USER \
--url "https://plmlab.math.cnrs.fr" \
--executor docker \
--docker-image boileaum/jupyter \
--tag-list docker
--docker-image boileaum/jupyter
: le conteneur Docker chargé d'exécuter le script d'intégration continue sera basé sur l'image boileaum/jupyter
--tag-list docker
: pour solliciter ce runner, il faudra donc que le job CI porte le tag docker
On vérifie que le runner est actif
gitlab-runner list