Build, test and push Docker Images #9
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, test and push Docker Images | |
on: | |
schedule: | |
# Weekly, at 03:00 on Monday UTC time | |
- cron: "0 3 * * 1" | |
pull_request: | |
paths: | |
- ".github/workflows/docker.yml" | |
# We use local reusable workflows to make architecture clean an simple | |
# https://docs.github.com/en/actions/using-workflows/reusing-workflows | |
- ".github/workflows/docker-build-test-upload.yml" | |
- ".github/workflows/docker-merge-tags.yml" | |
- ".github/workflows/docker-tag-push.yml" | |
- ".github/workflows/docker-wiki-update.yml" | |
# We use local composite actions to combine multiple workflow steps within one action | |
# https://docs.github.com/en/actions/creating-actions/about-custom-actions#composite-actions | |
- ".github/actions/create-dev-env/action.yml" | |
- ".github/actions/download-manifests/action.yml" | |
- ".github/actions/load-image/action.yml" | |
- "all-spark-notebook/**" | |
- "base-notebook/**" | |
- "datascience-notebook/**" | |
- "docker-stacks-foundation/**" | |
- "minimal-notebook/**" | |
- "pyspark-notebook/**" | |
- "r-notebook/**" | |
- "scipy-notebook/**" | |
- "tensorflow-notebook/**" | |
- "tagging/**" | |
- "tests/**" | |
- "requirements-dev.txt" | |
push: | |
branches: | |
- main | |
paths: | |
- ".github/workflows/docker.yml" | |
- ".github/workflows/docker-build-test-upload.yml" | |
- ".github/workflows/docker-merge-tags.yml" | |
- ".github/workflows/docker-tag-push.yml" | |
- ".github/workflows/docker-wiki-update.yml" | |
- ".github/actions/create-dev-env/action.yml" | |
- ".github/actions/download-manifests/action.yml" | |
- ".github/actions/load-image/action.yml" | |
- "all-spark-notebook/**" | |
- "base-notebook/**" | |
- "datascience-notebook/**" | |
- "docker-stacks-foundation/**" | |
- "minimal-notebook/**" | |
- "pyspark-notebook/**" | |
- "r-notebook/**" | |
- "scipy-notebook/**" | |
- "tensorflow-notebook/**" | |
- "tagging/**" | |
- "tests/**" | |
- "requirements-dev.txt" | |
workflow_dispatch: | |
# https://docs.github.com/en/actions/using-jobs/using-concurrency | |
concurrency: | |
# only cancel in-progress jobs or runs for the current workflow - matches against branch & tags | |
group: ${{ github.workflow }}-${{ github.ref }} | |
cancel-in-progress: true | |
jobs: | |
aarch64-foundation: | |
uses: ./.github/workflows/docker-build-test-upload.yml | |
with: | |
parentImage: "" | |
image: docker-stacks-foundation | |
platform: aarch64 | |
runsOn: ARM64 | |
if: github.repository == 'jupyter/docker-stacks' | |
x86_64-foundation: | |
uses: ./.github/workflows/docker-build-test-upload.yml | |
with: | |
parentImage: "" | |
image: docker-stacks-foundation | |
platform: x86_64 | |
runsOn: ubuntu-latest | |
aarch64-base: | |
uses: ./.github/workflows/docker-build-test-upload.yml | |
with: | |
parentImage: docker-stacks-foundation | |
image: base-notebook | |
platform: aarch64 | |
runsOn: ARM64 | |
needs: [aarch64-foundation] | |
if: github.repository == 'jupyter/docker-stacks' | |
x86_64-base: | |
uses: ./.github/workflows/docker-build-test-upload.yml | |
with: | |
parentImage: docker-stacks-foundation | |
image: base-notebook | |
platform: x86_64 | |
runsOn: ubuntu-latest | |
needs: [x86_64-foundation] | |
aarch64-minimal: | |
uses: ./.github/workflows/docker-build-test-upload.yml | |
with: | |
parentImage: base-notebook | |
image: minimal-notebook | |
platform: aarch64 | |
runsOn: ARM64 | |
needs: [aarch64-base] | |
if: github.repository == 'jupyter/docker-stacks' | |
x86_64-minimal: | |
uses: ./.github/workflows/docker-build-test-upload.yml | |
with: | |
parentImage: base-notebook | |
image: minimal-notebook | |
platform: x86_64 | |
runsOn: ubuntu-latest | |
needs: [x86_64-base] | |
aarch64-scipy: | |
uses: ./.github/workflows/docker-build-test-upload.yml | |
with: | |
parentImage: minimal-notebook | |
image: scipy-notebook | |
platform: aarch64 | |
runsOn: ARM64 | |
needs: [aarch64-minimal] | |
if: github.repository == 'jupyter/docker-stacks' | |
x86_64-scipy: | |
uses: ./.github/workflows/docker-build-test-upload.yml | |
with: | |
parentImage: minimal-notebook | |
image: scipy-notebook | |
platform: x86_64 | |
runsOn: ubuntu-latest | |
needs: [x86_64-minimal] | |
aarch64-r: | |
uses: ./.github/workflows/docker-build-test-upload.yml | |
with: | |
parentImage: minimal-notebook | |
image: r-notebook | |
platform: aarch64 | |
runsOn: ARM64 | |
needs: [aarch64-minimal] | |
if: github.repository == 'jupyter/docker-stacks' | |
x86_64-r: | |
uses: ./.github/workflows/docker-build-test-upload.yml | |
with: | |
parentImage: minimal-notebook | |
image: r-notebook | |
platform: x86_64 | |
runsOn: ubuntu-latest | |
needs: [x86_64-minimal] | |
aarch64-tensorflow: | |
uses: ./.github/workflows/docker-build-test-upload.yml | |
with: | |
parentImage: scipy-notebook | |
image: tensorflow-notebook | |
platform: aarch64 | |
runsOn: ARM64 | |
needs: [aarch64-scipy] | |
x86_64-tensorflow: | |
uses: ./.github/workflows/docker-build-test-upload.yml | |
with: | |
parentImage: scipy-notebook | |
image: tensorflow-notebook | |
platform: x86_64 | |
runsOn: ubuntu-latest | |
needs: [x86_64-scipy] | |
aarch64-datascience: | |
uses: ./.github/workflows/docker-build-test-upload.yml | |
with: | |
parentImage: scipy-notebook | |
image: datascience-notebook | |
platform: aarch64 | |
runsOn: ARM64 | |
needs: [aarch64-scipy] | |
if: github.repository == 'jupyter/docker-stacks' | |
x86_64-datascience: | |
uses: ./.github/workflows/docker-build-test-upload.yml | |
with: | |
parentImage: scipy-notebook | |
image: datascience-notebook | |
platform: x86_64 | |
runsOn: ubuntu-latest | |
needs: [x86_64-scipy] | |
aarch64-pyspark: | |
uses: ./.github/workflows/docker-build-test-upload.yml | |
with: | |
parentImage: scipy-notebook | |
image: pyspark-notebook | |
platform: aarch64 | |
runsOn: ARM64 | |
needs: [aarch64-scipy] | |
if: github.repository == 'jupyter/docker-stacks' | |
x86_64-pyspark: | |
uses: ./.github/workflows/docker-build-test-upload.yml | |
with: | |
parentImage: scipy-notebook | |
image: pyspark-notebook | |
platform: x86_64 | |
runsOn: ubuntu-latest | |
needs: [x86_64-scipy] | |
aarch64-all-spark: | |
uses: ./.github/workflows/docker-build-test-upload.yml | |
with: | |
parentImage: pyspark-notebook | |
image: all-spark-notebook | |
platform: aarch64 | |
runsOn: ARM64 | |
needs: [aarch64-pyspark] | |
if: github.repository == 'jupyter/docker-stacks' | |
x86_64-all-spark: | |
uses: ./.github/workflows/docker-build-test-upload.yml | |
with: | |
parentImage: pyspark-notebook | |
image: all-spark-notebook | |
platform: x86_64 | |
runsOn: ubuntu-latest | |
needs: [x86_64-pyspark] | |
aarch64-images-tag-push: | |
uses: ./.github/workflows/docker-tag-push.yml | |
with: | |
platform: aarch64 | |
image: ${{ matrix.image }} | |
secrets: | |
DOCKERHUB_USERNAME: ${{ secrets.DOCKERHUB_USERNAME }} | |
DOCKERHUB_TOKEN: ${{ secrets.DOCKERHUB_TOKEN }} | |
strategy: | |
matrix: | |
image: | |
[ | |
docker-stacks-foundation, | |
base-notebook, | |
minimal-notebook, | |
scipy-notebook, | |
r-notebook, | |
tensorflow-notebook, | |
datascience-notebook, | |
pyspark-notebook, | |
all-spark-notebook, | |
] | |
needs: | |
[ | |
aarch64-foundation, | |
aarch64-base, | |
aarch64-minimal, | |
aarch64-scipy, | |
aarch64-r, | |
aarch64-tensorflow, | |
aarch64-datascience, | |
aarch64-pyspark, | |
aarch64-all-spark, | |
] | |
if: github.repository == 'jupyter/docker-stacks' | |
x86_64-images-tag-push: | |
uses: ./.github/workflows/docker-tag-push.yml | |
with: | |
platform: x86_64 | |
image: ${{ matrix.image }} | |
secrets: | |
DOCKERHUB_USERNAME: ${{ secrets.DOCKERHUB_USERNAME }} | |
DOCKERHUB_TOKEN: ${{ secrets.DOCKERHUB_TOKEN }} | |
strategy: | |
matrix: | |
image: | |
[ | |
docker-stacks-foundation, | |
base-notebook, | |
minimal-notebook, | |
scipy-notebook, | |
r-notebook, | |
tensorflow-notebook, | |
datascience-notebook, | |
pyspark-notebook, | |
all-spark-notebook, | |
] | |
needs: | |
[ | |
x86_64-foundation, | |
x86_64-base, | |
x86_64-minimal, | |
x86_64-scipy, | |
x86_64-r, | |
x86_64-tensorflow, | |
x86_64-datascience, | |
x86_64-pyspark, | |
x86_64-all-spark, | |
] | |
merge-tags: | |
uses: ./.github/workflows/docker-merge-tags.yml | |
with: | |
image: ${{ matrix.image }} | |
secrets: | |
DOCKERHUB_USERNAME: ${{ secrets.DOCKERHUB_USERNAME }} | |
DOCKERHUB_TOKEN: ${{ secrets.DOCKERHUB_TOKEN }} | |
strategy: | |
matrix: | |
image: | |
[ | |
docker-stacks-foundation, | |
base-notebook, | |
minimal-notebook, | |
scipy-notebook, | |
r-notebook, | |
tensorflow-notebook, | |
datascience-notebook, | |
pyspark-notebook, | |
all-spark-notebook, | |
] | |
needs: [aarch64-images-tag-push, x86_64-images-tag-push] | |
if: github.repository == 'jupyter/docker-stacks' | |
wiki-update: | |
uses: ./.github/workflows/docker-wiki-update.yml | |
needs: [aarch64-images-tag-push, x86_64-images-tag-push] | |
if: github.repository == 'jupyter/docker-stacks' | |
permissions: | |
contents: write |