Skip to content

Simplify plumbum usage in update_wiki #2894

Simplify plumbum usage in update_wiki

Simplify plumbum usage in update_wiki #2894

Workflow file for this run

name: Build, test, and push Docker Images
# [FAST_BUILD] in the PR title makes this workflow only build
# the `jupyter/docker-stacks-foundation` and `jupyter/base-notebook` images
# This allows to run CI faster if a full build is not required
# This only works for a `pull_request` event and does not affect `push` to the `main` branch
on:
schedule:
# Weekly, at 03:00 on Monday UTC
- cron: "0 3 * * 1"
pull_request:
paths:
- ".github/workflows/docker.yml"
# We use local reusable workflows to make architecture clean and simple
# https://docs.github.com/en/actions/sharing-automations/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/sharing-automations/creating-actions/about-custom-actions#composite-actions
- ".github/actions/create-dev-env/action.yml"
- ".github/actions/load-image/action.yml"
- "images/**"
- "!images/*/README.md"
- "tagging/**"
- "!tagging/README.md"
- "tests/**"
- "!tests/README.md"
- "wiki/**"
- "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/load-image/action.yml"
- "images/**"
- "!images/*/README.md"
- "tagging/**"
- "!tagging/README.md"
- "tests/**"
- "!tests/README.md"
- "wiki/**"
- "requirements-dev.txt"
workflow_dispatch:
# https://docs.github.com/en/actions/writing-workflows/choosing-what-your-workflow-does/control-the-concurrency-of-workflows-and-jobs
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:
parent-image: ""
image: docker-stacks-foundation
platform: aarch64
runs-on: ubuntu-24.04-arm
timeout-minutes: 10
x86_64-foundation:
uses: ./.github/workflows/docker-build-test-upload.yml
with:
parent-image: ""
image: docker-stacks-foundation
platform: x86_64
runs-on: ubuntu-24.04
timeout-minutes: 10
aarch64-base:
uses: ./.github/workflows/docker-build-test-upload.yml
with:
parent-image: docker-stacks-foundation
image: base-notebook
platform: aarch64
runs-on: ubuntu-24.04-arm
timeout-minutes: 15
needs: [aarch64-foundation]
x86_64-base:
uses: ./.github/workflows/docker-build-test-upload.yml
with:
parent-image: docker-stacks-foundation
image: base-notebook
platform: x86_64
runs-on: ubuntu-24.04
timeout-minutes: 15
needs: [x86_64-foundation]
aarch64-minimal:
uses: ./.github/workflows/docker-build-test-upload.yml
with:
parent-image: base-notebook
image: minimal-notebook
platform: aarch64
runs-on: ubuntu-24.04-arm
timeout-minutes: 15
needs: [aarch64-base]
if: ${{ !contains(github.event.pull_request.title, '[FAST_BUILD]') }}
x86_64-minimal:
uses: ./.github/workflows/docker-build-test-upload.yml
with:
parent-image: base-notebook
image: minimal-notebook
platform: x86_64
runs-on: ubuntu-24.04
timeout-minutes: 15
needs: [x86_64-base]
if: ${{ !contains(github.event.pull_request.title, '[FAST_BUILD]') }}
aarch64-scipy:
uses: ./.github/workflows/docker-build-test-upload.yml
with:
parent-image: minimal-notebook
image: scipy-notebook
platform: aarch64
runs-on: ubuntu-24.04-arm
timeout-minutes: 15
needs: [aarch64-minimal]
if: ${{ !contains(github.event.pull_request.title, '[FAST_BUILD]') }}
x86_64-scipy:
uses: ./.github/workflows/docker-build-test-upload.yml
with:
parent-image: minimal-notebook
image: scipy-notebook
platform: x86_64
runs-on: ubuntu-24.04
timeout-minutes: 15
needs: [x86_64-minimal]
if: ${{ !contains(github.event.pull_request.title, '[FAST_BUILD]') }}
aarch64-r:
uses: ./.github/workflows/docker-build-test-upload.yml
with:
parent-image: minimal-notebook
image: r-notebook
platform: aarch64
runs-on: ubuntu-24.04-arm
timeout-minutes: 15
needs: [aarch64-minimal]
if: ${{ !contains(github.event.pull_request.title, '[FAST_BUILD]') }}
x86_64-r:
uses: ./.github/workflows/docker-build-test-upload.yml
with:
parent-image: minimal-notebook
image: r-notebook
platform: x86_64
runs-on: ubuntu-24.04
timeout-minutes: 15
needs: [x86_64-minimal]
if: ${{ !contains(github.event.pull_request.title, '[FAST_BUILD]') }}
aarch64-julia:
uses: ./.github/workflows/docker-build-test-upload.yml
with:
parent-image: minimal-notebook
image: julia-notebook
platform: aarch64
runs-on: ubuntu-24.04-arm
# This workflow sometimes takes quite long to build
timeout-minutes: 30
needs: [aarch64-minimal]
if: ${{ !contains(github.event.pull_request.title, '[FAST_BUILD]') }}
x86_64-julia:
uses: ./.github/workflows/docker-build-test-upload.yml
with:
parent-image: minimal-notebook
image: julia-notebook
platform: x86_64
runs-on: ubuntu-24.04
timeout-minutes: 20
needs: [x86_64-minimal]
if: ${{ !contains(github.event.pull_request.title, '[FAST_BUILD]') }}
aarch64-tensorflow:
uses: ./.github/workflows/docker-build-test-upload.yml
with:
parent-image: scipy-notebook
image: tensorflow-notebook
platform: aarch64
runs-on: ubuntu-24.04-arm
timeout-minutes: 15
needs: [aarch64-scipy]
if: ${{ !contains(github.event.pull_request.title, '[FAST_BUILD]') }}
x86_64-tensorflow:
uses: ./.github/workflows/docker-build-test-upload.yml
with:
parent-image: scipy-notebook
image: tensorflow-notebook
platform: x86_64
runs-on: ubuntu-24.04
timeout-minutes: 15
needs: [x86_64-scipy]
if: ${{ !contains(github.event.pull_request.title, '[FAST_BUILD]') }}
x86_64-tensorflow-cuda:
uses: ./.github/workflows/docker-build-test-upload.yml
with:
parent-image: scipy-notebook
image: tensorflow-notebook
variant: cuda
platform: x86_64
runs-on: ubuntu-24.04
timeout-minutes: 20
needs: [x86_64-scipy]
if: ${{ !contains(github.event.pull_request.title, '[FAST_BUILD]') }}
aarch64-pytorch:
uses: ./.github/workflows/docker-build-test-upload.yml
with:
parent-image: scipy-notebook
image: pytorch-notebook
platform: aarch64
runs-on: ubuntu-24.04-arm
timeout-minutes: 20
needs: [aarch64-scipy]
if: ${{ !contains(github.event.pull_request.title, '[FAST_BUILD]') }}
x86_64-pytorch:
uses: ./.github/workflows/docker-build-test-upload.yml
with:
parent-image: scipy-notebook
image: pytorch-notebook
platform: x86_64
runs-on: ubuntu-24.04
timeout-minutes: 20
needs: [x86_64-scipy]
if: ${{ !contains(github.event.pull_request.title, '[FAST_BUILD]') }}
x86_64-pytorch-cuda11:
uses: ./.github/workflows/docker-build-test-upload.yml
with:
parent-image: scipy-notebook
image: pytorch-notebook
variant: cuda11
platform: x86_64
runs-on: ubuntu-24.04
timeout-minutes: 20
needs: [x86_64-scipy]
if: ${{ !contains(github.event.pull_request.title, '[FAST_BUILD]') }}
x86_64-pytorch-cuda12:
uses: ./.github/workflows/docker-build-test-upload.yml
with:
parent-image: scipy-notebook
image: pytorch-notebook
variant: cuda12
platform: x86_64
runs-on: ubuntu-24.04
timeout-minutes: 20
needs: [x86_64-scipy]
if: ${{ !contains(github.event.pull_request.title, '[FAST_BUILD]') }}
aarch64-datascience:
uses: ./.github/workflows/docker-build-test-upload.yml
with:
parent-image: scipy-notebook
image: datascience-notebook
platform: aarch64
runs-on: ubuntu-24.04-arm
# This workflow sometimes takes quite long to build
timeout-minutes: 30
needs: [aarch64-scipy]
if: ${{ !contains(github.event.pull_request.title, '[FAST_BUILD]') }}
x86_64-datascience:
uses: ./.github/workflows/docker-build-test-upload.yml
with:
parent-image: scipy-notebook
image: datascience-notebook
platform: x86_64
runs-on: ubuntu-24.04
timeout-minutes: 25
needs: [x86_64-scipy]
if: ${{ !contains(github.event.pull_request.title, '[FAST_BUILD]') }}
aarch64-pyspark:
uses: ./.github/workflows/docker-build-test-upload.yml
with:
parent-image: scipy-notebook
image: pyspark-notebook
platform: aarch64
runs-on: ubuntu-24.04-arm
timeout-minutes: 20
needs: [aarch64-scipy]
if: ${{ !contains(github.event.pull_request.title, '[FAST_BUILD]') }}
x86_64-pyspark:
uses: ./.github/workflows/docker-build-test-upload.yml
with:
parent-image: scipy-notebook
image: pyspark-notebook
platform: x86_64
runs-on: ubuntu-24.04
timeout-minutes: 15
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:
parent-image: pyspark-notebook
image: all-spark-notebook
platform: aarch64
runs-on: ubuntu-24.04-arm
timeout-minutes: 20
needs: [aarch64-pyspark]
if: ${{ !contains(github.event.pull_request.title, '[FAST_BUILD]') }}
x86_64-all-spark:
uses: ./.github/workflows/docker-build-test-upload.yml
with:
parent-image: pyspark-notebook
image: all-spark-notebook
platform: x86_64
runs-on: ubuntu-24.04
timeout-minutes: 15
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 }}
variant: ${{ matrix.variant }}
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,
pytorch-notebook,
datascience-notebook,
pyspark-notebook,
all-spark-notebook,
]
variant: [default]
needs:
[
aarch64-foundation,
aarch64-base,
aarch64-minimal,
aarch64-scipy,
aarch64-r,
aarch64-julia,
aarch64-tensorflow,
aarch64-pytorch,
aarch64-datascience,
aarch64-pyspark,
aarch64-all-spark,
]
if: ${{ !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 }}
variant: ${{ matrix.variant }}
secrets:
REGISTRY_USERNAME: ${{ secrets.QUAY_USERNAME }}
REGISTRY_TOKEN: ${{ secrets.QUAY_ROBOT_TOKEN }}
strategy:
matrix:
image: [docker-stacks-foundation, base-notebook]
variant: [default]
needs: [aarch64-foundation, aarch64-base]
if: 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 }}
variant: ${{ matrix.variant }}
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,
pytorch-notebook,
datascience-notebook,
pyspark-notebook,
all-spark-notebook,
]
variant: [default]
include:
- image: tensorflow-notebook
variant: cuda
- image: pytorch-notebook
variant: cuda11
- image: pytorch-notebook
variant: cuda12
needs:
[
x86_64-foundation,
x86_64-base,
x86_64-minimal,
x86_64-scipy,
x86_64-r,
x86_64-julia,
x86_64-tensorflow,
x86_64-tensorflow-cuda,
x86_64-pytorch,
x86_64-pytorch-cuda11,
x86_64-pytorch-cuda12,
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 }}
variant: ${{ matrix.variant }}
secrets:
REGISTRY_USERNAME: ${{ secrets.QUAY_USERNAME }}
REGISTRY_TOKEN: ${{ secrets.QUAY_ROBOT_TOKEN }}
strategy:
matrix:
image: [docker-stacks-foundation, base-notebook]
variant: [default]
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 }}
variant: ${{ matrix.variant }}
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,
pytorch-notebook,
datascience-notebook,
pyspark-notebook,
all-spark-notebook,
]
variant: [default]
include:
- image: tensorflow-notebook
variant: cuda
- image: pytorch-notebook
variant: cuda11
- image: pytorch-notebook
variant: cuda12
needs: [aarch64-images-tag-push, x86_64-images-tag-push]
if: ${{ !contains(github.event.pull_request.title, '[FAST_BUILD]') }}
merge-tags-fast:
uses: ./.github/workflows/docker-merge-tags.yml
with:
image: ${{ matrix.image }}
variant: ${{ matrix.variant }}
secrets:
REGISTRY_USERNAME: ${{ secrets.QUAY_USERNAME }}
REGISTRY_TOKEN: ${{ secrets.QUAY_ROBOT_TOKEN }}
strategy:
matrix:
image: [docker-stacks-foundation, base-notebook]
variant: [default]
needs: [aarch64-images-tag-push-fast, x86_64-images-tag-push-fast]
if: 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: ${{ !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: contains(github.event.pull_request.title, '[FAST_BUILD]')
contributed-recipes:
uses: ./.github/workflows/contributed-recipes.yml
with:
called-using-workflow-call: true
# Contributed recipes only use these images
# If recipes using other images will be added, they should be added here as well
#
# contributed-recipes will give an error if the image is not yet built and uploaded
needs: [aarch64-base, x86_64-base, aarch64-minimal, x86_64-minimal]