mirror of
https://github.com/ansible/awx.git
synced 2026-01-09 23:12:08 -03:30
Publish amd64 and arm64 awx image on release (#15053)
* Stage multi-arch awx image - change CI to use `make awx-kube-build` instead of build playbook - update staging CI to build and push multiarch awx image - update doc to use `make awx-kube-build` to build awx image - remove build playbook (no longer used)
This commit is contained in:
parent
468949b899
commit
86204cf23b
12
.github/workflows/ci.yml
vendored
12
.github/workflows/ci.yml
vendored
@ -94,11 +94,11 @@ jobs:
|
|||||||
- name: Build AWX image
|
- name: Build AWX image
|
||||||
working-directory: awx
|
working-directory: awx
|
||||||
run: |
|
run: |
|
||||||
ansible-playbook -v tools/ansible/build.yml \
|
VERSION=`make version-for-buildyml` make awx-kube-build
|
||||||
-e headless=yes \
|
env:
|
||||||
-e awx_image=awx \
|
COMPOSE_TAG: ci
|
||||||
-e awx_image_tag=ci \
|
DEV_DOCKER_TAG_BASE: local
|
||||||
-e ansible_python_interpreter=$(which python3)
|
HEADLESS: yes
|
||||||
|
|
||||||
- name: Run test deployment with awx-operator
|
- name: Run test deployment with awx-operator
|
||||||
working-directory: awx-operator
|
working-directory: awx-operator
|
||||||
@ -109,7 +109,7 @@ jobs:
|
|||||||
make kustomize
|
make kustomize
|
||||||
KUSTOMIZE_PATH=$(readlink -f bin/kustomize) molecule -v test -s kind -- --skip-tags=replicas
|
KUSTOMIZE_PATH=$(readlink -f bin/kustomize) molecule -v test -s kind -- --skip-tags=replicas
|
||||||
env:
|
env:
|
||||||
AWX_TEST_IMAGE: awx
|
AWX_TEST_IMAGE: local/awx
|
||||||
AWX_TEST_VERSION: ci
|
AWX_TEST_VERSION: ci
|
||||||
|
|
||||||
collection-sanity:
|
collection-sanity:
|
||||||
|
|||||||
92
.github/workflows/stage.yml
vendored
92
.github/workflows/stage.yml
vendored
@ -49,13 +49,11 @@ jobs:
|
|||||||
with:
|
with:
|
||||||
path: awx
|
path: awx
|
||||||
|
|
||||||
- name: Get python version from Makefile
|
- name: Checkout awx-operator
|
||||||
run: echo py_version=`make PYTHON_VERSION` >> $GITHUB_ENV
|
uses: actions/checkout@v3
|
||||||
|
|
||||||
- name: Install python ${{ env.py_version }}
|
|
||||||
uses: actions/setup-python@v4
|
|
||||||
with:
|
with:
|
||||||
python-version: ${{ env.py_version }}
|
repository: ${{ github.repository_owner }}/awx-operator
|
||||||
|
path: awx-operator
|
||||||
|
|
||||||
- name: Checkout awx-logos
|
- name: Checkout awx-logos
|
||||||
uses: actions/checkout@v3
|
uses: actions/checkout@v3
|
||||||
@ -63,57 +61,85 @@ jobs:
|
|||||||
repository: ansible/awx-logos
|
repository: ansible/awx-logos
|
||||||
path: awx-logos
|
path: awx-logos
|
||||||
|
|
||||||
- name: Checkout awx-operator
|
- name: Get python version from Makefile
|
||||||
uses: actions/checkout@v3
|
working-directory: awx
|
||||||
|
run: echo py_version=`make PYTHON_VERSION` >> $GITHUB_ENV
|
||||||
|
|
||||||
|
- name: Install python ${{ env.py_version }}
|
||||||
|
uses: actions/setup-python@v4
|
||||||
with:
|
with:
|
||||||
repository: ${{ github.repository_owner }}/awx-operator
|
python-version: ${{ env.py_version }}
|
||||||
path: awx-operator
|
|
||||||
|
|
||||||
- name: Install playbook dependencies
|
- name: Install playbook dependencies
|
||||||
run: |
|
run: |
|
||||||
python3 -m pip install docker
|
python3 -m pip install docker
|
||||||
|
|
||||||
- name: Build and stage AWX
|
|
||||||
working-directory: awx
|
|
||||||
run: |
|
|
||||||
ansible-playbook -v tools/ansible/build.yml \
|
|
||||||
-e registry=ghcr.io \
|
|
||||||
-e registry_username=${{ github.actor }} \
|
|
||||||
-e registry_password=${{ secrets.GITHUB_TOKEN }} \
|
|
||||||
-e awx_image=${{ github.repository }} \
|
|
||||||
-e awx_version=${{ github.event.inputs.version }} \
|
|
||||||
-e ansible_python_interpreter=$(which python3) \
|
|
||||||
-e push=yes \
|
|
||||||
-e awx_official=yes
|
|
||||||
|
|
||||||
- name: Log into registry ghcr.io
|
- name: Log into registry ghcr.io
|
||||||
uses: docker/login-action@343f7c4344506bcbf9b4de18042ae17996df046d # v3.0.0
|
uses: docker/login-action@v3
|
||||||
with:
|
with:
|
||||||
registry: ghcr.io
|
registry: ghcr.io
|
||||||
username: ${{ github.actor }}
|
username: ${{ github.actor }}
|
||||||
password: ${{ secrets.GITHUB_TOKEN }}
|
password: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
|
||||||
- name: Log into registry quay.io
|
- name: Copy logos for inclusion in sdist for official build
|
||||||
uses: docker/login-action@343f7c4344506bcbf9b4de18042ae17996df046d # v3.0.0
|
working-directory: awx
|
||||||
|
run: |
|
||||||
|
cp ../awx-logos/awx/ui/client/assets/* awx/ui/public/static/media/
|
||||||
|
|
||||||
|
- name: Setup node and npm
|
||||||
|
uses: actions/setup-node@v2
|
||||||
with:
|
with:
|
||||||
registry: quay.io
|
node-version: '16.13.1'
|
||||||
username: ${{ secrets.QUAY_USER }}
|
|
||||||
password: ${{ secrets.QUAY_TOKEN }}
|
- 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: Set build env variables
|
||||||
|
run: |
|
||||||
|
echo "DEV_DOCKER_TAG_BASE=ghcr.io/${OWNER,,}" >> $GITHUB_ENV
|
||||||
|
echo "COMPOSE_TAG=${{ github.event.inputs.version }}" >> $GITHUB_ENV
|
||||||
|
echo "VERSION=${{ github.event.inputs.version }}" >> $GITHUB_ENV
|
||||||
|
echo "AWX_TEST_VERSION=${{ github.event.inputs.version }}" >> $GITHUB_ENV
|
||||||
|
echo "AWX_TEST_IMAGE=ghcr.io/${OWNER,,}/awx" >> $GITHUB_ENV
|
||||||
|
echo "AWX_EE_TEST_IMAGE=ghcr.io/${OWNER,,}/awx-ee:${{ github.event.inputs.version }}" >> $GITHUB_ENV
|
||||||
|
echo "AWX_OPERATOR_TEST_IMAGE=ghcr.io/${OWNER,,}/awx-operator:${{ github.event.inputs.operator_version }}" >> $GITHUB_ENV
|
||||||
|
env:
|
||||||
|
OWNER: ${{ github.repository_owner }}
|
||||||
|
|
||||||
|
- name: Build and stage AWX
|
||||||
|
working-directory: awx
|
||||||
|
env:
|
||||||
|
DOCKER_BUILDX_PUSH: true
|
||||||
|
HEADLESS: false
|
||||||
|
PLATFORMS: linux/amd64,linux/arm64
|
||||||
|
run: |
|
||||||
|
make awx-kube-buildx
|
||||||
|
|
||||||
- name: tag awx-ee:latest with version input
|
- name: tag awx-ee:latest with version input
|
||||||
run: |
|
run: |
|
||||||
docker buildx imagetools create \
|
docker buildx imagetools create \
|
||||||
quay.io/ansible/awx-ee:latest \
|
quay.io/ansible/awx-ee:latest \
|
||||||
--tag ghcr.io/${{ github.repository_owner }}/awx-ee:${{ github.event.inputs.version }}
|
--tag ${AWX_EE_TEST_IMAGE}
|
||||||
|
|
||||||
- name: Stage awx-operator image
|
- name: Stage awx-operator image
|
||||||
working-directory: awx-operator
|
working-directory: awx-operator
|
||||||
run: |
|
run: |
|
||||||
BUILD_ARGS="--build-arg DEFAULT_AWX_VERSION=${{ github.event.inputs.version}} \
|
BUILD_ARGS="--build-arg DEFAULT_AWX_VERSION=${{ github.event.inputs.version}} \
|
||||||
--build-arg OPERATOR_VERSION=${{ github.event.inputs.operator_version }}" \
|
--build-arg OPERATOR_VERSION=${{ github.event.inputs.operator_version }}" \
|
||||||
IMG=ghcr.io/${{ github.repository_owner }}/awx-operator:${{ github.event.inputs.operator_version }} \
|
IMG=${AWX_OPERATOR_TEST_IMAGE} \
|
||||||
make docker-buildx
|
make docker-buildx
|
||||||
|
|
||||||
|
- name: Pulling images for test deployment with awx-operator
|
||||||
|
# awx operator molecue test expect to kind load image and buildx exports image to registry and not local
|
||||||
|
run: |
|
||||||
|
docker pull ${AWX_OPERATOR_TEST_IMAGE}
|
||||||
|
docker pull ${AWX_EE_TEST_IMAGE}
|
||||||
|
docker pull ${AWX_TEST_IMAGE}:${AWX_TEST_VERSION}
|
||||||
|
|
||||||
- name: Run test deployment with awx-operator
|
- name: Run test deployment with awx-operator
|
||||||
working-directory: awx-operator
|
working-directory: awx-operator
|
||||||
run: |
|
run: |
|
||||||
@ -122,10 +148,6 @@ jobs:
|
|||||||
sudo rm -f $(which kustomize)
|
sudo rm -f $(which kustomize)
|
||||||
make kustomize
|
make kustomize
|
||||||
KUSTOMIZE_PATH=$(readlink -f bin/kustomize) molecule test -s kind
|
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/${{ github.repository_owner }}/awx-ee:${{ github.event.inputs.version }}
|
|
||||||
|
|
||||||
- name: Create draft release for AWX
|
- name: Create draft release for AWX
|
||||||
working-directory: awx
|
working-directory: awx
|
||||||
|
|||||||
@ -2,12 +2,10 @@
|
|||||||
|
|
||||||
## Build & Push Image
|
## Build & Push Image
|
||||||
|
|
||||||
To build a custom awx image to use with the awx-operator, use the `build_image` role:
|
To build a custom awx image to use with the awx-operator:
|
||||||
|
|
||||||
```
|
```
|
||||||
$ ansible-playbook tools/ansible/build.yml \
|
make awx-kube-build
|
||||||
-e awx_image=registry.example.com/ansible/awx \
|
|
||||||
-e awx_image_tag=test -v
|
|
||||||
```
|
```
|
||||||
|
|
||||||
> Note: The development image (`make docker-compose-build`) will not work with the awx-operator, the UI is not built in that image, among other things (see Dockerfile.j2 for more info).
|
> Note: The development image (`make docker-compose-build`) will not work with the awx-operator, the UI is not built in that image, among other things (see Dockerfile.j2 for more info).
|
||||||
|
|||||||
@ -1,25 +0,0 @@
|
|||||||
---
|
|
||||||
- name: Build AWX Docker Images
|
|
||||||
hosts: localhost
|
|
||||||
gather_facts: true
|
|
||||||
tasks:
|
|
||||||
- name: Get version from SCM if not explicitly provided
|
|
||||||
command: make version-for-buildyml
|
|
||||||
args:
|
|
||||||
chdir: '../../'
|
|
||||||
register: scm_version
|
|
||||||
failed_when: not scm_version.stdout
|
|
||||||
when: awx_version is not defined
|
|
||||||
|
|
||||||
- name: Set awx_version
|
|
||||||
set_fact:
|
|
||||||
awx_version: "{{ scm_version.stdout }}"
|
|
||||||
when: awx_version is not defined
|
|
||||||
|
|
||||||
- include_role:
|
|
||||||
name: dockerfile
|
|
||||||
- include_role:
|
|
||||||
name: image_build
|
|
||||||
- include_role:
|
|
||||||
name: image_push
|
|
||||||
when: push | default(false) | bool
|
|
||||||
@ -1,5 +0,0 @@
|
|||||||
---
|
|
||||||
awx_image: ansible/awx
|
|
||||||
awx_image_tag: "{{ awx_version }}"
|
|
||||||
dockerfile_name: 'Dockerfile'
|
|
||||||
headless: no
|
|
||||||
@ -1,30 +0,0 @@
|
|||||||
---
|
|
||||||
- name: Verify awx-logos directory exists for official install
|
|
||||||
stat:
|
|
||||||
path: "../../../awx-logos"
|
|
||||||
register: logosdir
|
|
||||||
failed_when: logosdir.stat.isdir is not defined or not logosdir.stat.isdir
|
|
||||||
when: awx_official|default(false)|bool
|
|
||||||
|
|
||||||
- name: Copy logos for inclusion in sdist
|
|
||||||
copy:
|
|
||||||
src: "../../../awx-logos/awx/ui/client/assets/"
|
|
||||||
dest: "../../awx/ui/public/static/media/"
|
|
||||||
when: awx_official|default(false)|bool
|
|
||||||
|
|
||||||
- set_fact:
|
|
||||||
command_to_run: |
|
|
||||||
docker build -t {{ awx_image }}:{{ awx_image_tag }} \
|
|
||||||
-f {{ dockerfile_name }} \
|
|
||||||
--build-arg VERSION={{ awx_version }} \
|
|
||||||
--build-arg SETUPTOOLS_SCM_PRETEND_VERSION={{ awx_version }} \
|
|
||||||
--build-arg HEADLESS={{ headless }} \
|
|
||||||
.
|
|
||||||
|
|
||||||
# Calling Docker directly because docker-py doesnt support BuildKit
|
|
||||||
- name: Build AWX image
|
|
||||||
shell: "{{ command_to_run }}"
|
|
||||||
environment:
|
|
||||||
DOCKER_BUILDKIT: 1
|
|
||||||
args:
|
|
||||||
chdir: "{{ playbook_dir }}/../../"
|
|
||||||
@ -1,4 +0,0 @@
|
|||||||
---
|
|
||||||
registry: quay.io
|
|
||||||
awx_image: ansible/awx
|
|
||||||
awx_image_tag: "{{ awx_version }}"
|
|
||||||
@ -1,22 +0,0 @@
|
|||||||
---
|
|
||||||
- name: Authenticate with Docker registry if registry password given
|
|
||||||
docker_login:
|
|
||||||
registry: "{{ registry }}"
|
|
||||||
username: "{{ registry_username }}"
|
|
||||||
password: "{{ registry_password }}"
|
|
||||||
reauthorize: true
|
|
||||||
when:
|
|
||||||
- registry is defined
|
|
||||||
- registry_username is defined
|
|
||||||
- registry_password is defined
|
|
||||||
|
|
||||||
- name: Tag and Push Container Images
|
|
||||||
docker_image:
|
|
||||||
name: "{{ awx_image }}:{{ awx_image_tag }}"
|
|
||||||
repository: "{{ registry }}/{{ awx_image }}:{{ item }}"
|
|
||||||
force_tag: yes
|
|
||||||
push: true
|
|
||||||
source: local
|
|
||||||
with_items:
|
|
||||||
- "latest"
|
|
||||||
- "{{ awx_image_tag }}"
|
|
||||||
Loading…
x
Reference in New Issue
Block a user