tech:notes_gitlab-ci_pipeline_-_api
Ceci est une ancienne révision du document !
Table des matières
Notes Gitlab-ci pipeline - API
Voir :
Exemple 1 - avec Access Token ou Personnal Access tokens
Avec Access Token (associé au projet)
- Aller dans le projet - puis : Settings / Access tokens
- Attention : par défaut les Access Tokens ont une date d'expiration
Avec Personnal Access tokens (associé au compte utilisateur)
- Profile / Edit profile / Access Token / Personal Access Tokens
- Attention : par défaut les Personal Access Tokens ont une date d'expiration
Launch pipeline with API call - with Private / Personal access tokens
curl --request POST \ --header "PRIVATE-TOKEN: saltxx-8888888888" \ --header "Content-Type: application/json" \ --data '{ "ref": "master", "variables": [ {"key": "VAR1", "value": "plop"}, {"key": "VAR2", "value": "plop"}, {"key": "VAR3", "value": "plop"}, {"key": "VAR4", "value": ""} ] }' \ --url "${CI_API_V4_URL}/projects/100/pipeline"
Notes
CI_API_V4_URL est une variable magique dont la valeur est de la forme : http://gitlab.acme.local/api/v4
Dans notre cas la variable ref correspond au nom de la branche
Exemple 2 - Avec Trigger Tokens
Voir :
Voir aussi :
Aller dans le projet, puis Settings/ CI/CD / Pipeline trigger tokens
Trigger pipeline with the API / Pass CI/CD variables in the API call
curl --request POST \ --form token=glptt-99999999999999 \ --form ref=master \ --form "variables[VAR1]=plop" \ --form "variables[VAR2]=plop" \ --form "variables[VAR3]=plop" \ --form "variables[VAR4]=plop" \ "${CI_API_V4_URL}/projects/100/trigger/pipeline"
Avec Ansible
.gitlab-ci.yml
launch: tags: # - gitlab-runner-sh-001 - gitlab-runner-docker-001 image: registry.acme.local/repository/local-docker/ansible-builder:0.0.4 stage: build script: ansible-playbook play-launch-ci.yml -e url="${CI_API_V4_URL}" -e token="${TRIGGER_TOKEN}"
play-launch-ci.yml
#! /usr/bin/env ansible-playbook --- - name: Launch CI gather_facts: false hosts: localhost vars: branch: "{{ lookup('env', 'BRANCH') }}" line: "{{ lookup('env', 'LINE') }}" kind: "{{ lookup('env', 'KIND') }}" tasks: - name: Assert check environment vars are correctly defined ansible.builtin.assert: that: - url is defined and url != '' - token is defined and token != '' - branch is defined and branch != '' - line is defined and line != '' - kind is defined and kind != '' msg: "Env var must be defined" - name: Call API # no_log: true ansible.builtin.uri: url: "{{ url }}/projects/100/trigger/pipeline" # validate_certs: false method: POST status_code: 201 body_format: json headers: Content-Type: "application/json" body: | { "ref": "main", "token": "{{ token }}", "variables": { "BRANCH": "{{ branch }}", "KIND": "{{ kind }}", "LINE": "{{ line }}" } }
Autres
000-colo-switch:prod: stage: deploy variables: PROJECT: "projectname" rules: # whether to include the job in the pipeline - if: $CI_PIPELINE_SOURCE == "trigger" when: always - when: never
Source: https://forum.gitlab.com/t/triggering-a-specific-job-of-the-pipeline-via-api/42397/2
tech/notes_gitlab-ci_pipeline_-_api.1784186233.txt.gz · Dernière modification : de Jean-Baptiste
