Skip to content

feat: speed up cross-platform workflows (CodeQL, golangci-lint) #551

feat: speed up cross-platform workflows (CodeQL, golangci-lint)

feat: speed up cross-platform workflows (CodeQL, golangci-lint) #551

Workflow file for this run

name: Build images and run E2E tests.
on:
pull_request:
branches: [main]
merge_group:
types: [checks_requested]
workflow_dispatch:
permissions:
contents: read
jobs:
retina-images:
name: Build Agent Images
runs-on: ubuntu-latest
strategy:
matrix:
platform: ["linux"]
arch: ["amd64", "arm64"]
steps:
- name: Checkout code
uses: actions/checkout@v4
- uses: actions/setup-go@v4
with:
go-version: ">=1.21.0"
- run: go version
- name: Set up QEMU
uses: docker/setup-qemu-action@v3
- name: Az CLI login
uses: azure/login@v1
if: ${{ github.event_name == 'merge_group' }}
with:
creds: ${{ secrets.AZURE_CREDENTIALS }}
- name: Build Images
shell: bash
run: |
set -euo pipefail
echo "TAG=$(make version)" >> $GITHUB_ENV
if [ "$IS_MERGE_GROUP" == "true" ]; then
az acr login -n ${{ vars.ACR_NAME }}
make retina-image \
IMAGE_NAMESPACE=${{ github.repository }} \
PLATFORM=${{ matrix.platform }}/${{ matrix.arch }} \
IMAGE_REGISTRY=${{ vars.ACR_NAME }} \
BUILDX_ACTION=--push
else
make retina-image \
IMAGE_NAMESPACE=${{ github.repository }} \
PLATFORM=${{ matrix.platform }}/${{ matrix.arch }}
fi
env:
IS_MERGE_GROUP: ${{ github.event_name == 'merge_group' }}
retina-win-images:
name: Build Agent Windows Images
runs-on: ubuntu-latest
strategy:
matrix:
platform: ["windows"]
arch: ["amd64"]
steps:
- name: Checkout code
uses: actions/checkout@v4
- uses: actions/setup-go@v4
with:
go-version: ">=1.21.0"
- run: go version
- name: Set up QEMU
uses: docker/setup-qemu-action@v3
- name: Az CLI login
uses: azure/login@v1
if: ${{ github.event_name == 'merge_group' }}
with:
creds: ${{ secrets.AZURE_CREDENTIALS }}
- name: Build Images
shell: bash
run: |
set -euo pipefail
echo "TAG=$(make version)" >> $GITHUB_ENV
if [ "$IS_MERGE_GROUP" == "true" ]; then
az acr login -n ${{ vars.ACR_NAME }}
make retina-image-win \
IMAGE_NAMESPACE=${{ github.repository }} \
PLATFORM=${{ matrix.platform }}/${{ matrix.arch }} \
IMAGE_REGISTRY=${{ vars.ACR_NAME }} \
BUILDX_ACTION=--push
else
make retina-image-win \
IMAGE_NAMESPACE=${{ github.repository }} \
PLATFORM=${{ matrix.platform }}/${{ matrix.arch }}
fi
env:
IS_MERGE_GROUP: ${{ github.event_name == 'merge_group' }}
operator-images:
name: Build Operator Images
runs-on: ubuntu-latest
strategy:
matrix:
platform: ["linux"]
arch: ["amd64"]
steps:
- name: Checkout code
uses: actions/checkout@v4
- uses: actions/setup-go@v4
with:
go-version: ">=1.21.0"
- run: go version
- name: Set up QEMU
uses: docker/setup-qemu-action@v3
- name: Az CLI login
uses: azure/login@v1
if: ${{ github.event_name == 'merge_group' }}
with:
creds: ${{ secrets.AZURE_CREDENTIALS }}
- name: Build Images
shell: bash
run: |
set -euo pipefail
echo "TAG=$(make version)" >> $GITHUB_ENV
if [ "$IS_MERGE_GROUP" == "true" ]; then
az acr login -n ${{ vars.ACR_NAME }}
make retina-operator-image \
IMAGE_NAMESPACE=${{ github.repository }} \
PLATFORM=${{ matrix.platform }}/${{ matrix.arch }} \
IMAGE_REGISTRY=${{ vars.ACR_NAME }} \
BUILDX_ACTION=--push
else
make retina-operator-image \
IMAGE_NAMESPACE=${{ github.repository }} \
PLATFORM=${{ matrix.platform }}/${{ matrix.arch }}
fi
env:
IS_MERGE_GROUP: ${{ github.event_name == 'merge_group' }}
manifests:
if: ${{ github.event_name == 'merge_group' }}
name: Generate Manifests
runs-on: ubuntu-latest
needs: [retina-images, retina-win-images, operator-images]
strategy:
matrix:
components: ["retina", "operator"]
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Setup QEMU
uses: docker/setup-qemu-action@v3
- name: Azure CLI login
uses: azure/login@v1
with:
creds: ${{ secrets.AZURE_CREDENTIALS }}
- name: Generate Manifests
shell: bash
run: |
set -euo pipefail
az acr login -n ${{ vars.ACR_NAME }}
make manifest COMPONENT=${{ matrix.components }} \
IMAGE_REGISTRY=${{ vars.ACR_NAME }} \
e2e:
if: ${{ github.event_name == 'merge_group' }}
name: Run E2E Tests
runs-on: ubuntu-latest
needs: [manifests]
permissions:
id-token: write
contents: read
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Setup go
uses: actions/setup-go@v4
with:
go-version: ">=1.21.0"
- run: go version
- name: Az CLI login
uses: azure/login@v1
if: ${{ github.event_name == 'merge_group' }}
with:
creds: ${{ secrets.AZURE_CREDENTIALS }}
- name: Run E2E Tests
shell: bash
run: |
set -euo pipefail
export AZURE_SUBSCRIPTION_ID=${{ secrets.AZURE_SUBSCRIPTION }}
go test -v ./test/e2e/scenarios/retina/*.go -timeout 30m -tags=e2e -count=1 -args -image-tag=$(make version) -image-registry=${{ vars.ACR_NAME }} -image-namespace=${{ github.repository}}