summaryrefslogtreecommitdiffstats
path: root/.github/workflows/promote.yml
blob: 444ed959469768197704e7127592ead8db5ad443 (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
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
---
name: Promote Release

env:
  LC_ALL: "C.UTF-8" # prevent ERROR: Ansible could not initialize the preferred locale: unsupported locale setting

on:
  release:
    types: [published]

permissions:
  contents: read # to fetch code (actions/checkout)

jobs:
  promote:
    if: endsWith(github.repository, '/awx') 
    runs-on: ubuntu-latest
    steps:
      - name: Checkout awx
        uses: actions/checkout@v3

      - name: Get python version from Makefile
        run: echo py_version=`make PYTHON_VERSION` >> $GITHUB_ENV

      - name: Install python ${{ env.py_version }}
        uses: actions/setup-python@v4
        with:
          python-version: ${{ env.py_version }}

      - name: Install dependencies
        run: |
          python${{ env.py_version }} -m pip install wheel twine setuptools-scm

      - name: Set official collection namespace
        run: echo collection_namespace=awx >> $GITHUB_ENV
        if: ${{ github.repository_owner == 'ansible' }}

      - name: Set unofficial collection namespace
        run: echo collection_namespace=${{ github.repository_owner }} >> $GITHUB_ENV
        if: ${{ github.repository_owner != 'ansible' }}

      - name: Build collection and publish to galaxy
        env:
          COLLECTION_NAMESPACE: ${{ env.collection_namespace }}
          COLLECTION_VERSION: ${{ github.event.release.tag_name }}
          COLLECTION_TEMPLATE_VERSION: true
        run: |
          make build_collection
          if [ "$(curl --head -sw '%{http_code}' https://galaxy.ansible.com/download/${{ env.collection_namespace }}-awx-${{ github.event.release.tag_name }}.tar.gz | tail -1)" == "302" ] ; then \
              echo "Galaxy release already done"; \
          else \
              ansible-galaxy collection publish \
                --token=${{ secrets.GALAXY_TOKEN }} \
                awx_collection_build/${{ env.collection_namespace }}-awx-${{ github.event.release.tag_name }}.tar.gz; \
          fi

      - name: Set official pypi info
        run: echo pypi_repo=pypi >> $GITHUB_ENV
        if: ${{ github.repository_owner == 'ansible' }}

      - name: Set unofficial pypi info
        run: echo pypi_repo=testpypi >> $GITHUB_ENV
        if: ${{ github.repository_owner != 'ansible' }}

      - name: Build awxkit and upload to pypi
        run: |
          git reset --hard
          cd awxkit && python3 setup.py bdist_wheel
          twine upload \
            -r ${{ env.pypi_repo }} \
            -u ${{ secrets.PYPI_USERNAME }} \
            -p ${{ secrets.PYPI_PASSWORD }} \
            dist/*

      - name: Log in to GHCR
        run: |
          echo ${{ secrets.GITHUB_TOKEN }} | docker login ghcr.io -u ${{ github.actor }} --password-stdin

      - name: Log in to Quay
        run: |
          echo ${{ secrets.QUAY_TOKEN }} | docker login quay.io -u ${{ secrets.QUAY_USER }} --password-stdin

      - name: Re-tag and promote awx image
        run: |
          docker pull ghcr.io/${{ github.repository }}:${{ github.event.release.tag_name }}
          docker tag ghcr.io/${{ github.repository }}:${{ github.event.release.tag_name }} quay.io/${{ github.repository }}:${{ github.event.release.tag_name }}
          docker tag ghcr.io/${{ github.repository }}:${{ github.event.release.tag_name }} quay.io/${{ github.repository }}:latest
          docker push quay.io/${{ github.repository }}:${{ github.event.release.tag_name }}
          docker push quay.io/${{ github.repository }}:latest
          docker pull ghcr.io/${{ github.repository_owner }}/awx-ee:${{ github.event.release.tag_name }}
          docker tag ghcr.io/${{ github.repository_owner }}/awx-ee:${{ github.event.release.tag_name }} quay.io/${{ github.repository_owner }}/awx-ee:${{ github.event.release.tag_name }}
          docker push quay.io/${{ github.repository_owner }}/awx-ee:${{ github.event.release.tag_name }}