From c14c02ca026baba80a781a1591b41dacf8c7b774 Mon Sep 17 00:00:00 2001 From: Donghee Na Date: Mon, 20 Jan 2025 21:33:39 +0900 Subject: [PATCH] .github: Add ARM64 CI and deployment (#39) * .github: Add ARM64 CI and deployment * Update release process to use multiple instances --- .github/workflows/ci.yml | 3 +- .github/workflows/release.yml | 68 +++++++++++++++++++++++++++++++---- 2 files changed, 63 insertions(+), 8 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 36ffd3f..052f2b8 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -31,7 +31,8 @@ jobs: fail-fast: false matrix: autoconf_version: ["2.71", "2.72"] - runs-on: ubuntu-latest + os: [ubuntu-latest, ubuntu-24.04-arm] + runs-on: ${{ matrix.os }} env: TAG: autoconf:${{ matrix.autoconf_version }}-${{ github.run_id }} steps: diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 4a36093..4454685 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -15,22 +15,27 @@ on: run-name: "Release: ${{ inputs.package }}" jobs: - release-to-ghcr: + generate-version: concurrency: group: release-to-ghcr-${{ inputs.package }} cancel-in-progress: false if: contains('["brettcannon", "corona10", "erlend-aasland"]', github.actor) runs-on: ubuntu-latest + outputs: + builddate: ${{ steps.version.outputs.version }} steps: # Checkout push-to-registry action github repository - name: Set Calver Date run: | echo "builddate=$(date +'%Y.%m.%d')" >> $GITHUB_OUTPUT id: version - - name: Checkout Push to Registry action + + build_amd64: + needs: generate-version + runs-on: ubuntu-latest + steps: + - name: Checkout uses: actions/checkout@v4 - - name: Set up QEMU - uses: docker/setup-qemu-action@v3 - name: Set up Docker Buildx uses: docker/setup-buildx-action@v3 - name: Login To GHCR @@ -43,8 +48,57 @@ jobs: uses: docker/build-push-action@v6 with: context: ./${{ inputs.package }} - platforms: linux/amd64,linux/arm64 + platforms: linux/amd64 push: true tags: | - ghcr.io/python/${{ inputs.package }}:${{ steps.version.outputs.builddate }}.${{ github.run_id }} - ghcr.io/python/${{ inputs.package }}:latest + ghcr.io/python/${{ inputs.package }}:${{ needs.generate-version.outputs.builddate }}.${{ github.run_id }}-amd64 + + build_arm64: + needs: generate-version + runs-on: ubuntu-24.04-arm + steps: + - name: Checkout + uses: actions/checkout@v4 + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v3 + - name: Login To GHCR + uses: docker/login-action@v3 + with: + registry: ghcr.io + username: ${{ github.actor }} + password: ${{ secrets.GITHUB_TOKEN }} + - name: Build and push + uses: docker/build-push-action@v6 + with: + context: ./${{ inputs.package }} + platforms: linux/arm64 + push: true + tags: | + ghcr.io/python/${{ inputs.package }}:${{ needs.generate-version.outputs.builddate }}.${{ github.run_id }}-arm64 + + set_manifest: + needs: [generate-version, build_amd64, build_arm64] + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v4 + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v3 + - name: Login To GHCR + uses: docker/login-action@v3 + with: + registry: ghcr.io + username: ${{ github.actor }} + password: ${{ secrets.GITHUB_TOKEN }} + - name: Set manifest + run: | + docker manifest create ghcr.io/python/${{ inputs.package }}:${{ needs.generate-version.outputs.builddate }}.${{ github.run_id }} \ + --amend ghcr.io/python/${{ inputs.package }}:${{ needs.generate-version.outputs.builddate }}.${{ github.run_id }}-amd64 \ + --amend ghcr.io/python/${{ inputs.package }}:${{ needs.generate-version.outputs.builddate }}.${{ github.run_id }}-arm64 + + docker manifest create ghcr.io/python/${{ inputs.package }}:latest \ + --amend ghcr.io/python/${{ inputs.package }}:${{ needs.generate-version.outputs.builddate }}.${{ github.run_id }}-amd64 \ + --amend ghcr.io/python/${{ inputs.package }}:${{ needs.generate-version.outputs.builddate }}.${{ github.run_id }}-arm64 + + docker manifest push ghcr.io/python/${{ inputs.package }}:latest + docker manifest push ghcr.io/python/${{ inputs.package }}:${{ needs.generate-version.outputs.builddate }}.${{ github.run_id }}