Just forcing the build (#210) #270
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 and push EGI containers | |
on: | |
push: | |
# only pushes on master so we don't push intermediate results to dockerhub | |
branches: | |
- master | |
pull_request: | |
jobs: | |
detect-changes: | |
uses: ./.github/workflows/build-list.yml | |
with: | |
base: base/Dockerfile | |
images: | | |
"single-user/Dockerfile" | |
"single-user-eosc/Dockerfile" | |
"single-user-panosc/Dockerfile" | |
"single-user-ai4pp/Dockerfile" | |
"single-user-ai/Dockerfile" | |
base-image: | |
name: Build base image | |
needs: detect-changes | |
if: needs.detect-changes.outputs.build-base == 1 | |
runs-on: ubuntu-latest | |
outputs: | |
base: ${{ steps.docker_meta_base.outputs.tags }} | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- name: Docker meta | |
id: docker_meta_base | |
uses: docker/metadata-action@v5 | |
with: | |
images: ${{ github.repository_owner }}/notebooks-base | |
tags: | | |
type=sha | |
- name: Set up QEMU | |
uses: docker/setup-qemu-action@v3 | |
- name: Set up Docker Buildx | |
uses: docker/setup-buildx-action@v3 | |
- name: Build base | |
uses: docker/build-push-action@v6 | |
with: | |
context: base | |
tags: ${{ steps.docker_meta_base.outputs.tags }} | |
labels: ${{ steps.docker_meta_base.outputs.labels }} | |
outputs: type=docker,dest=/tmp/base.tar | |
- name: Upload docker image as artifact | |
uses: actions/upload-artifact@v4 | |
with: | |
name: images | |
path: /tmp/base.tar | |
user-images: | |
name: Build and push images | |
runs-on: ubuntu-latest | |
needs: [base-image, detect-changes] | |
strategy: | |
matrix: ${{ fromJson(needs.detect-changes.outputs.matrix) }} | |
steps: | |
- name: try to make free space | |
run: | | |
sudo rm -rf /usr/share/dotnet | |
sudo rm -rf /usr/local/lib/android | |
sudo rm -rf /opt/ghc | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- name: Docker meta | |
id: docker_meta | |
uses: docker/metadata-action@v5 | |
with: | |
images: eginotebooks/${{ matrix.image }} | |
tags: | | |
type=sha | |
- name: Set up QEMU | |
uses: docker/setup-qemu-action@v3 | |
- name: Get previous build base | |
uses: actions/download-artifact@v4 | |
with: | |
name: images | |
path: /tmp | |
- name: Load Docker images | |
run: | | |
docker load --input /tmp/base.tar | |
# we are so scarce on storage that this needs to be cleared | |
rm -rf /tmp/base.tar | |
- name: Login to DockerHub | |
uses: docker/login-action@v3 | |
with: | |
username: ${{ secrets.DOCKERHUB_USERNAME }} | |
password: ${{ secrets.DOCKERHUB_TOKEN }} | |
if: github.event_name != 'pull_request' | |
# Unfortunately I haven't been able to load an prebuilt image here | |
# so not using the build-push-action from docker | |
# it's missing the labels and assumes tags is just one | |
- name: Build full image | |
run: | | |
docker build \ | |
--build-arg BASE_IMAGE=${{ needs.base-image.outputs.base }} \ | |
--tag ${{ steps.docker_meta.outputs.tags }} \ | |
--tag eginotebooks/${{ matrix.image }}:latest \ | |
${{ matrix.image }} | |
- name: Push full image | |
run: | | |
docker push ${{ steps.docker_meta.outputs.tags }} | |
docker push eginotebooks/${{ matrix.image }}:latest | |
if: ${{ github.event_name != 'pull_request' }} | |
- uses: addnab/docker-run-action@v3 | |
with: | |
image: ${{ steps.docker_meta.outputs.tags }} | |
options: -v ${{ github.workspace }}/${{ matrix.image }}:/image-data | |
run: | | |
for f in /image-data/tests/*.ipynb; do | |
if [ -e "$f" ]; then | |
jupyter nbconvert --ExecutePreprocessor.timeout=600 --to rst \ | |
--execute --stdout $f || exit 1 | |
else | |
true | |
fi | |
done |