summaryrefslogtreecommitdiffstats
path: root/.github/workflows/promote.yml
blob: 4b7f08b6e91dcf40d78ab613f2fd1ae00bf7347c (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
93
94
95
96
97
---
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
    timeout-minutes: 90
    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 -L --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 sdist 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 buildx imagetools create \
            ghcr.io/${{ github.repository }}:${{ github.event.release.tag_name }} \
            --tag quay.io/${{ github.repository }}:${{ github.event.release.tag_name }}
          docker buildx imagetools create \
            ghcr.io/${{ github.repository }}:${{ github.event.release.tag_name }} \
            --tag quay.io/${{ github.repository }}:latest

      - name: Re-tag and promote awx-ee image
        run: |
          docker buildx imagetools create \
            ghcr.io/${{ github.repository_owner }}/awx-ee:${{ github.event.release.tag_name }} \
            --tag quay.io/${{ github.repository_owner }}/awx-ee:${{ github.event.release.tag_name }}