squashme: fix build steps #718
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
# This set of github actions is used to automatically build the | |
# docker images for all of the containers we support. The build | |
# process is quite long as it involves building quite a few | |
# container images (maybe 20-30). We have considered trying to | |
# reduce this build time but it's a bit non trivial in our | |
# current configuration - the obvious q is to, say, detect if | |
# there are changes to e.g. docker/cuda and only build the cuda | |
# images in this case. The problem with this is that building the | |
# cuda images involves building the base python image, so we would | |
# build that, push it and tag it and then we would end up with a | |
# situation in which the cuda image is based on a renku-python image | |
# which has a tag which differs from, say, the r or julia images. | |
# | |
# Some solution might be possible which looks at previous commits | |
# and existing tags on docker images but this is a bit complex and | |
# probably requires having a clear model of dependencies and how | |
# they interact and what we're trying to achieve. | |
# | |
# It's probbaly worth noting here that the same action is used multiple | |
# times with multiple input parameters in the `matrix` variable to | |
# build different versions of the image. | |
name: Renku Docker Image CI | |
on: [push] | |
env: | |
DOCKER_PREFIX: renku/renkulab | |
DEFAULT_PYTHON_VERSION: "3.10" | |
jobs: | |
lint: | |
strategy: | |
fail-fast: true | |
matrix: | |
DOCKERFILE_PATH: | |
- docker/py/Dockerfile | |
- docker/r/Dockerfile | |
- docker/cuda/Dockerfile | |
- docker/vnc/Dockerfile | |
- docker/matlab/Dockerfile | |
- docker/matlab-jupyter/Dockerfile | |
- docker/julia/Dockerfile | |
- docker/batch/Dockerfile | |
- docker/qgis/Dockerfile | |
- docker/vscode/base.Dockerfile | |
- docker/vscode/conda.Dockerfile | |
- docker/vscode/poetry.Dockerfile | |
- docker/vscode/R.Dockerfile | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: hadolint/[email protected] | |
with: | |
dockerfile: ${{ matrix.DOCKERFILE_PATH }} | |
config: .hadolint.yaml | |
build-py: | |
needs: lint | |
runs-on: ubuntu-latest | |
strategy: | |
fail-fast: true | |
matrix: | |
include: | |
- BASE_PYTHON_VERSION: "3.11" | |
REGISTRY: quay.io | |
- BASE_PYTHON_VERSION: "3.10" | |
REGISTRY: docker.io | |
- BASE_PYTHON_VERSION: "3.9" | |
REGISTRY: docker.io | |
- BASE_PYTHON_VERSION: "3.8" | |
REGISTRY: docker.io | |
steps: | |
- name: Docker Login | |
uses: docker/login-action@v3 | |
with: | |
username: ${{ secrets.RENKU_DOCKER_USERNAME }} | |
password: ${{ secrets.RENKU_DOCKER_PASSWORD }} | |
- uses: actions/checkout@v4 | |
- name: Set up QEMU | |
uses: docker/[email protected] | |
- name: Set up Docker Buildx | |
uses: docker/setup-buildx-action@v3 | |
- name: Docker meta | |
id: meta | |
uses: docker/metadata-action@v5 | |
with: | |
images: ${{ env.DOCKER_PREFIX }}-py | |
tags: | | |
type=sha,prefix=${{ matrix.BASE_PYTHON_VERSION }}- | |
- name: Build and load | |
uses: docker/build-push-action@v6 | |
with: | |
build-args: | | |
BASE_IMAGE=${{ matrix.REGISTRY }}/jupyter/base-notebook:python-${{ matrix.BASE_PYTHON_VERSION }} | |
cache-from: type=gha | |
cache-to: type=gha,mode=max | |
context: docker/py | |
labels: ${{ steps.meta.outputs.labels }} | |
load: true | |
tags: ${{ steps.meta.outputs.tags }} | |
provenance: false | |
- name: Image Acceptance Tests | |
uses: cypress-io/github-action@v6 | |
env: | |
TEST_IMAGE_NAME: ${{ env.DOCKER_PREFIX }}-py:${{ steps.meta.outputs.version }} | |
TEST_USER_NAME: jovyan | |
TEST_SPEC: jupyterlab.cy.ts | |
with: | |
working-directory: tests | |
command: npx mocha -r ts-node/register index.ts | |
# export the base images for other jobs to use | |
- name: Build and export | |
uses: docker/build-push-action@v6 | |
with: | |
build-args: | | |
BASE_IMAGE=${{ matrix.REGISTRY }}/jupyter/base-notebook:python-${{ matrix.BASE_PYTHON_VERSION }} | |
cache-from: type=gha | |
context: docker/py | |
labels: ${{ steps.meta.outputs.labels }} | |
push: true | |
tags: ${{ steps.meta.outputs.tags }} | |
provenance: false | |
build-py-homedir-env: | |
needs: lint | |
runs-on: ubuntu-latest | |
strategy: | |
fail-fast: true | |
matrix: | |
BASE_PYTHON_VERSION: | |
- "3.10" | |
- "3.9" | |
- "3.8" | |
steps: | |
- name: Docker Login | |
uses: docker/login-action@v3 | |
with: | |
username: ${{ secrets.RENKU_DOCKER_USERNAME }} | |
password: ${{ secrets.RENKU_DOCKER_PASSWORD }} | |
- uses: actions/checkout@v4 | |
- name: Set up QEMU | |
uses: docker/[email protected] | |
- name: Set up Docker Buildx | |
uses: docker/setup-buildx-action@v3 | |
- name: Docker meta | |
id: meta | |
uses: docker/metadata-action@v5 | |
with: | |
images: ${{ env.DOCKER_PREFIX }}-py-homedir-envs | |
tags: | | |
type=sha,prefix=${{ matrix.BASE_PYTHON_VERSION }}- | |
type=semver,pattern={{version}},prefix=${{ matrix.BASE_PYTHON_VERSION }}- | |
type=raw,value=latest,enable=${{ github.ref == 'refs/heads/main' && matrix.BASE_PYTHON_VERSION == env.DEFAULT_PYTHON_VERSION }} | |
- name: Build and load | |
uses: docker/build-push-action@v6 | |
with: | |
build-args: | | |
BASE_IMAGE=jupyter/base-notebook:python-${{ matrix.BASE_PYTHON_VERSION }} | |
CONDA_ENVS_DIRS=/home/jovyan/work/envs | |
cache-from: type=gha | |
cache-to: type=gha,mode=max | |
context: docker/py | |
labels: ${{ steps.meta.outputs.labels }} | |
load: true | |
tags: ${{ steps.meta.outputs.tags }} | |
provenance: false | |
- name: Image Acceptance Tests | |
uses: cypress-io/github-action@v6 | |
env: | |
TEST_IMAGE_NAME: ${{ env.DOCKER_PREFIX }}-py-homedir-envs:${{ steps.meta.outputs.version }} | |
TEST_USER_NAME: jovyan | |
TEST_SPEC: jupyterlab.cy.ts | |
with: | |
working-directory: tests | |
command: npx mocha -r ts-node/register index.ts | |
# export the default base image for other jobs to use | |
- name: Build and export | |
if: matrix.BASE_PYTHON_VERSION == env.DEFAULT_PYTHON_VERSION | |
uses: docker/build-push-action@v6 | |
with: | |
build-args: | | |
BASE_IMAGE=jupyter/base-notebook:python-${{ matrix.BASE_PYTHON_VERSION }} | |
CONDA_ENVS_DIRS=/home/jovyan/work/envs | |
cache-from: type=gha | |
context: docker/py | |
labels: ${{ steps.meta.outputs.labels }} | |
push: true | |
tags: ${{ steps.meta.outputs.tags }} | |
provenance: false | |
build-py-multiarch: | |
needs: build-py | |
runs-on: ubuntu-latest | |
strategy: | |
fail-fast: true | |
matrix: | |
include: | |
- BASE_PYTHON_VERSION: "3.11" | |
REGISTRY: quay.io | |
- BASE_PYTHON_VERSION: "3.10" | |
REGISTRY: docker.io | |
- BASE_PYTHON_VERSION: "3.9" | |
REGISTRY: docker.io | |
- BASE_PYTHON_VERSION: "3.8" | |
REGISTRY: docker.io | |
steps: | |
- name: Docker Login | |
uses: docker/login-action@v3 | |
with: | |
username: ${{ secrets.RENKU_DOCKER_USERNAME }} | |
password: ${{ secrets.RENKU_DOCKER_PASSWORD }} | |
- uses: actions/checkout@v4 | |
- name: Set up QEMU | |
uses: docker/[email protected] | |
- name: Set up Docker Buildx | |
uses: docker/setup-buildx-action@v3 | |
- name: Docker meta | |
id: meta | |
uses: docker/metadata-action@v5 | |
with: | |
images: ${{ env.DOCKER_PREFIX }}-py | |
tags: | | |
type=sha,prefix=${{ matrix.BASE_PYTHON_VERSION }}- | |
type=semver,pattern={{version}},prefix=${{ matrix.BASE_PYTHON_VERSION }}- | |
type=raw,value=latest,enable=${{ github.ref == 'refs/heads/main' && matrix.BASE_PYTHON_VERSION == env.DEFAULT_PYTHON_VERSION }} | |
- name: Build and push | |
uses: docker/build-push-action@v6 | |
with: | |
context: docker/py | |
push: true | |
tags: ${{ steps.meta.outputs.tags }} | |
labels: ${{ steps.meta.outputs.labels }} | |
cache-to: type=gha,mode=max | |
cache-from: type=gha | |
build-args: | | |
BASE_IMAGE=${{ matrix.REGISTRY }}/jupyter/base-notebook:python-${{ matrix.BASE_PYTHON_VERSION }} | |
platforms: linux/amd64,linux/arm64 | |
provenance: false | |
build-cuda: | |
needs: build-py | |
runs-on: ubuntu-latest | |
strategy: | |
fail-fast: true | |
matrix: | |
include: | |
# taken from tensorflow compatibility chart at https://www.tensorflow.org/install/source#gpu | |
- CUDA_VERSION: "11.2" | |
EXTRA_LIBRARIES: "" | |
CUDA_CUDART_PACKAGE: "cuda-cudart-11-2=11.2.152-1" | |
CUDA_COMPAT_PACKAGE: "cuda-compat-11-2" | |
LIBCUDNN_PACKAGE: "libcudnn8=8.1.1.33-1+cuda11.2" | |
- CUDA_VERSION: "11.3" | |
EXTRA_LIBRARIES: "" | |
CUDA_CUDART_PACKAGE: "cuda-cudart-11-3=11.3.109-1" | |
CUDA_COMPAT_PACKAGE: "cuda-compat-11-3" | |
LIBCUDNN_PACKAGE: "libcudnn8=8.2.1.32-1+cuda11.3" | |
- CUDA_VERSION: "11.4" | |
EXTRA_LIBRARIES: "" | |
CUDA_CUDART_PACKAGE: "cuda-cudart-11-4=11.4.148-1" | |
CUDA_COMPAT_PACKAGE: "cuda-compat-11-4" | |
LIBCUDNN_PACKAGE: "libcudnn8=8.2.4.15-1+cuda11.4" | |
- CUDA_VERSION: "11.5" | |
EXTRA_LIBRARIES: "" | |
CUDA_CUDART_PACKAGE: "cuda-cudart-11-5=11.5.117-1" | |
CUDA_COMPAT_PACKAGE: "cuda-compat-11-5" | |
LIBCUDNN_PACKAGE: "libcudnn8=8.3.2.44-1+cuda11.5" | |
- CUDA_VERSION: "11.7" | |
EXTRA_LIBRARIES: "" | |
CUDA_CUDART_PACKAGE: "cuda-cudart-11-7=11.7.60-1" | |
CUDA_COMPAT_PACKAGE: "cuda-compat-11-7" | |
LIBCUDNN_PACKAGE: "libcudnn8=8.5.0.96-1+cuda11.7" | |
- CUDA_VERSION: "11.8" | |
EXTRA_LIBRARIES: "" | |
CUDA_CUDART_PACKAGE: "cuda-cudart-11-8=11.8.89-1" | |
CUDA_COMPAT_PACKAGE: "cuda-compat-11-8" | |
LIBCUDNN_PACKAGE: "libcudnn8=8.6.0.163-1+cuda11.8" | |
ADD_2204_APT_REPOS: "true" | |
- CUDA_VERSION: "12.2" | |
EXTRA_LIBRARIES: "" | |
CUDA_CUDART_PACKAGE: "cuda-cudart-12-2=12.2.140-1" | |
CUDA_COMPAT_PACKAGE: "cuda-compat-12-2" | |
LIBCUDNN_PACKAGE: "libcudnn8=8.9.5.29-1+cuda12.2" | |
ADD_2204_APT_REPOS: "true" | |
steps: | |
- name: Docker Login | |
uses: docker/login-action@v3 | |
with: | |
username: ${{ secrets.RENKU_DOCKER_USERNAME }} | |
password: ${{ secrets.RENKU_DOCKER_PASSWORD }} | |
- uses: actions/checkout@v4 | |
- name: Set outputs | |
id: vars | |
run: | | |
sha_short=$(git rev-parse --short HEAD) | |
echo "sha_short=$sha_short" >> $GITHUB_OUTPUT | |
echo "renku_base=${DOCKER_PREFIX}-py:${DEFAULT_PYTHON_VERSION}-${sha_short}" >> $GITHUB_OUTPUT | |
- name: Set up Docker Buildx | |
uses: docker/setup-buildx-action@v3 | |
- name: Docker meta | |
id: meta | |
uses: docker/metadata-action@v5 | |
with: | |
images: ${{ env.DOCKER_PREFIX }}-cuda | |
tags: | | |
type=sha,prefix=${{ matrix.CUDA_VERSION }}- | |
type=semver,pattern={{version}},prefix=${{ matrix.CUDA_VERSION }}- | |
type=raw,value=latest,enable=${{ github.ref == 'refs/heads/main' && matrix.CUDA_VERSION == '11.7' }} | |
- name: Build and load | |
uses: docker/build-push-action@v6 | |
with: | |
build-args: | | |
RENKU_BASE=${{ steps.vars.outputs.renku_base }} | |
CUDA_COMPAT_PACKAGE=${{ matrix.CUDA_COMPAT_PACKAGE }} | |
CUDA_CUDART_PACKAGE=${{ matrix.CUDA_CUDART_PACKAGE }} | |
CUDA_VERSION=${{ matrix.CUDA_VERSION }} | |
EXTRA_LIBRARIES=${{ matrix.EXTRA_LIBRARIES }} | |
LIBCUDNN_PACKAGE=${{ matrix.LIBCUDNN_PACKAGE }} | |
ADD_2204_APT_REPOS=${{ matrix.ADD_2204_APT_REPOS }} | |
context: docker/cuda | |
labels: ${{ steps.meta.outputs.labels }} | |
load: true | |
tags: ${{ steps.meta.outputs.tags }} | |
cache-from: | | |
type=inline | |
type=registry,ref=${{ steps.vars.outputs.renku_base }} | |
provenance: false | |
- name: Image Acceptance Tests | |
uses: cypress-io/github-action@v6 | |
env: | |
TEST_IMAGE_NAME: ${{ env.DOCKER_PREFIX }}-cuda:${{ steps.meta.outputs.version }} | |
TEST_USER_NAME: jovyan | |
TEST_SPEC: jupyterlab.cy.ts | |
with: | |
working-directory: tests | |
command: npx mocha -r ts-node/register index.ts | |
- name: Build and push | |
uses: docker/build-push-action@v6 | |
with: | |
build-args: | | |
RENKU_BASE=${{ steps.vars.outputs.renku_base }} | |
CUDA_COMPAT_PACKAGE=${{ matrix.CUDA_COMPAT_PACKAGE }} | |
CUDA_CUDART_PACKAGE=${{ matrix.CUDA_CUDART_PACKAGE }} | |
CUDA_VERSION=${{ matrix.CUDA_VERSION }} | |
EXTRA_LIBRARIES=${{ matrix.EXTRA_LIBRARIES }} | |
LIBCUDNN_PACKAGE=${{ matrix.LIBCUDNN_PACKAGE }} | |
context: docker/cuda | |
labels: ${{ steps.meta.outputs.labels }} | |
push: true | |
tags: ${{ steps.meta.outputs.tags }} | |
provenance: false | |
build-py-ext: | |
needs: build-py | |
runs-on: ubuntu-latest | |
strategy: | |
fail-fast: true | |
matrix: | |
include: | |
- EXTENSION: vnc | |
PYTHON_VERSION: "3.10" | |
- EXTENSION: vnc | |
PYTHON_VERSION: "3.11" | |
- EXTENSION: batch | |
PYTHON_VERSION: "3.10" | |
steps: | |
- name: Docker Login | |
uses: docker/login-action@v3 | |
with: | |
username: ${{ secrets.RENKU_DOCKER_USERNAME }} | |
password: ${{ secrets.RENKU_DOCKER_PASSWORD }} | |
- uses: actions/checkout@v4 | |
- name: Set outputs | |
id: vars | |
run: | | |
sha_short=$(git rev-parse --short HEAD) | |
echo "sha_short=$sha_short" >> $GITHUB_OUTPUT | |
- name: Set up QEMU | |
uses: docker/[email protected] | |
- name: Set up Docker Buildx | |
uses: docker/setup-buildx-action@v3 | |
- name: Docker meta | |
id: meta | |
uses: docker/metadata-action@v5 | |
with: | |
images: ${{ env.DOCKER_PREFIX }}-${{ matrix.EXTENSION }} | |
tags: | | |
type=sha,prefix=${{ matrix.PYTHON_VERSION }}- | |
type=semver,pattern={{version}},prefix=${{ matrix.PYTHON_VERSION }}- | |
type=raw,value=latest,enable=${{ github.ref == 'refs/heads/main' }},prefix=${{ matrix.PYTHON_VERSION }}- | |
- name: Build and push | |
uses: docker/build-push-action@v6 | |
with: | |
build-args: | | |
RENKU_BASE=${{ env.DOCKER_PREFIX }}-py:${{ matrix.PYTHON_VERSION }}-${{ steps.vars.outputs.sha_short }} | |
context: docker/${{ matrix.EXTENSION }} | |
labels: ${{ steps.meta.outputs.labels }} | |
push: true | |
tags: ${{ steps.meta.outputs.tags }} | |
cache-from: type=gha | |
provenance: false | |
platforms: linux/amd64,linux/arm64 | |
build-matlab-ext: | |
needs: build-py | |
runs-on: ubuntu-latest | |
strategy: | |
fail-fast: true | |
matrix: | |
include: | |
- EXTENSION: matlab-jupyter | |
PYTHON_VERSION: "3.10" | |
- EXTENSION: matlab-jupyter | |
PYTHON_VERSION: "3.11" | |
steps: | |
- name: Docker Login | |
uses: Azure/docker-login@v1 | |
with: | |
username: ${{ secrets.RENKU_DOCKER_USERNAME }} | |
password: ${{ secrets.RENKU_DOCKER_PASSWORD }} | |
- uses: actions/checkout@v4 | |
- name: Set outputs | |
id: vars | |
run: | | |
sha_short=$(git rev-parse --short HEAD) | |
echo "sha_short=$sha_short" >> $GITHUB_OUTPUT | |
- name: Set up QEMU | |
uses: docker/[email protected] | |
- name: Set up Docker Buildx | |
uses: docker/setup-buildx-action@v3 | |
- name: Docker meta | |
id: meta | |
uses: docker/metadata-action@v5 | |
with: | |
images: ${{ env.DOCKER_PREFIX }}-${{ matrix.EXTENSION }} | |
tags: | | |
type=sha,prefix=${{ matrix.PYTHON_VERSION }}- | |
type=semver,pattern={{version}},prefix=${{ matrix.PYTHON_VERSION }}- | |
type=raw,value=latest,enable=${{ github.ref == 'refs/heads/main' }},prefix=${{ matrix.PYTHON_VERSION }}- | |
- name: Build and push | |
uses: docker/build-push-action@v6 | |
with: | |
build-args: | | |
RENKU_BASE=${{ env.DOCKER_PREFIX }}-py:${{ matrix.PYTHON_VERSION }}-${{ steps.vars.outputs.sha_short }} | |
context: docker/${{ matrix.EXTENSION }} | |
labels: ${{ steps.meta.outputs.labels }} | |
push: true | |
tags: ${{ steps.meta.outputs.tags }} | |
cache-from: type=gha | |
provenance: false | |
platforms: linux/amd64 | |
build-vnc-ext: | |
needs: build-py-ext | |
runs-on: ubuntu-latest | |
strategy: | |
fail-fast: true | |
matrix: | |
VNC-EXTENSION: | |
- matlab | |
- qgis | |
steps: | |
- name: Docker Login | |
uses: docker/login-action@v3 | |
with: | |
username: ${{ secrets.RENKU_DOCKER_USERNAME }} | |
password: ${{ secrets.RENKU_DOCKER_PASSWORD }} | |
- name: Set up Docker Buildx | |
uses: docker/setup-buildx-action@v3 | |
- uses: actions/checkout@v4 | |
- name: Set outputs | |
id: vars | |
run: | | |
sha_short=$(git rev-parse --short HEAD) | |
echo "sha_short=$sha_short" >> $GITHUB_OUTPUT | |
echo "renku_base=${DOCKER_PREFIX}-py:${DEFAULT_PYTHON_VERSION}-${sha_short}" >> $GITHUB_OUTPUT | |
- name: Docker meta | |
id: meta | |
uses: docker/metadata-action@v5 | |
with: | |
images: ${{ env.DOCKER_PREFIX }}-${{ matrix.VNC-EXTENSION }} | |
tags: | | |
type=sha,prefix= | |
type=semver,pattern={{version}},prefix= | |
type=raw,value=latest,enable=${{ github.ref == 'refs/heads/main' }},prefix= | |
- name: Build and push | |
uses: docker/build-push-action@v6 | |
with: | |
build-args: | | |
BASE_IMAGE=${{ env.DOCKER_PREFIX }}-vnc:${{ env.DEFAULT_PYTHON_VERSION }}-${{ steps.vars.outputs.sha_short }} | |
context: docker/${{ matrix.VNC-EXTENSION }} | |
labels: ${{ steps.meta.outputs.labels }} | |
push: true | |
tags: ${{ steps.meta.outputs.tags }} | |
cache-from: type=gha | |
provenance: false | |
build-julia-ext: | |
needs: build-py | |
runs-on: ubuntu-latest | |
strategy: | |
fail-fast: true | |
matrix: | |
include: | |
- JULIA_VERSION: "1.7.1" | |
JULIA_CHECKSUM: "44658e9c7b45e2b9b5b59239d190cca42de05c175ea86bc346c294a8fe8d9f11" | |
- JULIA_VERSION: "1.8.5" | |
JULIA_CHECKSUM: "e71a24816e8fe9d5f4807664cbbb42738f5aa9fe05397d35c81d4c5d649b9d05" | |
- JULIA_VERSION: "1.9.0" | |
JULIA_CHECKSUM: "00c614466ef9809c2eb23480e38d196a2c577fff2730c4f83d135b913d473359" | |
steps: | |
- name: Docker Login | |
uses: docker/login-action@v3 | |
with: | |
username: ${{ secrets.RENKU_DOCKER_USERNAME }} | |
password: ${{ secrets.RENKU_DOCKER_PASSWORD }} | |
- uses: actions/checkout@v4 | |
- name: Set up QEMU | |
uses: docker/[email protected] | |
- name: Set up Docker Buildx | |
uses: docker/setup-buildx-action@v3 | |
- name: Set outputs | |
id: vars | |
run: | | |
sha_short=$(git rev-parse --short HEAD) | |
echo "sha_short=$sha_short" >> $GITHUB_OUTPUT | |
echo "renku_base=${DOCKER_PREFIX}-py:${DEFAULT_PYTHON_VERSION}-${sha_short}" >> $GITHUB_OUTPUT | |
- name: Docker meta | |
id: meta | |
uses: docker/metadata-action@v5 | |
with: | |
images: ${{ env.DOCKER_PREFIX }}-julia | |
tags: | | |
type=sha,prefix=${{ matrix.JULIA_VERSION }}- | |
type=semver,pattern={{version}},prefix=${{ matrix.JULIA_VERSION }}- | |
type=raw,value=latest,enable=${{ github.ref == 'refs/heads/main' && matrix.JULIA_VERSION == '1.9.0' }} | |
- name: Build and load | |
uses: docker/build-push-action@v6 | |
with: | |
build-args: | | |
RENKU_BASE=${{ steps.vars.outputs.renku_base }} | |
JULIA_VERSION_ARG=${{ matrix.JULIA_VERSION }} | |
JULIA_CHECKSUM=${{ matrix.JULIA_CHECKSUM }} | |
context: docker/julia | |
labels: ${{ steps.meta.outputs.labels }} | |
load: true | |
tags: ${{ steps.meta.outputs.tags }} | |
cache-from: type=gha | |
cache-to: type=gha | |
provenance: false | |
- name: Image Acceptance Tests | |
uses: cypress-io/github-action@v6 | |
env: | |
TEST_IMAGE_NAME: ${DOCKER_PREFIX}-julia:${{ matrix.JULIA_VERSION }}-${{ steps.vars.outputs.sha_short }} | |
TEST_USER_NAME: jovyan | |
TEST_SPEC: jupyterlab.cy.ts | |
with: | |
working-directory: tests | |
command: npx mocha -r ts-node/register index.ts | |
- name: Build and push | |
uses: docker/build-push-action@v6 | |
with: | |
build-args: | | |
RENKU_BASE=${{ steps.vars.outputs.renku_base }} | |
context: docker/julia | |
labels: ${{ steps.meta.outputs.labels }} | |
push: true | |
tags: ${{ steps.meta.outputs.tags }} | |
cache-from: type=gha | |
provenance: false | |
build-r-ubuntu: | |
needs: build-py | |
runs-on: ubuntu-latest | |
strategy: | |
fail-fast: false | |
matrix: | |
include: | |
- RVERSION: 4.1.0 | |
BASE_IMAGE_NAME: rocker/verse | |
EXTENSION: r | |
RSTUDIO_VERSION: 2023.03.2+454 | |
- RVERSION: 4.1.1 | |
BASE_IMAGE_NAME: rocker/verse | |
EXTENSION: r | |
RSTUDIO_VERSION: 2023.03.2+454 | |
- RVERSION: 4.1.2 | |
BASE_IMAGE_NAME: rocker/verse | |
EXTENSION: r | |
RSTUDIO_VERSION: 2023.03.2+454 | |
- RVERSION: 4.2.0 | |
BASE_IMAGE_NAME: rocker/verse | |
EXTENSION: r | |
RSTUDIO_VERSION: 2023.03.2+454 | |
- RVERSION: 4.2.3 | |
BASE_IMAGE_NAME: rocker/verse | |
EXTENSION: r | |
RSTUDIO_VERSION: 2023.03.2+454 | |
- RVERSION: 4.3.1 | |
BASE_IMAGE_NAME: rocker/verse | |
EXTENSION: r | |
RSTUDIO_VERSION: 2023.12.1+402 | |
- RVERSION: devel | |
BASE_IMAGE_NAME: rocker/verse | |
EXTENSION: r | |
RSTUDIO_VERSION: 2023.12.1+402 | |
- RVERSION: RELEASE_3_14 | |
BASE_IMAGE_NAME: bioconductor/bioconductor_docker | |
EXTENSION: bioc | |
RSTUDIO_VERSION: 2023.03.2+454 | |
- RVERSION: RELEASE_3_15 | |
BASE_IMAGE_NAME: bioconductor/bioconductor_docker | |
EXTENSION: bioc | |
RSTUDIO_VERSION: 2023.03.2+454 | |
- RVERSION: RELEASE_3_16 | |
BASE_IMAGE_NAME: bioconductor/bioconductor_docker | |
EXTENSION: bioc | |
RSTUDIO_VERSION: 2023.12.1+402 | |
- RVERSION: RELEASE_3_17 | |
BASE_IMAGE_NAME: bioconductor/bioconductor_docker | |
EXTENSION: bioc | |
RSTUDIO_VERSION: 2023.12.1+402 | |
- RVERSION: RELEASE_3_18 | |
BASE_IMAGE_NAME: bioconductor/bioconductor_docker | |
EXTENSION: bioc | |
RSTUDIO_VERSION: 2023.12.1+402 | |
# NOTE: The devel version of bioconductor uses unstable R so it often breaks or fails to build | |
# - RVERSION: devel | |
# BASE_IMAGE_NAME: bioconductor/bioconductor_docker | |
# EXTENSION: bioc | |
steps: | |
- name: Docker Login | |
uses: docker/login-action@v3 | |
with: | |
username: ${{ secrets.RENKU_DOCKER_USERNAME }} | |
password: ${{ secrets.RENKU_DOCKER_PASSWORD }} | |
- uses: actions/checkout@v4 | |
- name: Set up Docker Buildx | |
uses: docker/setup-buildx-action@v3 | |
- name: Set outputs | |
id: vars | |
run: | | |
sha_short=$(git rev-parse --short HEAD) | |
echo "sha_short=$sha_short" >> $GITHUB_OUTPUT | |
echo "renku_base=${DOCKER_PREFIX}-py:${DEFAULT_PYTHON_VERSION}-${sha_short}" >> $GITHUB_OUTPUT | |
- name: Docker meta | |
id: meta | |
uses: docker/metadata-action@v5 | |
with: | |
images: ${{ env.DOCKER_PREFIX }}-${{ matrix.EXTENSION }} | |
tags: | | |
type=sha,prefix=${{ matrix.RVERSION }}- | |
type=semver,pattern={{version}},prefix=${{ matrix.RVERSION }}- | |
type=raw,value=latest,enable=${{ github.ref == 'refs/heads/main' && matrix.RVERSION == 'devel' }} | |
- name: Clean cache | |
run: | | |
df -h | |
rm -rf /opt/hostedtoolcache/* | |
df -h | |
- name: Build and load | |
uses: docker/build-push-action@v6 | |
with: | |
build-args: | | |
RENKU_BASE=${{ steps.vars.outputs.renku_base }} | |
BASE_IMAGE=${{ matrix.BASE_IMAGE_NAME }}:${{ matrix.RVERSION }} | |
RSTUDIO_VERSION_OVERRIDE=${{ matrix.RSTUDIO_VERSION }} | |
context: docker/r | |
labels: ${{ steps.meta.outputs.labels }} | |
load: true | |
tags: ${{ steps.meta.outputs.tags }} | |
cache-from: type=gha | |
provenance: false | |
- name: Image Acceptance Tests | |
uses: cypress-io/github-action@v6 | |
env: | |
TEST_IMAGE_NAME: ${{ env.DOCKER_PREFIX }}-${{ matrix.EXTENSION }}:${{ matrix.RVERSION }}-${{ steps.vars.outputs.sha_short }} | |
TEST_ENV: rstudio | |
TEST_USER_NAME: rstudio | |
TEST_SPEC: rstudio.cy.ts | |
with: | |
working-directory: tests | |
start: docker images | |
command: npx mocha -r ts-node/register index.ts | |
- name: Build and push | |
uses: docker/build-push-action@v6 | |
with: | |
build-args: | | |
RENKU_BASE=${{ steps.vars.outputs.renku_base }} | |
BASE_IMAGE=${{ matrix.BASE_IMAGE_NAME }}:${{ matrix.RVERSION }} | |
RSTUDIO_VERSION_OVERRIDE=${{ matrix.RSTUDIO_VERSION }} | |
context: docker/r | |
labels: ${{ steps.meta.outputs.labels }} | |
push: true | |
tags: ${{ steps.meta.outputs.tags }} | |
cache-from: type=gha | |
provenance: false | |
build-vscode-base: | |
needs: lint | |
runs-on: ubuntu-latest | |
strategy: | |
fail-fast: true | |
matrix: | |
include: | |
- DEBIAN_VERSION: bookworm | |
LATEST: true | |
steps: | |
- name: Docker Login | |
uses: docker/login-action@v3 | |
with: | |
username: ${{ secrets.RENKU_DOCKER_USERNAME }} | |
password: ${{ secrets.RENKU_DOCKER_PASSWORD }} | |
- uses: actions/checkout@v4 | |
- name: Set up QEMU | |
uses: docker/[email protected] | |
- name: Set up Docker Buildx | |
uses: docker/setup-buildx-action@v3 | |
- name: Docker meta | |
id: meta | |
uses: docker/metadata-action@v5 | |
with: | |
images: ${{ env.DOCKER_PREFIX }}-vscode | |
tags: | | |
type=sha,prefix=${{ matrix.DEBIAN_VERSION }}- | |
type=semver,pattern={{version}},prefix=${{ matrix.DEBIAN_VERSION }}- | |
type=raw,value=latest,enable=${{ github.ref == 'refs/heads/main' && matrix.LATEST }} | |
- name: Build and export | |
uses: docker/build-push-action@v6 | |
with: | |
build-args: | | |
BASE_IMAGE=debian:${{ matrix.DEBIAN_VERSION }} | |
cache-from: type=gha | |
cache-to: type=gha,mode=max | |
context: docker/vscode | |
file: docker/vscode/base.Dockerfile | |
labels: ${{ steps.meta.outputs.labels }} | |
push: true | |
tags: ${{ steps.meta.outputs.tags }} | |
provenance: false | |
build-vscode-conda: | |
needs: build-vscode-base | |
runs-on: ubuntu-latest | |
strategy: | |
fail-fast: true | |
matrix: | |
include: | |
- CONDA_VERSION: 24.9.2-0 | |
BASE_DEBIAN_VERSION: bookworm | |
- CONDA_VERSION: latest | |
BASE_DEBIAN_VERSION: bookworm | |
steps: | |
- name: Docker Login | |
uses: docker/login-action@v3 | |
with: | |
username: ${{ secrets.RENKU_DOCKER_USERNAME }} | |
password: ${{ secrets.RENKU_DOCKER_PASSWORD }} | |
- uses: actions/checkout@v4 | |
- name: Set outputs | |
id: vars | |
run: | | |
sha_short=$(git rev-parse --short HEAD) | |
echo "sha_short=$sha_short" >> $GITHUB_OUTPUT | |
echo "renku_base=${DOCKER_PREFIX}-vscode:${{ matrix.BASE_DEBIAN_VERSION }}-${sha_short}" >> $GITHUB_OUTPUT | |
- name: Set up QEMU | |
uses: docker/[email protected] | |
- name: Set up Docker Buildx | |
uses: docker/setup-buildx-action@v3 | |
- name: Docker meta | |
id: meta | |
uses: docker/metadata-action@v5 | |
with: | |
images: ${{ env.DOCKER_PREFIX }}-vscode-conda | |
tags: | | |
type=sha,prefix=${{ matrix.CONDA_VERSION }}- | |
type=semver,pattern={{version}},prefix=${{ matrix.CONDA_VERSION }}- | |
type=raw,value=latest,enable=${{ github.ref == 'refs/heads/main' && matrix.CONDA_VERSION == 'latest' }} | |
- name: Build and export | |
uses: docker/build-push-action@v6 | |
with: | |
build-args: | | |
BASE_IMAGE=${{ steps.vars.outputs.renku_base }} | |
cache-from: type=gha | |
cache-to: type=gha,mode=max | |
context: docker/vscode | |
file: docker/vscode/conda.Dockerfile | |
labels: ${{ steps.meta.outputs.labels }} | |
push: true | |
tags: ${{ steps.meta.outputs.tags }} | |
provenance: false | |
build-vscode-poetry: | |
needs: build-vscode-base | |
runs-on: ubuntu-latest | |
strategy: | |
fail-fast: true | |
matrix: | |
include: | |
- PYTHON_VERSION: 3.12.7 | |
BASE_DEBIAN_VERSION: bookworm | |
PYENV_VERSION: v2.4.17 | |
POETRY_VERSION: 1.8.4 | |
LATEST: true | |
- PYTHON_VERSION: 3.11.10 | |
BASE_DEBIAN_VERSION: bookworm | |
PYENV_VERSION: v2.4.17 | |
POETRY_VERSION: 1.8.4 | |
LATEST: false | |
- PYTHON_VERSION: 3.10.15 | |
BASE_DEBIAN_VERSION: bookworm | |
PYENV_VERSION: v2.4.17 | |
POETRY_VERSION: 1.8.4 | |
LATEST: false | |
steps: | |
- name: Docker Login | |
uses: docker/login-action@v3 | |
with: | |
username: ${{ secrets.RENKU_DOCKER_USERNAME }} | |
password: ${{ secrets.RENKU_DOCKER_PASSWORD }} | |
- uses: actions/checkout@v4 | |
- name: Set outputs | |
id: vars | |
run: | | |
sha_short=$(git rev-parse --short HEAD) | |
echo "sha_short=$sha_short" >> $GITHUB_OUTPUT | |
echo "renku_base=${DOCKER_PREFIX}-vscode:${{ matrix.BASE_DEBIAN_VERSION }}-${sha_short}" >> $GITHUB_OUTPUT | |
- name: Set up QEMU | |
uses: docker/[email protected] | |
- name: Set up Docker Buildx | |
uses: docker/setup-buildx-action@v3 | |
- name: Docker meta | |
id: meta | |
uses: docker/metadata-action@v5 | |
with: | |
images: ${{ env.DOCKER_PREFIX }}-vscode-poetry | |
tags: | | |
type=sha,prefix=py-${{ matrix.PYTHON_VERSION }}- | |
type=semver,pattern={{version}},prefix=py-${{ matrix.PYTHON_VERSION }}- | |
type=raw,value=latest,enable=${{ github.ref == 'refs/heads/main' && matrix.LATEST }} | |
- name: Build and export | |
uses: docker/build-push-action@v6 | |
with: | |
build-args: | | |
BASE_IMAGE=${{ steps.vars.outputs.renku_base }} | |
PYTHON_VERSION=${{ matrix.PYTHON_VERSION }} | |
POETRY_VERSION=${{ matrix.POETRY_VERSION }} | |
PYENV_VERSION=${{ matrix.PYENV_VERSION }} | |
cache-from: type=gha | |
cache-to: type=gha,mode=max | |
context: docker/vscode | |
file: docker/vscode/poetry.Dockerfile | |
labels: ${{ steps.meta.outputs.labels }} | |
push: true | |
tags: ${{ steps.meta.outputs.tags }} | |
provenance: false | |
build-vscode-r: | |
needs: build-vscode-base | |
runs-on: ubuntu-latest | |
strategy: | |
fail-fast: true | |
matrix: | |
include: | |
- R_VERSION: 4.4.2 | |
BASE_DEBIAN_VERSION: bookworm | |
LATEST: true | |
- R_VERSION: 4.3.3 | |
BASE_DEBIAN_VERSION: bookworm | |
LATEST: false | |
- R_VERSION: 4.2.3 | |
BASE_DEBIAN_VERSION: bookworm | |
LATEST: false | |
steps: | |
- name: Docker Login | |
uses: docker/login-action@v3 | |
with: | |
username: ${{ secrets.RENKU_DOCKER_USERNAME }} | |
password: ${{ secrets.RENKU_DOCKER_PASSWORD }} | |
- uses: actions/checkout@v4 | |
- name: Set outputs | |
id: vars | |
run: | | |
sha_short=$(git rev-parse --short HEAD) | |
echo "sha_short=$sha_short" >> $GITHUB_OUTPUT | |
echo "renku_base=${DOCKER_PREFIX}-vscode:${{ matrix.BASE_DEBIAN_VERSION }}-${sha_short}" >> $GITHUB_OUTPUT | |
- name: Set up QEMU | |
uses: docker/[email protected] | |
- name: Set up Docker Buildx | |
uses: docker/setup-buildx-action@v3 | |
- name: Docker meta | |
id: meta | |
uses: docker/metadata-action@v5 | |
with: | |
images: ${{ env.DOCKER_PREFIX }}-vscode-r | |
tags: | | |
type=sha,prefix=${{ matrix.R_VERSION }}- | |
type=semver,pattern={{version}},prefix=${{ matrix.R_VERSION }}- | |
type=raw,value=latest,enable=${{ github.ref == 'refs/heads/main' && matrix.LATEST }} | |
- name: Build and export | |
uses: docker/build-push-action@v6 | |
with: | |
build-args: | | |
BASE_IMAGE=${{ steps.vars.outputs.renku_base }} | |
R_VERSION=${{ matrix.R_VERSION }} | |
cache-from: type=gha | |
cache-to: type=gha,mode=max | |
context: docker/vscode | |
file: docker/vscode/R.Dockerfile | |
labels: ${{ steps.meta.outputs.labels }} | |
push: true | |
tags: ${{ steps.meta.outputs.tags }} | |
provenance: false |