Skip to content

Improve caching by putting the cache on a shared tag on the registry #373

Improve caching by putting the cache on a shared tag on the registry

Improve caching by putting the cache on a shared tag on the registry #373

name: build-push-containers
on:
release:
types: [published]
push:
branches:
- 'main'
- 'og-develop'
- 'docker-cuda-install-first'
jobs:
docker:
runs-on: ubuntu-latest
steps:
-
name: Check disk space
run: df . -h
-
name: Free disk space
run: |
sudo docker rmi $(docker image ls -aq) >/dev/null 2>&1 || true
sudo rm -rf \
/usr/share/dotnet /usr/local/lib/android /opt/ghc \
/usr/local/share/powershell /usr/share/swift /usr/local/.ghcup \
/usr/lib/jvm /opt/hostedtoolcache/CodeQL || true
echo "some directories deleted"
sudo apt install aptitude -y >/dev/null 2>&1
sudo aptitude purge aria2 ansible azure-cli shellcheck rpm xorriso zsync \
esl-erlang firefox gfortran-8 gfortran-9 google-chrome-stable \
google-cloud-sdk imagemagick \
libmagickcore-dev libmagickwand-dev libmagic-dev ant ant-optional kubectl \
mercurial apt-transport-https mono-complete libmysqlclient \
unixodbc-dev yarn chrpath libssl-dev libxft-dev \
libfreetype6 libfreetype6-dev libfontconfig1 libfontconfig1-dev \
snmp pollinate libpq-dev postgresql-client powershell ruby-full \
sphinxsearch subversion mongodb-org azure-cli microsoft-edge-stable \
-y -f >/dev/null 2>&1
sudo aptitude purge google-cloud-sdk -f -y >/dev/null 2>&1
sudo aptitude purge microsoft-edge-stable -f -y >/dev/null 2>&1 || true
sudo apt purge microsoft-edge-stable -f -y >/dev/null 2>&1 || true
sudo aptitude purge '~n ^mysql' -f -y >/dev/null 2>&1
sudo aptitude purge '~n ^php' -f -y >/dev/null 2>&1
sudo aptitude purge '~n ^dotnet' -f -y >/dev/null 2>&1
sudo apt-get autoremove -y >/dev/null 2>&1
sudo apt-get autoclean -y >/dev/null 2>&1
echo "some packages purged"
-
name: Check disk space
run: |
df . -h
-
name: Checkout
uses: actions/checkout@v4
-
name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
-
name: Login to NVCR
uses: docker/login-action@v3
with:
registry: nvcr.io
username: ${{ secrets.NVCR_USERNAME }}
password: ${{ secrets.NVCR_PASSWORD }}
-
name: Login to Docker Hub
uses: docker/login-action@v3
with:
username: ${{ secrets.DOCKER_HUB_USERNAME }}
password: ${{ secrets.DOCKER_HUB_PASSWORD }}
-
name: Metadata for prod Image
id: meta-prod
uses: docker/metadata-action@v5
with:
images: |
stanfordvl/omnigibson
tags: |
type=ref,event=branch
type=semver,pattern={{version}}
-
name: Metadata for dev Image
id: meta-dev
uses: docker/metadata-action@v5
with:
images: |
stanfordvl/omnigibson-dev
tags: |
type=ref,event=branch
type=semver,pattern={{version}}
-
name: Metadata for vscode Image
id: meta-vscode
uses: docker/metadata-action@v5
with:
images: |
stanfordvl/omnigibson-vscode
tags: |
type=ref,event=branch
type=semver,pattern={{version}}
-
name: Build and push prod image
id: build-prod
uses: docker/build-push-action@v5
with:
context: .
push: true
tags: ${{ steps.meta-prod.outputs.tags }}
labels: ${{ steps.meta-prod.outputs.labels }}
file: docker/prod.Dockerfile
cache-from: type=registry,ref=stanfordvl/omnigibson:build-cache
cache-to: type=registry,ref=stanfordvl/omnigibson:build-cache,mode=max
-
name: Build and push dev image
id: build-dev
uses: docker/build-push-action@v5
with:
context: .
build-args: "DEV_MODE=1"
push: true
tags: ${{ steps.meta-dev.outputs.tags }}
labels: ${{ steps.meta-dev.outputs.labels }}
file: docker/prod.Dockerfile
cache-from: type=registry,ref=stanfordvl/omnigibson:build-cache # OK to share cache here.
cache-to: type=registry,ref=stanfordvl/omnigibson:build-cache,mode=max
- name: Update vscode image Dockerfile with prod image tag
run: |
sed -i "s/omnigibson:latest/omnigibson@${{ steps.build-prod.outputs.digest }}/g" docker/vscode.Dockerfile && cat docker/vscode.Dockerfile
-
name: Build and push vscode image
id: build-vscode
uses: docker/build-push-action@v5
with:
context: .
push: true
tags: ${{ steps.meta-vscode.outputs.tags }}
labels: ${{ steps.meta-vscode.outputs.labels }}
file: docker/vscode.Dockerfile
cache-from: type=registry,ref=stanfordvl/omnigibson:og-develop # OK to share cache here.
cache-to: type=inline