From 9e1935da10ddb3424f74bc8da85377d81b5a66c3 Mon Sep 17 00:00:00 2001 From: Felix Ruf Date: Thu, 4 Jul 2024 11:47:10 +0200 Subject: [PATCH] test parallel build --- .github/workflows/main.yml | 97 ++++++++++++++++++++++++++------------ 1 file changed, 66 insertions(+), 31 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 87066ab9c..b212e4dd9 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -124,6 +124,66 @@ jobs: working-directory: ./src/Resources run: yarn test + buildDevImage: + name: Build Development Docker Images + runs-on: ubuntu-latest + needs: [ test-cgl, psalm, phpmd, format, lint, testFrontendUnitFunctional ] + steps: + - name: Set up QEMU + uses: docker/setup-qemu-action@v3 + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v3 + - name: Checkout + uses: actions/checkout@v4 + with: + fetch-depth: 10 + - name: Prepare build + run: | + mkdir -p /tmp/docker/buildx + git log -n 10 --date=short --format=format:"%C(auto)%h %ad @%al %s" >> public/changelog.txt + - name: Setup docker build caches + uses: actions/cache@v4 + with: + key: ${{ runner.os }}-buildx + path: /tmp/docker/buildx + - name: Login to DockerHub + uses: docker/login-action@v3 + with: + username: ${{ secrets.DOCKERHUB_USERNAME }} + password: ${{ secrets.DOCKERHUB_PASSWORD }} + # Development image + - name: Get Docker meta for development + id: devmeta + uses: docker/metadata-action@v5 + with: + images: aoepeople/meals:beta + tags: | + type=sha + type=ref,event=branch + - name: Build and push development image + id: build_dev + uses: docker/build-push-action@v6 + with: + file: Dockerfile + push: false + tags: aoepeople/meals:test + labels: ${{ steps.devmeta.outputs.labels }} + build-args: | + BUILD_DEV="true" + cache-from: | + aoepeople/meals:beta + type=local,src=/tmp/docker/buildx + cache-to: type=local,dest=/tmp/docker/buildx + outputs: type=docker,dest=/tmp/docker/dev.tar + # Upload artifacts + - name: Upload docker images + uses: actions/upload-artifact@v4 + with: + name: docker-images + path: /tmp/docker/*.tar + outputs: + imageDev: aoepeople/meals:test + buildImages: name: Build Docker Images runs-on: ubuntu-latest @@ -176,30 +236,6 @@ jobs: type=local,src=/tmp/docker/buildx cache-to: type=local,dest=/tmp/docker/buildx outputs: type=docker,dest=/tmp/docker/app.tar - # Development image - - name: Get Docker meta for development - id: devmeta - uses: docker/metadata-action@v5 - with: - images: aoepeople/meals:beta - tags: | - type=sha - type=ref,event=branch - - name: Build and push development image - id: build_dev - uses: docker/build-push-action@v6 - with: - file: Dockerfile - push: false - tags: aoepeople/meals:test - labels: ${{ steps.devmeta.outputs.labels }} - build-args: | - BUILD_DEV="true" - cache-from: | - aoepeople/meals:beta - type=local,src=/tmp/docker/buildx - cache-to: type=local,dest=/tmp/docker/buildx - outputs: type=docker,dest=/tmp/docker/dev.tar # Upload artifacts - name: Upload docker images uses: actions/upload-artifact@v4 @@ -209,15 +245,14 @@ jobs: outputs: image: ${{ fromJson(steps.meta.outputs.json).tags[0] }} images: ${{ join(steps.meta.outputs.tags, ' ') }} - imageDev: aoepeople/meals:test cypress: name: Run E2E-tests via Cypress - needs: [ buildImages ] + needs: [ buildDevImage ] runs-on: ubuntu-latest env: SERVICE: dev # use `dev` to enable xdebug and code coverage - IMAGE_DEV: ${{ needs.buildImages.outputs.image }} + IMAGE_DEV: ${{ needs.buildDevImage.outputs.imageDev }} COMPOSE_INTERACTIVE_NO_CLI: true strategy: fail-fast: false @@ -272,12 +307,12 @@ jobs: testBackendUnitFunctional: name: Run backend unit- and functional-tests - needs: [ buildImages ] + needs: [ buildImages, buildDevImage ] runs-on: ubuntu-latest env: SERVICE: app # use `dev` to enable xdebug and code coverage IMAGE: ${{ needs.buildImages.outputs.image }} - IMAGE_DEV: ${{ needs.buildImages.outputs.imageDev }} + IMAGE_DEV: ${{ needs.buildDevImage.outputs.imageDev }} COMPOSE_INTERACTIVE_NO_CLI: true steps: - name: Set up Docker Buildx @@ -313,11 +348,11 @@ jobs: publish: name: Publish if: ${{ github.ref == 'refs/heads/main' || startsWith(github.ref, 'refs/tags/v') }} - needs: [ buildImages, testBackendUnitFunctional, cypress ] + needs: [ buildImages, buildDevImage, testBackendUnitFunctional, cypress ] runs-on: ubuntu-latest env: IMAGES_APP: ${{ needs.buildImages.outputs.images }} - IMAGE_DEV: ${{ needs.buildImages.outputs.imageDev }} + IMAGE_DEV: ${{ needs.buildDevImage.outputs.imageDev }} steps: - name: Set up Docker Buildx uses: docker/setup-buildx-action@v3