| | 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 |
| |
|