From d84a7f1fd21f0974caec82d61e30478bed2ee0bd Mon Sep 17 00:00:00 2001 From: Alex Jones Date: Mon, 7 Apr 2025 10:03:10 +0100 Subject: [PATCH] chore: setting up build system fixes Signed-off-by: Alex Jones --- .github/workflows/build_container.yaml | 92 ++++++-------------------- 1 file changed, 22 insertions(+), 70 deletions(-) diff --git a/.github/workflows/build_container.yaml b/.github/workflows/build_container.yaml index 318dacf..f96d04d 100644 --- a/.github/workflows/build_container.yaml +++ b/.github/workflows/build_container.yaml @@ -34,7 +34,7 @@ jobs: steps: - name: Check out code - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4 + uses: actions/checkout@v4 - name: Extract branch name id: extract_branch @@ -52,101 +52,53 @@ jobs: id: get_run_type run: | NON_FORKED_AND_NON_ROBOT_RUN=${{ ( github.actor != 'renovate[bot]' && github.actor != 'dependabot[bot]' ) && ( github.event_name == 'push' || github.event.pull_request.head.repo.full_name == github.repository ) }} - echo "github.actor != 'renovate[bot]' = ${{ github.actor != 'renovate[bot]' }}" - echo "github.actor != 'dependabot[bot]' = ${{ github.actor != 'dependabot[bot]' }}" - echo "github.event_name == 'push' = ${{ github.event_name == 'push' }}" - echo "github.event.pull_request.head.repo.full_name == github.repository = ${{ github.event.pull_request.head.repo.full_name == github.repository }}" - echo "NON_FORKED_AND_NON_ROBOT_RUN = $NON_FORKED_AND_NON_ROBOT_RUN" echo "NON_FORKED_AND_NON_ROBOT_RUN=$NON_FORKED_AND_NON_ROBOT_RUN" >> "$GITHUB_OUTPUT" - build_image: - name: Build Container Image - needs: prepare_ci_run - runs-on: ubuntu-latest - env: - BRANCH: ${{ needs.prepare_ci_run.outputs.BRANCH }} - DATETIME: ${{ needs.prepare_ci_run.outputs.DATETIME }} - BUILD_TIME: ${{ needs.prepare_ci_run.outputs.BUILD_TIME }} - GIT_SHA: ${{ needs.prepare_ci_run.outputs.GIT_SHA }} - RELEASE_REGISTRY: "localhost:5000/k8sgpt" - steps: - - name: Check out code - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4 - - - name: Set up Docker Buildx - id: buildx - uses: docker/setup-buildx-action@b5ca514318bd6ebac0fb2aedd5d36ec1b5c232a2 # v3 - - - name: Build Docker Image - uses: docker/build-push-action@471d1dc4e07e5cdedd4c2171150001c434f0b7a4 # v6 - with: - context: . - platforms: linux/amd64 - file: ./container/Dockerfile - target: production - tags: | - ${{ env.RELEASE_REGISTRY }}/${{ env.IMAGE_NAME }}:dev-${{ env.DATETIME }} - secrets: | - GIT_AUTH_TOKEN=${{ secrets.K8SGPT_BOT_SECRET }} - build-args: | - GIT_HASH=${{ env.GIT_SHA }} - RELEASE_VERSION=dev-${{ env.DATETIME }} - BUILD_TIME=${{ env.BUILD_TIME }} - builder: ${{ steps.buildx.outputs.name }} - push: false - cache-from: type=gha,scope=${{ github.ref_name }}-${{ env.IMAGE_NAME }} - cache-to: type=gha,scope=${{ github.ref_name }}-${{ env.IMAGE_NAME }} - outputs: type=docker,dest=/tmp/${{ env.IMAGE_NAME }}-image.tar - - - name: Upload image as artifact - uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4 - with: - name: ${{ env.IMAGE_NAME }}-image.tar - path: /tmp/${{ env.IMAGE_NAME }}-image.tar - upload_images: name: Upload images to ghcr registry - needs: [ prepare_ci_run, build_image ] - # if: github.event_name == 'push' && needs.prepare_ci_run.outputs.NON_FORKED_AND_NON_ROBOT_RUN == 'true' # only run on push to main/maintenance branches - runs-on: ubuntu-latest + needs: prepare_ci_run + runs-on: ubuntu-24.04 + strategy: + matrix: + image: + - name: k8sgpt + target: production env: DATETIME: ${{ needs.prepare_ci_run.outputs.DATETIME }} BUILD_TIME: ${{ needs.prepare_ci_run.outputs.BUILD_TIME }} GIT_SHA: ${{ needs.prepare_ci_run.outputs.GIT_SHA }} permissions: - packages: write # Needed for pushing images to the registry - contents: read # Needed for checking out the repository + packages: write + contents: read steps: - name: Check out code - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4 + uses: actions/checkout@v4 - name: Login to GitHub Container Registry - uses: docker/login-action@74a5d142397b4f367a81961eba4e8cd7edddf772 # v3 + uses: docker/login-action@v3 with: - registry: "ghcr.io" + registry: ghcr.io username: ${{ github.actor }} - password: ${{ secrets.K8SGPT_BOT_SECRET }} + password: ${{ secrets.GITHUB_TOKEN }} - name: Set up Docker Buildx id: buildx - uses: docker/setup-buildx-action@b5ca514318bd6ebac0fb2aedd5d36ec1b5c232a2 # v3 + uses: docker/setup-buildx-action@v3 - - name: Build Docker Image - uses: docker/build-push-action@471d1dc4e07e5cdedd4c2171150001c434f0b7a4 # v6 + - name: Build and push Docker image + uses: docker/build-push-action@v6 with: context: . file: ./container/Dockerfile - platforms: linux/amd64 - target: production + platforms: linux/arm64 + target: ${{ matrix.image.target }} tags: | - ghcr.io/k8sgpt-ai/${{ env.IMAGE_NAME }}:dev-${{ env.DATETIME }} - secrets: | - GIT_AUTH_TOKEN=${{ secrets.K8SGPT_BOT_SECRET }} + ghcr.io/k8sgpt-ai/${{ matrix.image.name }}:dev-${{ env.DATETIME }} build-args: | GIT_HASH=${{ env.GIT_SHA }} RELEASE_VERSION=dev-${{ env.DATETIME }} BUILD_TIME=${{ env.BUILD_TIME }} builder: ${{ steps.buildx.outputs.name }} push: true - cache-from: type=gha,scope=${{ github.ref_name }}-${{ env.IMAGE_NAME }} - cache-to: type=gha,scope=${{ github.ref_name }}-${{ env.IMAGE_NAME }} + cache-from: type=gha,scope=${{ github.ref_name }}-${{ matrix.image.name }} + cache-to: type=gha,scope=${{ github.ref_name }}-${{ matrix.image.name }}