From d9dbcb5fd669df1c0eddb61dd6eaed25d5814992 Mon Sep 17 00:00:00 2001 From: zwitschi Date: Wed, 22 Oct 2025 17:46:07 +0200 Subject: [PATCH] Enhance CI workflow by adding pip cache directory setup and improving image build conditions --- .github/workflows/ci.yml | 43 +++++++++++++++++++++++++++++++++------- 1 file changed, 36 insertions(+), 7 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 6cff776..c1ba6b5 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -9,6 +9,8 @@ on: jobs: test: + env: + RUNNER_TOOL_CACHE: /toolcache runs-on: ubuntu-latest strategy: matrix: @@ -22,12 +24,17 @@ jobs: with: python-version: ${{ matrix.python-version }} + - name: Locate pip cache directory + id: pip-cache-dir + run: echo "dir=$(python -m pip cache dir)" >> "$GITHUB_OUTPUT" + - name: Cache pip uses: actions/cache@v4 with: - path: ~/.cache/pip - key: ${{ runner.os }}-pip-${{ hashFiles('**/requirements.txt') }} + path: ${{ steps.pip-cache-dir.outputs.dir }} + key: ${{ runner.os }}-py-${{ matrix.python-version }}-pip-${{ hashFiles('**/requirements.txt') }} restore-keys: | + ${{ runner.os }}-py-${{ matrix.python-version }}-pip- ${{ runner.os }}-pip- - name: Install dependencies @@ -47,18 +54,40 @@ jobs: # path: tests build-image: - if: github.ref == 'refs/heads/main' || github.event_name == 'workflow_dispatch' runs-on: ubuntu-latest needs: test + env: + DEFAULT_BRANCH: main + REGISTRY_URL: ${{ secrets.REGISTRY_URL }} + REGISTRY_USERNAME: ${{ secrets.REGISTRY_USERNAME }} + REGISTRY_PASSWORD: ${{ secrets.REGISTRY_PASSWORD }} steps: - name: Checkout uses: actions/checkout@v4 + - name: Collect workflow metadata + id: meta + shell: bash + run: | + ref_name="${GITHUB_REF_NAME:-${GITHUB_REF##*/}}" + event_name="${GITHUB_EVENT_NAME:-}" + sha="${GITHUB_SHA:-}" + + if [ "$ref_name" = "${DEFAULT_BRANCH:-main}" ]; then + echo "on_default=true" >> "$GITHUB_OUTPUT" + else + echo "on_default=false" >> "$GITHUB_OUTPUT" + fi + + echo "ref_name=$ref_name" >> "$GITHUB_OUTPUT" + echo "event_name=$event_name" >> "$GITHUB_OUTPUT" + echo "sha=$sha" >> "$GITHUB_OUTPUT" + - name: Set up QEMU and Buildx uses: docker/setup-buildx-action@v3 - name: Log in to registry (best-effort) - if: ${{ github.ref == 'refs/heads/main' }} + if: ${{ steps.meta.outputs.on_default == 'true' }} uses: docker/login-action@v3 continue-on-error: true with: @@ -71,14 +100,14 @@ jobs: with: context: . file: Dockerfile - push: ${{ github.ref == 'refs/heads/main' && github.event_name != 'pull_request' && (secrets.REGISTRY_URL != '' && secrets.REGISTRY_USERNAME != '' && secrets.REGISTRY_PASSWORD != '') }} + push: ${{ steps.meta.outputs.on_default == 'true' && steps.meta.outputs.event_name != 'pull_request' && (secrets.REGISTRY_URL != '' && secrets.REGISTRY_USERNAME != '' && secrets.REGISTRY_PASSWORD != '') }} tags: | ${{ secrets.REGISTRY_URL }}/allucanget/contact.allucanget.biz:latest - ${{ secrets.REGISTRY_URL }}/allucanget/contact.allucanget.biz:${{ github.sha }} + ${{ secrets.REGISTRY_URL }}/allucanget/contact.allucanget.biz:${{ steps.meta.outputs.sha }} - name: Upload built image metadata if: always() - uses: actions/upload-artifact@v4 + uses: actions/upload-artifact@v3 with: name: image-build-info path: .