| name: 'generate and publish GRPC docker caches' |
|
|
| on: |
| workflow_dispatch: |
|
|
| schedule: |
| |
| - cron: '0 0 * * *' |
|
|
| concurrency: |
| group: grpc-cache-${{ github.head_ref || github.ref }}-${{ github.repository }} |
| cancel-in-progress: true |
|
|
| jobs: |
| generate_caches: |
| strategy: |
| matrix: |
| include: |
| - grpc-base-image: ubuntu:24.04 |
| runs-on: 'ubuntu-latest' |
| platforms: 'linux/amd64,linux/arm64' |
| runs-on: ${{matrix.runs-on}} |
| steps: |
| - name: Release space from worker |
| if: matrix.runs-on == 'ubuntu-latest' |
| run: | |
| echo "Listing top largest packages" |
| pkgs=$(dpkg-query -Wf '${Installed-Size}\t${Package}\t${Status}\n' | awk '$NF == "installed"{print $1 "\t" $2}' | sort -nr) |
| head -n 30 <<< "${pkgs}" |
| echo |
| df -h |
| echo |
| sudo apt-get remove -y '^llvm-.*|^libllvm.*' || true |
| sudo apt-get remove --auto-remove android-sdk-platform-tools || true |
| sudo apt-get purge --auto-remove android-sdk-platform-tools || true |
| sudo rm -rf /usr/local/lib/android |
| sudo apt-get remove -y '^dotnet-.*|^aspnetcore-.*' || true |
| sudo rm -rf /usr/share/dotnet |
| sudo apt-get remove -y '^mono-.*' || true |
| sudo apt-get remove -y '^ghc-.*' || true |
| sudo apt-get remove -y '.*jdk.*|.*jre.*' || true |
| sudo apt-get remove -y 'php.*' || true |
| sudo apt-get remove -y hhvm powershell firefox monodoc-manual msbuild || true |
| sudo apt-get remove -y '^google-.*' || true |
| sudo apt-get remove -y azure-cli || true |
| sudo apt-get remove -y '^mongo.*-.*|^postgresql-.*|^mysql-.*|^mssql-.*' || true |
| sudo apt-get remove -y '^gfortran-.*' || true |
| sudo apt-get remove -y microsoft-edge-stable || true |
| sudo apt-get remove -y firefox || true |
| sudo apt-get remove -y powershell || true |
| sudo apt-get remove -y r-base-core || true |
| sudo apt-get autoremove -y |
| sudo apt-get clean |
| echo |
| echo "Listing top largest packages" |
| pkgs=$(dpkg-query -Wf '${Installed-Size}\t${Package}\t${Status}\n' | awk '$NF == "installed"{print $1 "\t" $2}' | sort -nr) |
| head -n 30 <<< "${pkgs}" |
| echo |
| sudo rm -rfv build || true |
| sudo rm -rf /usr/share/dotnet || true |
| sudo rm -rf /opt/ghc || true |
| sudo rm -rf "/usr/local/share/boost" || true |
| sudo rm -rf "$AGENT_TOOLSDIRECTORY" || true |
| df -h |
| |
| - name: Set up QEMU |
| uses: docker/setup-qemu-action@master |
| with: |
| platforms: all |
|
|
| - name: Set up Docker Buildx |
| id: buildx |
| uses: docker/setup-buildx-action@master |
|
|
| - name: Checkout |
| uses: actions/checkout@v6 |
|
|
| - name: Cache GRPC |
| uses: docker/build-push-action@v6 |
| with: |
| builder: ${{ steps.buildx.outputs.name }} |
| |
| |
| |
| build-args: | |
| GRPC_BASE_IMAGE=${{ matrix.grpc-base-image }} |
| GRPC_MAKEFLAGS=--jobs=4 --output-sync=target |
| GRPC_VERSION=v1.65.0 |
| context: . |
| file: ./Dockerfile |
| cache-to: type=gha,ignore-error=true |
| cache-from: type=gha |
| target: grpc |
| platforms: ${{ matrix.platforms }} |
| push: false |
|
|