web-dev-qa-db-fra.com

Comment puis-je pousser vers un dépôt depuis un pipeline CI gitlab?

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.

11
jamiet

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!

0
Matruskan