Stage Release #2
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
--- | |
name: Stage Release | |
env: | |
LC_ALL: "C.UTF-8" # prevent ERROR: Ansible could not initialize the preferred locale: unsupported locale setting | |
on: | |
workflow_dispatch: | |
inputs: | |
version: | |
description: 'AWX version.' | |
required: true | |
default: '' | |
operator_version: | |
description: 'Operator version. Leave blank to skip staging awx-operator.' | |
default: '' | |
confirm: | |
description: 'Are you sure? Set this to yes.' | |
required: true | |
default: 'no' | |
jobs: | |
stage: | |
if: endsWith(github.repository, '/awx') | |
runs-on: ubuntu-latest | |
timeout-minutes: 90 | |
permissions: | |
packages: write | |
contents: write | |
steps: | |
- name: Verify inputs | |
run: | | |
set -e | |
if [[ ${{ github.event.inputs.confirm }} != "yes" ]]; then | |
>&2 echo "Confirm must be 'yes'" | |
exit 1 | |
fi | |
if [[ ${{ github.event.inputs.version }} == "" ]]; then | |
>&2 echo "Set version to continue." | |
exit 1 | |
fi | |
exit 0 | |
- name: Set lower case owner name | |
shell: bash | |
run: echo "OWNER_LC=${OWNER,,}" >> $GITHUB_ENV | |
env: | |
OWNER: '${{ github.repository_owner }}' | |
- name: Checkout awx | |
uses: actions/checkout@v3 | |
with: | |
path: awx | |
- name: Checkout awx-operator | |
uses: actions/checkout@v3 | |
with: | |
repository: ${{ github.repository_owner }}/awx-operator | |
path: awx-operator | |
- name: Checkout awx-logos | |
uses: actions/checkout@v3 | |
with: | |
repository: ansible/awx-logos | |
path: awx-logos | |
- name: Get python version from Makefile | |
working-directory: awx | |
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 playbook dependencies | |
run: | | |
python3 -m pip install docker | |
- name: Log into registry ghcr.io | |
uses: docker/login-action@343f7c4344506bcbf9b4de18042ae17996df046d # v3.0.0 | |
with: | |
registry: ghcr.io | |
username: ${{ github.actor }} | |
password: ${{ secrets.GITHUB_TOKEN }} | |
- name: Copy logos for inclusion in sdist for official build | |
working-directory: awx | |
run: | | |
cp ../awx-logos/awx-logos/* awx/ui/public/static/media/ | |
- name: Prebuild UI for awx image (to speed up build process) | |
working-directory: awx | |
run: | | |
sudo apt-get install gettext | |
make ui-release | |
make ui-next | |
- name: Build and stage AWX | |
working-directory: awx | |
env: | |
DOCKER_BUILDX_PUSH: true | |
HEADLESS: false | |
PLATFORMS: linux/amd64,linux/arm64 | |
DEV_DOCKER_TAG_BASE: ghcr.io/${{ github.repository }} | |
COMPOSE_TAG: ${{ github.event.inputs.version }} | |
VERSION: ${{ github.event.inputs.version }} | |
run: | | |
make awx-kube-buildx | |
- name: tag awx-ee:latest with version input | |
run: | | |
docker buildx imagetools create \ | |
quay.io/ansible/awx-ee:latest \ | |
--tag ghcr.io/${OWNER_LC}/awx-ee:${{ github.event.inputs.version }} | |
- name: Stage awx-operator image | |
working-directory: awx-operator | |
run: | | |
BUILD_ARGS="--build-arg DEFAULT_AWX_VERSION=${{ github.event.inputs.version}} \ | |
--build-arg OPERATOR_VERSION=${{ github.event.inputs.operator_version }}" \ | |
IMG=ghcr.io/${OWNER_LC}/awx-operator:${{ github.event.inputs.operator_version }} \ | |
make docker-buildx | |
- name: Run test deployment with awx-operator | |
working-directory: awx-operator | |
run: | | |
python3 -m pip install -r molecule/requirements.txt | |
ansible-galaxy collection install -r molecule/requirements.yml | |
sudo rm -f $(which kustomize) | |
make kustomize | |
KUSTOMIZE_PATH=$(readlink -f bin/kustomize) molecule test -s kind | |
env: | |
AWX_TEST_IMAGE: ${{ github.repository }} | |
AWX_TEST_VERSION: ${{ github.event.inputs.version }} | |
AWX_EE_TEST_IMAGE: ghcr.io/${OWNER_LC}/awx-ee:${{ github.event.inputs.version }} | |
- name: Create draft release for AWX | |
working-directory: awx | |
run: | | |
ansible-playbook -v tools/ansible/stage.yml \ | |
-e repo=${{ github.repository }} \ | |
-e awx_image=ghcr.io/${{ github.repository }} \ | |
-e version=${{ github.event.inputs.version }} \ | |
-e github_token=${{ secrets.GITHUB_TOKEN }} | |
- name: Create draft release for awx-operator | |
if: ${{ github.event.inputs.operator_version != '' }} | |
working-directory: awx | |
run: | | |
ansible-playbook tools/ansible/stage.yml \ | |
-e version=${{ github.event.inputs.operator_version }} \ | |
-e repo=${{ github.repository_owner }}/awx-operator \ | |
-e github_token=${{ secrets.AWX_OPERATOR_RELEASE_TOKEN }} |