--- - 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 --global 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