Skip to content

Commit

Permalink
workflow: unify Libvirt e2e on_pull and daily
Browse files Browse the repository at this point in the history
Moved common code from e2e_on_pull to the new callable e2e_run_all
workflow. Adjusted daily-e2e-tests-libvirt and e2e_on_pull to pass the
right inputs.

Signed-off-by: Wainer dos Santos Moschetta <[email protected]>
  • Loading branch information
wainersm committed Dec 1, 2023
1 parent a79c73a commit f56d3af
Show file tree
Hide file tree
Showing 3 changed files with 188 additions and 265 deletions.
132 changes: 5 additions & 127 deletions .github/workflows/daily-e2e-tests-libvirt.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -12,135 +12,13 @@ on:
- cron: '15 4 * * *'
workflow_dispatch:

env:
# cloud-api-adaptor image registry
E2E_IMG_REGISTRY: ghcr.io/${{ github.repository_owner }}
# cloud-api-adaptor: image release tag
E2E_IMG_RELEASE_TAG: latest
# cloud-api-adaptor image dev tag
E2E_IMG_DEV_TAG: latest-dev

jobs:

# Build the podvm images.
#
podvm_builder:
uses: ./.github/workflows/podvm_builder.yaml
with:
registry: ghcr.io/${{ github.repository_owner }}
image_tag: latest
git_ref: refs/heads/main
secrets: inherit

podvm_binaries:
needs: [podvm_builder]
uses: ./.github/workflows/podvm_binaries.yaml
with:
registry: ghcr.io/${{ github.repository_owner }}
image_tag: latest
git_ref: refs/heads/main
secrets: inherit

podvm:
needs: [podvm_binaries]
uses: ./.github/workflows/podvm.yaml
e2e:
uses: ./.github/workflows/e2e_run_all.yaml
with:
registry: ghcr.io/${{ github.repository_owner }}
image_tag: latest
authorized: true
caa_image_tag: latest
git_ref: refs/heads/main
secrets: inherit

# Build and push the cloud-api-adaptor image
#
# By using a reusable `workflow_call` workflow we are hitting two
# GHA limitations here:
#
# - Cannot access the `env` context from the `with` so that it cannot
# reuse the E2E_IMG_* environment variables set at this workflow level.
# - Cannot call a reusable workflow from a job's step, so the we cannot
# merge the `image` and `prep_env` into a single one (unless we create
# another reusable workflow and, well, likely hit another limitation...).
#
# Reference: https://docs.github.com/en/actions/using-workflows/reusing-workflows#limitations
#
image:
uses: ./.github/workflows/caa_build_and_push.yaml
with:
podvm_image_tag: latest
registry: ghcr.io/${{ github.repository_owner }}
dev_tags: latest-dev
release_tags: latest
git_ref: main
secrets: inherit

# Edit the kustomize files under the install directory to reference the
# built cloud-api-adaptor images. The entire directory is archived so that
# downstream jobs can simply download and use the prepared installation
# files.
#
# IMPORTANT: If you are enabling e2e tests for a given provider,
# then please update the PROVIDERS list (space-separated names, e.g.,
# "aws libvirt").
prep_install:
needs: [image]
runs-on: ubuntu-latest
env:
PROVIDERS: "libvirt"
steps:
- name: Checkout Code
uses: actions/checkout@v3

