mirror of
https://github.com/ansible/awx-operator.git
synced 2026-03-26 21:33:14 +00:00
123 lines
4.0 KiB
YAML
123 lines
4.0 KiB
YAML
---
|
|
- hosts: localhost
|
|
vars:
|
|
chart_repo: awx-operator
|
|
environment:
|
|
CHART_OWNER: "{{ chart_owner }}"
|
|
tasks:
|
|
- name: Look up release
|
|
uri:
|
|
url: "https://api.github.com/repos/{{ chart_owner }}/{{ chart_repo }}/releases/tags/{{ tag }}"
|
|
register: release
|
|
ignore_errors: yes
|
|
|
|
- fail:
|
|
msg: |
|
|
Release must exist before running this playbook
|
|
when: release is not success
|
|
|
|
- name: Set helm filename and commit message
|
|
set_fact:
|
|
asset_already_attached: False
|
|
helm_file_name: "awx-operator-{{ tag }}.tgz"
|
|
commit_message: "Updated index.yaml for release {{ release.json.tag_name }}"
|
|
|
|
- name: See if file is already attached
|
|
set_fact:
|
|
asset_already_attached: True
|
|
loop: "{{ release.json.get('assets', []) }}"
|
|
loop_control:
|
|
label: "{{ item.name }}"
|
|
when: item.name == helm_file_name
|
|
|
|
- when: not asset_already_attached
|
|
block:
|
|
- name: Build and package helm chart
|
|
command: |
|
|
make helm-package
|
|
environment:
|
|
VERSION: "{{ tag }}"
|
|
IMAGE_TAG_BASE: "{{ operator_image }}"
|
|
args:
|
|
chdir: "{{ playbook_dir }}/../"
|
|
|
|
# Move to chart releaser after https://github.com/helm/chart-releaser/issues/122 exists
|
|
- name: Upload helm chart
|
|
uri:
|
|
url: "https://uploads.github.com/repos/{{ chart_owner }}/{{ chart_repo }}/releases/{{ release.json.id }}/assets?name={{ helm_file_name }}"
|
|
src: "{{ playbook_dir }}/../.cr-release-packages/{{ tag }}/awx-operator-{{ tag }}.tgz"
|
|
headers:
|
|
Authorization: "token {{ gh_token }}"
|
|
Content-Type: "application/octet-stream"
|
|
status_code:
|
|
- 200
|
|
- 201
|
|
register: asset_upload
|
|
changed_when: asset_upload.json.state == "uploaded"
|
|
|
|
- name: Ensure gh-pages exists
|
|
file:
|
|
state: directory
|
|
path: "{{ playbook_dir }}/../gh-pages"
|
|
|
|
- name: Check if we have published the release
|
|
command:
|
|
cmd: "git log --grep='{{ commit_message }}'"
|
|
chdir: "{{ playbook_dir }}/../gh-pages"
|
|
register: commits_for_release
|
|
|
|
- when: commits_for_release.stdout == ''
|
|
block:
|
|
- name: Make a temp dir
|
|
tempfile:
|
|
state: directory
|
|
register: temp_dir
|
|
|
|
- name: Clone the gh-pages branch from {{ chart_owner }}
|
|
git:
|
|
repo: "{{ ((repo_type | default('http')) == 'ssh') | ternary(ssh_repo, http_repo) }}"
|
|
dest: "{{ temp_dir.path }}"
|
|
single_branch: yes
|
|
version: gh-pages
|
|
vars:
|
|
http_repo: "https://github.com/{{ chart_owner }}/{{ chart_repo }}"
|
|
ssh_repo: "git@github.com:{{ chart_owner }}/{{ chart_repo }}.git"
|
|
|
|
- name: Publish helm index
|
|
ansible.builtin.command:
|
|
cmd: make helm-index
|
|
environment:
|
|
CHART_OWNER: "{{ chart_owner }}"
|
|
CR_TOKEN: "{{ gh_token }}"
|
|
CHART_DIR: "{{ temp_dir.path }}"
|
|
args:
|
|
chdir: "{{ playbook_dir }}/.."
|
|
|
|
- name: Set url base swap in gitconfig
|
|
command:
|
|
cmd: "git config --local url.https://{{ gh_user }}:{{ gh_token }}@github.com/.insteadOf https://github.com/"
|
|
args:
|
|
chdir: "{{ temp_dir.path }}/"
|
|
no_log: true
|
|
|
|
- name: Stage and Push commit to gh-pages branch
|
|
command:
|
|
cmd: "{{ item }}"
|
|
loop:
|
|
- git add index.yaml
|
|
- git commit -m "{{ commit_message }}"
|
|
- git push
|
|
args:
|
|
chdir: "{{ temp_dir.path }}/"
|
|
environment:
|
|
GIT_AUTHOR_NAME: "{{ gh_user }}"
|
|
GIT_AUTHOR_EMAIL: "{{ gh_user }}@users.noreply.github.com"
|
|
GIT_COMMITTER_NAME: "{{ gh_user }}"
|
|
GIT_COMMITTER_EMAIL: "{{ gh_user }}@users.noreply.github.com"
|
|
|
|
always:
|
|
- name: Remove temp dir
|
|
file:
|
|
path: "{{ temp_dir.path }}"
|
|
state: absent
|