#!/usr/bin/env ansible-playbook --- - name: configure gitlab repository hosts: localhost become: no gather_facts: no vars: namespace: robertdebock vars_files: - vars/main.yml - vars/vault.yml tasks: - name: see if all veriables are set assert: that: - namespace is defined - role is defined quiet: yes - name: urlencode path set_fact: encoded_path: "{{ namespace + '%2F' + role }}" - name: place variable block: - name: see if the variable is set already uri: url: "https://gitlab.com/api/v4/projects/{{ encoded_path }}/variables" method: GET body_format: json headers: PRIVATE-TOKEN: "{{ gitlab_private_token }}" body: key: "GALAXY_API_KEY" register: check_variable failed_when: check_variable.json | length <= 0 rescue: - name: place variable uri: url: "https://gitlab.com/api/v4/projects/{{ encoded_path }}/variables" method: POST body_format: json status_code: - 201 headers: PRIVATE-TOKEN: "{{ gitlab_private_token }}" body: key: "GALAXY_API_KEY" value: "{{ galaxy_api_key }}" variable_type: env_var protects: true masked: true - name: list pipelines uri: url: "https://gitlab.com/api/v4/projects/{{ encoded_path }}/pipeline_schedules" method: GET headers: PRIVATE-TOKEN: "{{ gitlab_private_token }}" register: gitlab_schedules - name: delete all pipelines uri: url: "https://gitlab.com/api/v4/projects/{{ encoded_path }}/pipeline_schedules/{{ item.id }}" method: DELETE headers: PRIVATE-TOKEN: "{{ gitlab_private_token }}" status_code: - 204 loop: "{{ gitlab_schedules.json }}" loop_control: label: "{{ item.id }}" - name: create a new pipeline schedule uri: url: "https://gitlab.com/api/v4/projects/{{ encoded_path }}/pipeline_schedules" method: POST body_format: json status_code: - 201 headers: PRIVATE-TOKEN: "{{ gitlab_private_token }}" body: description: "Monthly test" ref: master cron: "{{ letter_minute_mapping[role[15]] | default('13') }} {{ letter_hour_mapping[role[13]] }} {{ letter_day_mapping[role[13]] }} * *" cron_timezone: Amsterdam