diff --git a/.github/workflows/builds.yml b/.github/workflows/builds.yml index f55663c..f658108 100644 --- a/.github/workflows/builds.yml +++ b/.github/workflows/builds.yml @@ -37,6 +37,7 @@ on: permissions: contents: read + packages: read env: CARGO_TERM_COLOR: always @@ -317,6 +318,17 @@ jobs: submodules: recursive fetch-depth: 0 + - name: Check if Dockerfile.base changed + id: base_changed + shell: bash + run: | + set -euo pipefail + if git diff --name-only "origin/${{ github.base_ref }}...HEAD" | grep -q '^docker/Dockerfile\.base$'; then + echo "changed=true" >> "$GITHUB_OUTPUT" + else + echo "changed=false" >> "$GITHUB_OUTPUT" + fi + - name: Free disk space uses: jlumbroso/free-disk-space@54081f138730dfa15788a46383842cd2f914a1be # v1.3.1 with: @@ -328,7 +340,21 @@ jobs: docker-images: true swap-storage: true + - name: Pull base image from GHCR + if: steps.base_changed.outputs.changed == 'false' + shell: bash + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + run: | + set -euxo pipefail + owner="$(echo "${GITHUB_REPOSITORY_OWNER}" | tr '[:upper:]' '[:lower:]')" + echo "${GITHUB_TOKEN}" | docker login ghcr.io -u "${{ github.actor }}" --password-stdin + docker pull "ghcr.io/${owner}/client-sdk-cpp-base:base-main-amd64" + docker tag "ghcr.io/${owner}/client-sdk-cpp-base:base-main-amd64" \ + "livekit-cpp-sdk-base-x64:${{ github.sha }}" + - name: Build base Docker image + if: steps.base_changed.outputs.changed == 'true' run: | docker build \ --build-arg TARGETARCH=amd64 \ @@ -372,6 +398,17 @@ jobs: submodules: recursive fetch-depth: 0 + - name: Check if Dockerfile.base changed + id: base_changed + shell: bash + run: | + set -euo pipefail + if git diff --name-only "origin/${{ github.base_ref }}...HEAD" | grep -q '^docker/Dockerfile\.base$'; then + echo "changed=true" >> "$GITHUB_OUTPUT" + else + echo "changed=false" >> "$GITHUB_OUTPUT" + fi + - name: Free disk space uses: jlumbroso/free-disk-space@54081f138730dfa15788a46383842cd2f914a1be # v1.3.1 with: @@ -383,7 +420,21 @@ jobs: docker-images: true swap-storage: true + - name: Pull base image from GHCR + if: steps.base_changed.outputs.changed == 'false' + shell: bash + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + run: | + set -euxo pipefail + owner="$(echo "${GITHUB_REPOSITORY_OWNER}" | tr '[:upper:]' '[:lower:]')" + echo "${GITHUB_TOKEN}" | docker login ghcr.io -u "${{ github.actor }}" --password-stdin + docker pull "ghcr.io/${owner}/client-sdk-cpp-base:base-main-arm64" + docker tag "ghcr.io/${owner}/client-sdk-cpp-base:base-main-arm64" \ + "livekit-cpp-sdk-base-arm64:${{ github.sha }}" + - name: Build base Docker image + if: steps.base_changed.outputs.changed == 'true' run: | docker build \ --build-arg TARGETARCH=arm64 \