Docker build CI triggered from @Tristan-Wilson of #7639
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: Docker build CI | |
run-name: Docker build CI triggered from @${{ github.actor }} of ${{ github.head_ref }} | |
on: | |
workflow_dispatch: | |
merge_group: | |
pull_request: | |
push: | |
branches: | |
- master | |
- develop | |
jobs: | |
docker: | |
name: Docker build | |
runs-on: ubuntu-8 | |
services: | |
# local registery | |
registry: | |
image: registry:2 | |
ports: | |
- 5000:5000 | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
with: | |
submodules: recursive | |
- name: Set up Docker Buildx | |
uses: docker/setup-buildx-action@v3 | |
with: | |
driver-opts: network=host | |
- name: Cache Docker layers | |
uses: actions/cache@v3 | |
with: | |
path: /tmp/.buildx-cache | |
key: ${{ runner.os }}-buildx-${{ hashFiles('Dockerfile') }} | |
restore-keys: ${{ runner.os }}-buildx- | |
- name: Build nitro-node docker | |
uses: docker/build-push-action@v5 | |
with: | |
target: nitro-node | |
push: true | |
context: . | |
tags: localhost:5000/nitro-node:latest | |
cache-from: type=local,src=/tmp/.buildx-cache | |
cache-to: type=local,dest=/tmp/.buildx-cache-new,mode=max | |
- name: Build nitro-node-dev docker | |
uses: docker/build-push-action@v5 | |
with: | |
target: nitro-node-dev | |
push: true | |
context: . | |
tags: localhost:5000/nitro-node-dev:latest | |
cache-from: type=local,src=/tmp/.buildx-cache | |
cache-to: type=local,dest=/tmp/.buildx-cache-new,mode=max | |
- name: Start background nitro-testnode | |
shell: bash | |
run: | | |
cd nitro-testnode | |
./test-node.bash --init --dev & | |
- name: Wait for rpc to come up | |
shell: bash | |
run: | | |
${{ github.workspace }}/.github/workflows/waitForNitro.sh | |
- name: Print WAVM module root | |
id: module-root | |
run: | | |
# Unfortunately, `docker cp` seems to always result in a "permission denied" | |
# We work around this by piping a tarball through stdout | |
docker run --rm --entrypoint tar localhost:5000/nitro-node-dev:latest -cf - target/machines/latest | tar xf - | |
module_root="$(cat "target/machines/latest/module-root.txt")" | |
echo "name=module-root=$module_root" >> $GITHUB_STATE | |
echo -e "\x1b[1;34mWAVM module root:\x1b[0m $module_root" | |
- name: Upload WAVM machine as artifact | |
uses: actions/upload-artifact@v3 | |
with: | |
name: wavm-machine-${{ steps.module-root.outputs.module-root }} | |
path: target/machines/latest/* | |
if-no-files-found: error | |
- name: Move cache | |
# Temp fix | |
# https://github.com/docker/build-push-action/issues/252 | |
# https://github.com/moby/buildkit/issues/1896 | |
run: | | |
rm -rf /tmp/.buildx-cache | |
mv /tmp/.buildx-cache-new /tmp/.buildx-cache | |
- name: Clear cache on failure | |
if: failure() | |
run: | | |
keys=(${{ runner.os }}-buildx- ${{ runner.os }}-buildx-${{ hashFiles('Dockerfile') }}) | |
for key in "${keys[@]}"; do | |
curl -X DELETE -H "Accept: application/vnd.github.v3+json" -H "Authorization: token ${{ secrets.GITHUB_TOKEN }}" "https://api.github.com/repos/${{ github.repository }}/actions/caches/$key" | |
done |