Dans mon pipeline CI, je génère un artefact public/graph.png
qui visualise un aspect de mon code. Dans une étape ultérieure, je veux valider cela dans le référentiel à partir du pipeline CI. Voici la partie pertinente de .gitlab-ci.yml
:
commit-graph:
stage: pages
script:
- git config user.email "[email protected]"
- git config user.name "CI Pipeline"
- cd /group/project
- mv public/graph.png .
- git add graph.png
- git commit -m "committing graph.png [ci skip]"
- echo $CI_COMMIT_REF_NAME
- git Push Origin HEAD:$CI_COMMIT_REF_NAME
Lorsque le pipeline s'exécute dans gitlab, il échoue avec:
$ git config user.email "[email protected]"
$ git config user.name "CI Pipeline"
$ cd/groupe/projet
$ mv public/graph.png.
$ git add graph.png
$ git commit -m "committing graph.png [ci skip]"
[détaché HEAD 22a50d1] commit graph.png [ci skip]
1 fichier modifié, 0 insertions (+), 0 suppressions (-)
mode de création 100644 graph.png
$ echo $ CI_COMMIT_REF_NAME
jamiet/ma-branche
$ git Push Origin HEAD: $ CI_COMMIT_REF_NAME
fatal: impossible d'accéder à ' https: // gitlab-ci-token: [email protected]/group/project/project.git/ ': la vérification du certificat du serveur a échoué. Fichier CA: /etc/ssl/certs/ca-certificates.crt Fichier CRL: aucun
Je ne sais pas ce que je fais mal et je ne connais pas suffisamment SSL pour comprendre cette erreur. Quelqu'un peut-il conseiller?
Au fait, nous hébergeons gitlab nous-mêmes.
Je peux valider depuis Gitlab-CI avec un utilisateur sélectionné avec un changement mineur basé sur la réponse de tsr https://stackoverflow.com/a/57800614/5269825 :
# set remote URL to https://oauth2:<AccessToken>@server.com/project.git
CI_Push_REPO=`echo "$CI_REPOSITORY_URL $ACCESS_TOKEN_PARAM" | sed 's/^.*\(@.*\)\s\(.*\)/https:\/\/oauth2:\2\1/g'`
git config http.sslverify false
git remote set-url --Push Origin "${CI_Push_REPO}"
git config user.name "Token Owner"
git config user.email "[email protected]"
# runner runs on a detached HEAD, create a temporary local branch for editing
git checkout -b ci_processing
# make your changes
# Push changes
# always return true so that the build does not fail if there are no changes
git Push Origin ci_processing:${CI_BUILD_REF_NAME} || true
Le ACCESS_TOKEN_PARAM
doit être configuré dans la configuration des variables CI/CD du projet.
L'idée d'utiliser Oauth2 et le jeton d'accès est tirée de https://stackoverflow.com/a/52074198/5269825 et https://stackoverflow.com/a/52154378/5269825 .
De plus, pousser les changements peut déclencher un nouveau pipeline!