Outils pour utilisateurs

Outils du site


tech:notes_gitlab-ci_pipeline_-_api

Ceci est une ancienne révision du document !


Notes Gitlab-ci pipeline - API

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"

Voir https://docs.gitlab.com/api/rest/

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 }}"
            }
          }

Voir https://docs.gitlab.com/ci/triggers/

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

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki