aboutsummaryrefslogtreecommitdiffstats
path: root/roles/trigger_myself/tasks/main.yml
blob: bbea9743b5dc19dc2583c30b95978494c9501f98 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
---
- name: check 'step' is set
  fail:
    msg: 'Step must be defined ! (use --extra-vars "step=test1")'
  when: step is not defined

- name: get default step parameters
  set_fact:
    config: >-
      {{ gitlab.git_projects[
           hostvars[inventory_hostname].scenario_steps[step].project] |
         combine(hostvars[inventory_hostname].scenario_steps[step]) }}

- name: merge step parameters
  set_fact:
    config: >-
      {{ config| combine(
         {'parameters': config.parameters|
          combine(config.extra_parameters)}) }}
  when: config.extra_parameters is defined


##
# Prepare base of variables to send
##
- name: prepare variables to sent
  set_fact:
    params:
      {
        'token': "{{ config.trigger_token}}",
        'ref': "{{ config.branch }}",
        'variables[source_job_name]': "{{ step }}",
        'variables[triggered_from]': "{{ lookup('env','CI_JOB_NAME') }}",
        'variables[INPOD]': "{{ inventory_hostname }}",
        'variables[jumphost]': "{{ jumphost }}",
      }

- name: Add step parameters
  set_fact:
    params: "{{ params|combine({key: value}) }}"
  vars:
    key: "variables[{{ item.key }}]"
    value: "{{ item.value }}"
  with_dict: "{{ config.parameters }}"
  when: config.parameters is defined


##
# Trigger the pipeline
##
- name: "Trigger a new pipeline for step {{ step }}"
  uri:
    url: >-
      {{ gitlab.api_url}}/projects/{{ lookup( 'env', 'CI_PROJECT_ID')
      }}/trigger/pipeline
    method: POST
    status_code: 201
    body_format: raw
    body: "{{params| urlencode}}"
    headers:
      Content-Type: "application/x-www-form-urlencoded"
  register: trigger_out

- name: Echo running pipeline link
  debug:
    msg: "{{ msg.split('\n') }}"
  vars:
    url: >-
      {{ lookup('env','CI_PROJECT_URL') }}/pipelines/{{
      trigger_out.json.id }}"
    msg: |
      ******************************************************************
      * Pipeline triggered for step '{{ step }}'
      * {{ url }}
      ******************************************************************