From e56b8b9889115484cf26aa9a4e0a0f12976300e2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fredrik=20L=C3=B6nnegren?= Date: Wed, 7 Feb 2024 09:35:11 +0100 Subject: [PATCH] Update workflows MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Build and push toolkit and os flavor before build-iso and build-disk. Signed-off-by: Fredrik Lönnegren --- .github/workflows/build_and_test_x86.yaml | 68 +++++++++++++++-------- .github/workflows/pr.yaml | 26 ++++++++- Dockerfile | 3 +- Makefile | 4 ++ 4 files changed, 75 insertions(+), 26 deletions(-) diff --git a/.github/workflows/build_and_test_x86.yaml b/.github/workflows/build_and_test_x86.yaml index 701e3014241..687ffba61cf 100644 --- a/.github/workflows/build_and_test_x86.yaml +++ b/.github/workflows/build_and_test_x86.yaml @@ -12,29 +12,42 @@ concurrency: cancel-in-progress: true jobs: - # detect step checks what machines the later steps should run on - detect: + build-os: + permissions: + packages: write runs-on: ubuntu-latest - outputs: - tests: ${{ steps.detect.outputs.tests }} + env: + FLAVOR: ${{ inputs.flavor }} + ARCH: x86_64 + TOOLKIT_REPO: ghcr.io/${{ github.repository }}/elemental-cli + REPO: ghcr.io/${{ github.repository }}/elemental-${{ inputs.flavor }} steps: - - id: detect - env: - FLAVOR: ${{ inputs.flavor }} + - uses: actions/checkout@v4 + - run: | + git fetch --prune --unshallow + - name: Log in to registry + run: echo "${{ secrets.GITHUB_TOKEN }}" | docker login ghcr.io -u $ --password-stdin + - name: Log in to the Container registry + uses: docker/login-action@v3 + with: + registry: ghcr.io + username: ${{ github.actor }} + password: ${{ secrets.GITHUB_TOKEN }} + - name: Build toolkit run: | - if [ "${FLAVOR}" == green ]; then - echo "tests=['test-upgrade', 'test-recovery', 'test-fallback', 'test-fsck', 'test-grubfallback']" >> $GITHUB_OUTPUT - else - echo "tests=['test-active']" >> $GITHUB_OUTPUT - fi - + make pull-toolkit + make ARCH=${{ env.ARCH }} DOCKER_ARGS=--load build-os + make ARCH=${{ env.ARCH }} DOCKER_ARGS=--push build-os build-iso: - needs: detect + needs: + - build-os runs-on: ubuntu-latest env: FLAVOR: ${{ inputs.flavor }} ARCH: x86_64 + TOOLKIT_REPO: ghcr.io/${{github.repository}}/elemental-cli + REPO: ghcr.io/${{ github.repository }}/elemental-${{ inputs.flavor }} steps: - uses: actions/checkout@v4 - run: | @@ -49,10 +62,6 @@ jobs: with: path: /tmp/*.iso key: ${{ env.cache-name }}-${{ hashFiles('Dockerfile', '**/go.sum', '**/pkg/**', '**/examples/**', '**/cmd/**', '**/vendor/**', '**/Makefile', '**/main.go') }} - - if: ${{ steps.cache-iso.outputs.cache-hit != 'true' }} - name: Build toolkit - run: | - make build - if: ${{ steps.cache-iso.outputs.cache-hit != 'true' }} name: Build ISO run: | @@ -70,7 +79,8 @@ jobs: enableCrossOsArchive: true build-disk: - needs: detect + needs: + - build-os runs-on: ubuntu-latest env: FLAVOR: ${{ inputs.flavor }} @@ -95,15 +105,10 @@ jobs: sudo rm -rf /usr/local/lib/android # will release about 10 GB if you don't need Android sudo rm -rf /usr/share/dotnet # will release about 20GB if you don't need .NET sudo df -h - - if: ${{ steps.cache-check.outputs.cache-hit != 'true' }} - name: Build toolkit - run: | - make build - if: ${{ steps.cache-check.outputs.cache-hit != 'true' }} name: Install to disk run: | sudo apt-get update && sudo apt-get install -y --no-install-recommends qemu-utils coreutils - make ARCH=${{ env.ARCH }} build-os sudo -E make ARCH=${{ env.ARCH }} build-disk sudo mv build/elemental-${{ env.FLAVOR }}.${{ env.ARCH}}.qcow2 /tmp/ - if: ${{ steps.cache-check.outputs.cache-hit != 'true' }} @@ -117,6 +122,21 @@ jobs: key: ${{ env.cache-name }}-${{ hashFiles('Dockerfile', '**/go.sum', '**/pkg/**', '**/examples/**', '**/cmd/**', '**/vendor/**', '**/Makefile', '**/main.go') }} enableCrossOsArchive: true + detect: + runs-on: ubuntu-latest + outputs: + tests: ${{ steps.detect.outputs.tests }} + steps: + - id: detect + env: + FLAVOR: ${{ inputs.flavor }} + run: | + if [ "${FLAVOR}" == green ]; then + echo "tests=['test-upgrade', 'test-recovery', 'test-fallback', 'test-fsck', 'test-grubfallback']" >> $GITHUB_OUTPUT + else + echo "tests=['test-active']" >> $GITHUB_OUTPUT + fi + tests-matrix: needs: - build-disk diff --git a/.github/workflows/pr.yaml b/.github/workflows/pr.yaml index a3f353d68d0..1bd2d453b2f 100644 --- a/.github/workflows/pr.yaml +++ b/.github/workflows/pr.yaml @@ -26,8 +26,32 @@ jobs: echo "flavor=['green']" >> $GITHUB_OUTPUT fi + build-toolkit: + permissions: + packages: write + runs-on: ubuntu-latest + env: + ARCH: x86_64 + TOOLKIT_REPO: ghcr.io/${{github.repository}}/elemental-cli + steps: + - uses: actions/checkout@v4 + - run: | + git fetch --prune --unshallow + - name: Log in to ghcr.io + uses: docker/login-action@v3 + with: + registry: ghcr.io + username: ${{ github.actor }} + password: ${{ secrets.GITHUB_TOKEN }} + - name: Build toolkit + run: | + make DOCKER_ARGS=--load build + make DOCKER_ARGS=--push build + build-matrix: - needs: detect + needs: + - detect + - build-toolkit strategy: matrix: flavor: ${{fromJson(needs.detect.outputs.flavor)}} diff --git a/Dockerfile b/Dockerfile index 4bf22c81ea7..21bddba5fe5 100644 --- a/Dockerfile +++ b/Dockerfile @@ -55,7 +55,8 @@ RUN ARCH=$(uname -m); \ xorriso \ cosign \ gptfdisk \ - lvm2 + lvm2 && \ + zypper cc -a # Copy the built CLI COPY --from=elemental-bin /usr/bin/elemental /usr/bin/elemental diff --git a/Makefile b/Makefile index 02cec8b666b..6a3030c4c64 100644 --- a/Makefile +++ b/Makefile @@ -59,6 +59,10 @@ build: push-toolkit: $(DOCKER) push $(TOOLKIT_REPO):$(VERSION) +.PHONY: pull-toolkit +pull-toolkit: + $(DOCKER) pull $(TOOLKIT_REPO):$(VERSION) + .PHONY: build-cli build-cli: go build -ldflags '$(LDFLAGS)' -o build/elemental