From 7eea2775b942d0c77a9b2b568c63dcb22802213c Mon Sep 17 00:00:00 2001 From: Matthias Mair Date: Sat, 20 Sep 2025 00:04:42 +0200 Subject: [PATCH] feat: speed up docker publishing (#9912) * feat: speed up docker publishing by spliting tests tasks for docker publishing into paralell also makes releasing safer as no tests are run in the then published image and the permissions are slimer * add update * add names * prepare image * add dev setup * remove migration stage * merge unit test --- .github/workflows/docker.yaml | 67 ++++++++++++++++++++++++++--------- 1 file changed, 51 insertions(+), 16 deletions(-) diff --git a/.github/workflows/docker.yaml b/.github/workflows/docker.yaml index 42e74a5bc8..0233e5f953 100644 --- a/.github/workflows/docker.yaml +++ b/.github/workflows/docker.yaml @@ -55,12 +55,11 @@ jobs: # Build the docker image build: + name: Docker Build Test needs: paths-filter if: needs.paths-filter.outputs.docker == 'true' || github.event_name == 'release' || github.event_name == 'push' || contains(github.event.pull_request.labels.*.name, 'full-run') permissions: contents: read - packages: write - id-token: write env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} python_version: "3.11" @@ -71,16 +70,6 @@ jobs: uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # pin@v5.0.0 with: persist-credentials: false - - name: Set Up Python ${{ env.python_version }} - uses: actions/setup-python@e797f83bcb11b83ae66e0230d6156d7c80228e7c # pin@v6.0.0 - with: - python-version: ${{ env.python_version }} - - name: Version Check - run: | - pip install --require-hashes -r contrib/dev_reqs/requirements.txt - python3 .github/scripts/version_check.py - echo "git_commit_hash=$(git rev-parse --short HEAD)" >> $GITHUB_ENV - echo "git_commit_date=$(git show -s --format=%ci)" >> $GITHUB_ENV - name: Test Docker Image id: test-docker run: | @@ -124,13 +113,59 @@ jobs: - name: Run Unit Tests run: | echo "GITHUB_TOKEN=${{ secrets.GITHUB_TOKEN }}" >> contrib/container/docker.dev.env - docker compose --project-directory . -f contrib/container/dev-docker-compose.yml run --rm inventree-dev-server invoke dev.test --check --disable-pty --translations + docker compose --project-directory . -f contrib/container/dev-docker-compose.yml run --rm inventree-dev-server invoke dev.test --disable-pty --translations + + # Run migration test + migration_test: + name: Migration Test + needs: paths-filter + if: needs.paths-filter.outputs.docker == 'true' || github.event_name == 'release' || github.event_name == 'push' + permissions: + contents: read + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + python_version: "3.11" + runs-on: ubuntu-latest # in the future we can try to use alternative runners here + + steps: + - name: Check out repo + uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # pin@v4.2.2 + with: + persist-credentials: false - name: Run Migration Tests run: | - docker compose --project-directory . -f contrib/container/dev-docker-compose.yml run --rm inventree-dev-server invoke dev.test --check --migrations --translations - - name: Clean up test folder + docker compose --project-directory . -f contrib/container/dev-docker-compose.yml run --rm inventree-dev-server invoke update + docker compose --project-directory . -f contrib/container/dev-docker-compose.yml run --rm inventree-dev-server invoke dev.setup-dev + docker compose --project-directory . -f contrib/container/dev-docker-compose.yml run --rm inventree-dev-server invoke dev.test --migrations --translations + + # Build and publish + publish: + name: Publish Docker Image + needs: [build, migration_test] + permissions: + contents: read + packages: write + id-token: write + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + python_version: "3.11" + runs-on: ubuntu-latest # in the future we can try to use alternative runners here + + steps: + - name: Check out repo + uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # pin@v4.2.2 + with: + persist-credentials: false + - name: Set Up Python ${{ env.python_version }} + uses: actions/setup-python@a26af69be951a213d495a4c3e4e4022e16d87065 # pin@v5.6.0 + with: + python-version: ${{ env.python_version }} + - name: Version Check run: | - rm -rf InvenTree/_testfolder + pip install --require-hashes -r contrib/dev_reqs/requirements.txt + python3 .github/scripts/version_check.py + echo "git_commit_hash=$(git rev-parse --short HEAD)" >> $GITHUB_ENV + echo "git_commit_date=$(git show -s --format=%ci)" >> $GITHUB_ENV - name: Set up QEMU if: github.event_name != 'pull_request' uses: docker/setup-qemu-action@29109295f81e9208d7d86ff1c6c12d2833863392 # pin@v3.6.0