- name: Install kustomize
run: |
command -v kustomize >/dev/null || \
curl -s "https://raw.githubusercontent.com/kubernetes-sigs/kustomize/master/hack/install_kustomize.sh" | \
bash -s /usr/local/bin
- name: Update kustomization configuration
run: |
providers=(${{ env.PROVIDERS }})
# If there aren't providers then something is wrong
[[ ${#providers[@]} -gt 0 ]] || exit 1
for provider in ${providers[@]}; do
img="${E2E_IMG_REGISTRY}/cloud-api-adaptor"
tag="${E2E_IMG_RELEASE_TAG}"
[[ "$provider" = "libvirt" ]] && tag="${E2E_IMG_DEV_TAG}"
echo "::group::Update ${provider}"
pushd "install/overlays/${provider}"
kustomize edit set image "cloud-api-adaptor=${img}:${tag}"
# Print for debugging
cat kustomization.yaml
echo "::endgroup::"
# Validate the file to avoid it silently testing with a wrong image
grep "newName: ${img}" kustomization.yaml
grep "newTag: ${tag}" kustomization.yaml
popd
done
- uses: actions/upload-artifact@v3
with:
name: install_directory
path: install/
retention-days: 7

# Run libvirt e2e tests if pull request labeled 'test_e2e_libvirt'
libvirt:
name: libvirt
needs: [podvm, image, prep_install]
strategy:
fail-fast: false
matrix:
os:
# FIXME: temporarily disable CentOS tests as the CentOS podvm builds
# are disabled due https://github.com/confidential-containers/cloud-api-adaptor/issues/1558
# - centos
- ubuntu
provider:
- generic
arch:
- amd64
uses: ./.github/workflows/e2e_libvirt.yaml
with:
podvm_image: ghcr.io/${{ github.repository_owner }}/podvm-${{ matrix.provider }}-${{ matrix.os }}-${{ matrix.arch }}:ci-pr${{ github.event.number }}
install_directory_artifact: install_directory
git_ref: refs/heads/main
142 changes: 4 additions & 138 deletions .github/workflows/e2e_on_pull.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -26,146 +26,12 @@ on:
branches:
- 'main'

env:
# cloud-api-adaptor image registry
E2E_IMG_REGISTRY: ghcr.io/${{ github.repository_owner }}
# cloud-api-adaptor: image release tag
E2E_IMG_RELEASE_TAG: ci-pr${{ github.event.number }}
# cloud-api-adaptor image dev tag
E2E_IMG_DEV_TAG: ci-pr${{ github.event.number }}-dev

jobs:
authorize:
runs-on: ubuntu-latest
if: ${{ contains(github.event.pull_request.labels.*.name, 'test_e2e_libvirt') }}
steps:
- run: "true"

# Build the podvm images.
#
podvm_builder:
needs: [authorize]
uses: ./.github/workflows/podvm_builder.yaml
with:
registry: ghcr.io/${{ github.repository_owner }}
image_tag: ci-pr${{ github.event.number }}
git_ref: ${{ github.event.pull_request.head.sha }}
secrets: inherit

podvm_binaries:
needs: [podvm_builder]
uses: ./.github/workflows/podvm_binaries.yaml
with:
registry: ghcr.io/${{ github.repository_owner }}
image_tag: ci-pr${{ github.event.number }}
git_ref: ${{ github.event.pull_request.head.sha }}
secrets: inherit

podvm:
needs: [podvm_binaries]
uses: ./.github/workflows/podvm.yaml
e2e:
uses: ./.github/workflows/e2e_run_all.yaml
with:
registry: ghcr.io/${{ github.repository_owner }}
image_tag: ci-pr${{ github.event.number }}
caa_image_tag: ci-pr${{ github.event.number }}
git_ref: ${{ github.event.pull_request.head.sha }}
secrets: inherit

# Build and push the cloud-api-adaptor image
#
# By using a reusable `workflow_call` workflow we are hitting two
# GHA limitations here:
#
# - Cannot access the `env` context from the `with` so that it cannot
# reuse the E2E_IMG_* environment variables set at this workflow level.
# - Cannot call a reusable workflow from a job's step, so the we cannot
# merge the `image` and `prep_env` into a single one (unless we create
# another reusable workflow and, well, likely hit another limitation...).
#
# Reference: https://docs.github.com/en/actions/using-workflows/reusing-workflows#limitations
#
image:
uses: ./.github/workflows/caa_build_and_push.yaml
needs: [authorize]
with:
podvm_image_tag: ci-pr${{ github.event.number }}
registry: ghcr.io/${{ github.repository_owner }}
dev_tags: ci-pr${{ github.event.number }}-dev
release_tags: ci-pr${{ github.event.number }}
git_ref: ${{ github.event.pull_request.head.sha }}
secrets: inherit

# Edit the kustomize files under the install directory to reference the
# built cloud-api-adaptor images. The entire directory is archived so that
# downstream jobs can simply download and use the prepared installation
# files.
#
# IMPORTANT: If you are enabling e2e tests for a given provider,
# then please update the PROVIDERS list (space-separated names, e.g.,
# "aws libvirt").
prep_install:
needs: [image]
runs-on: ubuntu-latest
env:
PROVIDERS: "libvirt"
steps:
- name: Checkout Code
uses: actions/checkout@v3
with:
fetch-depth: 0
ref: ${{ github.event.pull_request.head.sha }}

- name: Install kustomize
run: |
command -v kustomize >/dev/null || \
curl -s "https://raw.githubusercontent.com/kubernetes-sigs/kustomize/master/hack/install_kustomize.sh" | \
bash -s /usr/local/bin
- name: Update kustomization configuration
run: |
providers=(${{ env.PROVIDERS }})
# If there aren't providers then something is wrong
[[ ${#providers[@]} -gt 0 ]] || exit 1
for provider in ${providers[@]}; do
img="${E2E_IMG_REGISTRY}/cloud-api-adaptor"
tag="${E2E_IMG_RELEASE_TAG}"
[[ "$provider" = "libvirt" ]] && tag="${E2E_IMG_DEV_TAG}"
echo "::group::Update ${provider}"
pushd "install/overlays/${provider}"
kustomize edit set image "cloud-api-adaptor=${img}:${tag}"
# Print for debugging
cat kustomization.yaml
echo "::endgroup::"
# Validate the file to avoid it silently testing with a wrong image
grep "newName: ${img}" kustomization.yaml
grep "newTag: ${tag}" kustomization.yaml
popd
done
- uses: actions/upload-artifact@v3
with:
name: install_directory
path: install/
retention-days: 7

# Run libvirt e2e tests if pull request labeled 'test_e2e_libvirt'
libvirt:
name: libvirt
if: ${{ contains(github.event.pull_request.labels.*.name, 'test_e2e_libvirt') }}
needs: [podvm, image, prep_install]
strategy:
fail-fast: false
matrix:
os:
# FIXME: temporarily disable CentOS tests as the CentOS podvm builds
# are disabled due https://github.com/confidential-containers/cloud-api-adaptor/issues/1558
#- centos
- ubuntu
provider:
- generic
arch:
- amd64
uses: ./.github/workflows/e2e_libvirt.yaml
with:
podvm_image: ghcr.io/${{ github.repository_owner }}/podvm-${{ matrix.provider }}-${{ matrix.os }}-${{ matrix.arch }}:ci-pr${{ github.event.number }}
install_directory_artifact: install_directory
git_ref: ${{ github.event.pull_request.head.sha }}
Loading

0 comments on commit f56d3af

Please sign in to comment.