|
name: 'generate and publish GRPC docker caches' |
|
|
|
on: |
|
workflow_dispatch: |
|
push: |
|
branches: |
|
- master |
|
|
|
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:22.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@v4 |
|
|
|
- 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 |
|
|