Skip to content

fix: save extensions in workdir #714

fix: save extensions in workdir

fix: save extensions in workdir #714

# 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: debian
- 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 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.DEBIAN_VERSION == 'debian' }}
- name: Build and export
uses: docker/build-push-action@v6
with:
build-args: |
BASE_IMAGE=mcr.microsoft.com/devcontainers/base:${{ 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