[FAST_BUILD] Introduce fast build #2099
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, test and push Docker Images | |
# [FAST_BUILD] in the PR title makes this workflow only build | |
# `jupyter/docker-stacks-foundation` and `/jupyter/base-notebook` in the PR | |
# This allows to run CI faster in case where full build is not required | |
# This only works for `pull_request` event and has no effect on `push` to the `main` branch | |
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" | |
- "images/**" | |
- "!images/*/README.md" | |
- "tagging/**" | |
- "!tagging/README.md" | |
- "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" | |
- "images/**" | |
- "!images/*/README.md" | |
- "tagging/**" | |
- "!tagging/README.md" | |
- "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_owner == 'jupyter' | |
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_owner == 'jupyter' | |
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_owner == 'jupyter' && !contains(github.event.pull_request.title, '[FAST_BUILD]') | |
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] | |
if: ${{ !contains(github.event.pull_request.title, '[FAST_BUILD]') }} | |
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_owner == 'jupyter' && !contains(github.event.pull_request.title, '[FAST_BUILD]') | |
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] | |
if: ${{ !contains(github.event.pull_request.title, '[FAST_BUILD]') }} | |
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_owner == 'jupyter' && !contains(github.event.pull_request.title, '[FAST_BUILD]') | |
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] | |
if: ${{ !contains(github.event.pull_request.title, '[FAST_BUILD]') }} | |
aarch64-julia: | |
uses: ./.github/workflows/docker-build-test-upload.yml | |
with: | |
parentImage: minimal-notebook | |
image: julia-notebook | |
platform: aarch64 | |
runsOn: ARM64 | |
needs: [aarch64-minimal] | |
if: github.repository_owner == 'jupyter' && !contains(github.event.pull_request.title, '[FAST_BUILD]') | |
x86_64-julia: | |
uses: ./.github/workflows/docker-build-test-upload.yml | |
with: | |
parentImage: minimal-notebook | |
image: julia-notebook | |
platform: x86_64 | |
runsOn: ubuntu-latest | |
needs: [x86_64-minimal] | |
if: ${{ !contains(github.event.pull_request.title, '[FAST_BUILD]') }} | |
aarch64-tensorflow: | |
uses: ./.github/workflows/docker-build-test-upload.yml | |
with: | |
parentImage: scipy-notebook | |
image: tensorflow-notebook | |
platform: aarch64 | |
runsOn: ARM64 | |
needs: [aarch64-scipy] | |
if: github.repository_owner == 'jupyter' && !contains(github.event.pull_request.title, '[FAST_BUILD]') | |
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] | |
if: ${{ !contains(github.event.pull_request.title, '[FAST_BUILD]') }} | |
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_owner == 'jupyter' && !contains(github.event.pull_request.title, '[FAST_BUILD]') | |
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] | |
if: ${{ !contains(github.event.pull_request.title, '[FAST_BUILD]') }} | |
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_owner == 'jupyter' && !contains(github.event.pull_request.title, '[FAST_BUILD]') | |
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] | |
if: ${{ !contains(github.event.pull_request.title, '[FAST_BUILD]') }} | |
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_owner == 'jupyter' && !contains(github.event.pull_request.title, '[FAST_BUILD]') | |
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] | |
if: ${{ !contains(github.event.pull_request.title, '[FAST_BUILD]') }} | |
aarch64-images-tag-push: | |
uses: ./.github/workflows/docker-tag-push.yml | |
with: | |
platform: aarch64 | |
image: ${{ matrix.image }} | |
secrets: | |
REGISTRY_USERNAME: ${{ secrets.QUAY_USERNAME }} | |
REGISTRY_TOKEN: ${{ secrets.QUAY_ROBOT_TOKEN }} | |
strategy: | |
matrix: | |
image: | |
[ | |
docker-stacks-foundation, | |
base-notebook, | |
minimal-notebook, | |
scipy-notebook, | |
r-notebook, | |
julia-notebook, | |
tensorflow-notebook, | |
datascience-notebook, | |
pyspark-notebook, | |
all-spark-notebook, | |
] | |
needs: | |
[ | |
aarch64-foundation, | |
aarch64-base, | |
aarch64-minimal, | |
aarch64-scipy, | |
aarch64-r, | |
aarch64-julia, | |
aarch64-tensorflow, | |
aarch64-datascience, | |
aarch64-pyspark, | |
aarch64-all-spark, | |
] | |
if: github.repository_owner == 'jupyter' && !contains(github.event.pull_request.title, '[FAST_BUILD]') | |
aarch64-images-tag-push-fast: | |
uses: ./.github/workflows/docker-tag-push.yml | |
with: | |
platform: aarch64 | |
image: ${{ matrix.image }} | |
secrets: | |
REGISTRY_USERNAME: ${{ secrets.QUAY_USERNAME }} | |
REGISTRY_TOKEN: ${{ secrets.QUAY_ROBOT_TOKEN }} | |
strategy: | |
matrix: | |
image: [docker-stacks-foundation, base-notebook] | |
needs: [aarch64-foundation, aarch64-base] | |
if: github.repository_owner == 'jupyter' && contains(github.event.pull_request.title, '[FAST_BUILD]') | |
x86_64-images-tag-push: | |
uses: ./.github/workflows/docker-tag-push.yml | |
with: | |
platform: x86_64 | |
image: ${{ matrix.image }} | |
secrets: | |
REGISTRY_USERNAME: ${{ secrets.QUAY_USERNAME }} | |
REGISTRY_TOKEN: ${{ secrets.QUAY_ROBOT_TOKEN }} | |
strategy: | |
matrix: | |
image: | |
[ | |
docker-stacks-foundation, | |
base-notebook, | |
minimal-notebook, | |
scipy-notebook, | |
r-notebook, | |
julia-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-julia, | |
x86_64-tensorflow, | |
x86_64-datascience, | |
x86_64-pyspark, | |
x86_64-all-spark, | |
] | |
if: ${{ !contains(github.event.pull_request.title, '[FAST_BUILD]') }} | |
x86_64-images-tag-push-fast: | |
uses: ./.github/workflows/docker-tag-push.yml | |
with: | |
platform: x86_64 | |
image: ${{ matrix.image }} | |
secrets: | |
REGISTRY_USERNAME: ${{ secrets.QUAY_USERNAME }} | |
REGISTRY_TOKEN: ${{ secrets.QUAY_ROBOT_TOKEN }} | |
strategy: | |
matrix: | |
image: [docker-stacks-foundation, base-notebook] | |
needs: [x86_64-foundation, x86_64-base] | |
if: contains(github.event.pull_request.title, '[FAST_BUILD]') | |
merge-tags: | |
uses: ./.github/workflows/docker-merge-tags.yml | |
with: | |
image: ${{ matrix.image }} | |
secrets: | |
REGISTRY_USERNAME: ${{ secrets.QUAY_USERNAME }} | |
REGISTRY_TOKEN: ${{ secrets.QUAY_ROBOT_TOKEN }} | |
strategy: | |
matrix: | |
image: | |
[ | |
docker-stacks-foundation, | |
base-notebook, | |
minimal-notebook, | |
scipy-notebook, | |
r-notebook, | |
julia-notebook, | |
tensorflow-notebook, | |
datascience-notebook, | |
pyspark-notebook, | |
all-spark-notebook, | |
] | |
needs: [aarch64-images-tag-push, x86_64-images-tag-push] | |
if: github.repository_owner == 'jupyter' && !contains(github.event.pull_request.title, '[FAST_BUILD]') | |
merge-tags-fast: | |
uses: ./.github/workflows/docker-merge-tags.yml | |
with: | |
image: ${{ matrix.image }} | |
secrets: | |
REGISTRY_USERNAME: ${{ secrets.QUAY_USERNAME }} | |
REGISTRY_TOKEN: ${{ secrets.QUAY_ROBOT_TOKEN }} | |
strategy: | |
matrix: | |
image: [docker-stacks-foundation, base-notebook] | |
needs: [aarch64-images-tag-push-fast, x86_64-images-tag-push-fast] | |
if: github.repository_owner == 'jupyter' && contains(github.event.pull_request.title, '[FAST_BUILD]') | |
wiki-update: | |
uses: ./.github/workflows/docker-wiki-update.yml | |
needs: [aarch64-images-tag-push, x86_64-images-tag-push] | |
if: github.repository_owner == 'jupyter' && !contains(github.event.pull_request.title, '[FAST_BUILD]') | |
permissions: | |
contents: write | |
wiki-update-fast: | |
uses: ./.github/workflows/docker-wiki-update.yml | |
needs: [aarch64-images-tag-push-fast, x86_64-images-tag-push-fast] | |
if: github.repository_owner == 'jupyter' && contains(github.event.pull_request.title, '[FAST_BUILD]') | |
permissions: | |
contents: write | |
contributed-recipes: | |
uses: ./.github/workflows/contributed-recipes.yml | |
needs: [merge-tags] | |
if: github.repository_owner == 'jupyter' && (github.ref == 'refs/heads/main' || github.event_name == 'schedule') |