Improve caching by putting the cache on a shared tag on the registry #373
Workflow file for this run
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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 |