Skip to content
Snippets Groups Projects

Rework image matrix and export

Merged Bryan BRANCOTTE requested to merge rework-image-matrix-and-export into docker-images
+ 71
17
@@ -4,6 +4,7 @@ image: docker:24
variables:
LATEST_UBUNTU_VERSION: "jammy"
LATEST_DEBIAN_VERSION: "bookworm"
@@ -16,7 +17,11 @@ variables:
- docker --version
- |
if [ "${LANGUAGE}" == "python" ]; then
LANGUAGE_VERSION="${PYTHON_VERSION}"
if [ "${LATEST_DEBIAN_VERSION}" == "${DEBIAN_VERSION}" ]; then
LANGUAGE_VERSION="${PYTHON_VERSION}${PYTHON_VERSION_SUFFIX}"
else
LANGUAGE_VERSION="${PYTHON_VERSION}${PYTHON_VERSION_SUFFIX}-${DEBIAN_VERSION}"
fi
else
if [ "${LATEST_UBUNTU_VERSION}" == "${UBUNTU_VERSION}" ]; then
LANGUAGE_VERSION="${R_VERSION}"
@@ -38,35 +43,47 @@ variables:
- apk add gettext
- envsubst < ./Dockerfile.$LANGUAGE > Dockerfile
# pull the latest build of the targeted version of the current branch
- docker pull "$CI_REGISTRY_IMAGE/${LANGUAGE}/$CI_COMMIT_REF_SLUG:$VERSIONS_TAG" || true
- docker pull "$CI_REGISTRY_IMAGE/$CI_COMMIT_REF_SLUG/${LANGUAGE}:$VERSIONS_TAG" || true
# pull the latest build of the target version of the main branch
- docker pull "$CI_REGISTRY_IMAGE/${LANGUAGE}:$VERSIONS_TAG" || true
# pull the latest build of this branch
- docker pull "$CI_REGISTRY_IMAGE/${LANGUAGE}/$CI_COMMIT_REF_SLUG:latest" || true
- docker pull "$CI_REGISTRY_IMAGE/$CI_COMMIT_REF_SLUG/${LANGUAGE}:latest" || true
# build the image while passing commit SHA and versions, and tagging the image with them
- docker build
--build-arg BUILDKIT_INLINE_CACHE=1
--build-arg R_VERSION
--build-arg SHINY_SERVER_VERSION
--cache-from "$CI_REGISTRY_IMAGE/${LANGUAGE}/$CI_COMMIT_REF_SLUG:$VERSIONS_TAG"
--cache-from "$CI_REGISTRY_IMAGE/$CI_COMMIT_REF_SLUG/${LANGUAGE}:$VERSIONS_TAG"
--cache-from "$CI_REGISTRY_IMAGE/${LANGUAGE}:$VERSIONS_TAG"
--tag "$CI_REGISTRY_IMAGE/${LANGUAGE}/$CI_COMMIT_REF_SLUG:latest"
--tag "$CI_REGISTRY_IMAGE/$CI_COMMIT_REF_SLUG/${LANGUAGE}:latest"
--tag "$CI_REGISTRY_IMAGE/${LANGUAGE}:$VERSIONS_TAG"
--tag "$CI_REGISTRY_IMAGE/${LANGUAGE}/$CI_COMMIT_REF_SLUG:$VERSIONS_TAG"
--tag "$CI_REGISTRY_IMAGE/${LANGUAGE}/$CI_COMMIT_REF_SLUG:$VERSIONS_TAG--$CI_COMMIT_SHORT_SHA"
--tag "$CI_REGISTRY_IMAGE/$CI_COMMIT_REF_SLUG/${LANGUAGE}:$VERSIONS_TAG"
--tag "$CI_REGISTRY_IMAGE/$CI_COMMIT_REF_SLUG/${LANGUAGE}:$VERSIONS_TAG--$CI_COMMIT_SHORT_SHA"
-f Dockerfile
./
# push image as latest for the current branch
- docker push "$CI_REGISTRY_IMAGE/${LANGUAGE}/$CI_COMMIT_REF_SLUG:latest"
- docker push "$CI_REGISTRY_IMAGE/$CI_COMMIT_REF_SLUG/${LANGUAGE}:latest"
# push image tagged with its versions
- docker push "$CI_REGISTRY_IMAGE/${LANGUAGE}/$CI_COMMIT_REF_SLUG:$VERSIONS_TAG"
- IMAGE_PATH="$CI_REGISTRY_IMAGE/$CI_COMMIT_REF_SLUG/${LANGUAGE}:$VERSIONS_TAG"
- docker push "${IMAGE_PATH}"
# push image tagged with its versions and the commit sha (debug purpose)
- docker push "$CI_REGISTRY_IMAGE/${LANGUAGE}/$CI_COMMIT_REF_SLUG:$VERSIONS_TAG--$CI_COMMIT_SHORT_SHA"
- docker push "$CI_REGISTRY_IMAGE/$CI_COMMIT_REF_SLUG/${LANGUAGE}:$VERSIONS_TAG--$CI_COMMIT_SHORT_SHA"
- |
if [ "docker-images" == "${CI_COMMIT_REF_SLUG}" ]; then
# push image tagged with its versions
docker push "$CI_REGISTRY_IMAGE/${LANGUAGE}:$VERSIONS_TAG"
IMAGE_PATH="$CI_REGISTRY_IMAGE/${LANGUAGE}:$VERSIONS_TAG"
docker push "${IMAGE_PATH}"
fi
- IMAGE_PATH="$CI_REGISTRY_IMAGE/${LANGUAGE}:$VERSIONS_TAG"
- CSV_LINE="${IMAGE_PATH},${UBUNTU_VERSION}${DEBIAN_VERSION},${PYTHON_VERSION}${R_VERSION},${SHINY_SERVER_VERSION}"
- MD5SUM=$(echo $CSV_LINE | md5sum | head -c 32)
- mkdir -p image-list-fragments/
- echo $CSV_LINE > image-list-fragments/${MD5SUM}.csv
artifacts:
when: always
paths:
- image-list-fragments
expire_in: 1 week
@@ -76,12 +93,16 @@ build_python:
matrix:
- LANGUAGE: ["python"]
PYTHON_VERSION: [
"3.9-slim-bullseye",
"3.9-slim",
"3.10-slim-bullseye",
"3.10-slim",
"3.11-slim-bullseye",
"3.11-slim",
"3.9",
"3.10",
"3.11",
]
PYTHON_VERSION_SUFFIX: [
"-slim"
]
DEBIAN_VERSION: [
"bookworm",
"bullseye",
]
SHINY_SERVER_VERSION: [
"1.5.21.1006",
@@ -113,6 +134,39 @@ build_r:
publish_listing:
needs:
- build_r
- build_python
image: docker:24-git
before_script:
- git fetch origin docs
- git checkout docs
script:
- echo "Built image,Base os,R/Python,shiny-server" > image_list.csv
- cat image-list-fragments/*.csv >> image_list.csv
- WHEN=$(LC_TIME="en_US.utf8" date +"%b %G")
- sed "s/%%date%%/${WHEN}/g" source/user_guide/image_list.rst > image_list.rst
artifacts:
when: always
paths:
- image_list.csv
- image_list.rst
expire_in: 1 year
# update_docs:
# only:
# - docker-images
# - rework-image-matrix-and-export
# needs: []
# trigger:
# - project: hub/shiny-k8s
# branch: docs
trigger_r_example:
needs: ["build_r"]
trigger:
Loading