From 34dfad0b0bdae401ce9eb14942b064dd54ae2ef6 Mon Sep 17 00:00:00 2001 From: Evan Baker Date: Wed, 20 Mar 2024 13:23:27 -0500 Subject: [PATCH] feat: release images from main and tags (#86) Publishes images from main and tags Signed-off-by: Evan Baker --- .github/workflows/release-images.yaml | 174 ++++++++++++++++++++++++++ 1 file changed, 174 insertions(+) create mode 100644 .github/workflows/release-images.yaml diff --git a/.github/workflows/release-images.yaml b/.github/workflows/release-images.yaml new file mode 100644 index 0000000000..89247c2fd2 --- /dev/null +++ b/.github/workflows/release-images.yaml @@ -0,0 +1,174 @@ +name: Release Retina Container Images + +on: + push: + branches: [ main ] + tags: [ "v*" ] + +permissions: + contents: read + packages: write + +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: Log in to registry + run: echo "${{ secrets.GITHUB_TOKEN }}" | docker login ghcr.io -u $ --password-stdin + + - name: Build/Push Images + shell: bash + run: | + set -euo pipefail + echo "TAG=$(make version)" >> $GITHUB_ENV + make retina-image \ + IMAGE_NAMESPACE=${{ github.repository }} \ + PLATFORM=${{ matrix.platform }}/${{ matrix.arch }} \ + BUILDX_ACTION=--push + + 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: Log in to registry + run: echo "${{ secrets.GITHUB_TOKEN }}" | docker login ghcr.io -u $ --password-stdin + + - name: Build/Push Images + shell: bash + run: | + set -euo pipefail + echo "TAG=$(make version)" >> $GITHUB_ENV + make retina-image-win \ + IMAGE_NAMESPACE=${{ github.repository }} \ + PLATFORM=${{ matrix.platform }}/${{ matrix.arch }} \ + BUILDX_ACTION=--push + + 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: Log in to registry + run: echo "${{ secrets.GITHUB_TOKEN }}" | docker login ghcr.io -u $ --password-stdin + + - name: Build/Push Images + shell: bash + run: | + set -euo pipefail + echo "TAG=$(make version)" >> $GITHUB_ENV + make retina-operator-image \ + IMAGE_NAMESPACE=${{ github.repository }} \ + PLATFORM=${{ matrix.platform }}/${{ matrix.arch }} \ + BUILDX_ACTION=--push + + kubectl-retina-images: + name: Build kubectl-retina 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: Log in to registry + run: echo "${{ secrets.GITHUB_TOKEN }}" | docker login ghcr.io -u $ --password-stdin + + - name: Build/Push Images + shell: bash + run: | + set -euo pipefail + echo "TAG=$(make version)" >> $GITHUB_ENV + make kubectl-retina-image \ + IMAGE_NAMESPACE=${{ github.repository }} \ + PLATFORM=${{ matrix.platform }}/${{ matrix.arch }} \ + BUILDX_ACTION=--push + + manifests: + name: Generate Manifests + runs-on: ubuntu-latest + needs: [retina-images, retina-win-images, operator-images, kubectl-retina-images] + + strategy: + matrix: + component: ["retina", "operator", "kubectl-retina"] + + steps: + - name: Checkout code + uses: actions/checkout@v4 + + - name: Set up QEMU + uses: docker/setup-qemu-action@v3 + + - name: Log in to registry + run: echo "${{ secrets.GITHUB_TOKEN }}" | docker login ghcr.io -u $ --password-stdin + + - name: Generate Manifests + shell: bash + run: | + set -euo pipefail + make manifest \ + IMAGE_NAMESPACE=${{ github.repository }} \ + COMPONENT=${{ matrix.component }}