diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index a794d5b6fde771d34c406f1b91284aa8728a7435..18d7b30dd572e8e954e264496c9e730fd797c744 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -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: