From 63f66238aa1cc092676fafc764125a05d9118fa0 Mon Sep 17 00:00:00 2001 From: Eric Timmons <etimmons@mit.edu> Date: Tue, 3 Nov 2020 20:32:14 -0500 Subject: [PATCH] Move gitlab-ci to a common repo for all images --- .gitlab-ci.yml | 235 +------------------------------------------------ 1 file changed, 2 insertions(+), 233 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 972c5bd..53252f4 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -1,240 +1,9 @@ include: - - template: 'Workflows/Branch-Pipelines.gitlab-ci.yml' - -stages: - - fixup manifest - - build - - push - - put shared - - readme + - project: 'cl-docker-images/ci-helpers' + file: '/cl-docker-images-default-pipeline.yml' variables: CANONICAL_NAMESPACE: daewok CL_DOCKER_IMAGES_AMD64: "1" CL_DOCKER_IMAGES_ARM64V8: "1" CL_DOCKER_IMAGES_WINAMD64: "1" - -############################################################################## -# Fixup manifest - -Fixup manifest: - image: alpine:latest - stage: fixup manifest - script: - - mkdir -p build - - | - echo "GitCommit: $CI_COMMIT_SHA" > "build/$CI_PROJECT_NAME" - - | - echo "GitFetch: refs/heads/$CI_COMMIT_REF_NAME" >> "build/$CI_PROJECT_NAME" - - cat "$CI_PROJECT_NAME" >> "build/$CI_PROJECT_NAME" - artifacts: - paths: - - build/ - - -############################################################################## -# Build - -.Bashbrew build Linux: - stage: build - variables: - BASHBREW_NAMESPACE: $CANONICAL_NAMESPACE - BASHBREW_LIBRARY: $CI_PROJECT_DIR - BASHBREW_CACHE: $CI_PROJECT_DIR/cache/bashbrew - BASHBREW_DEBUG: "true" - script: - - docker info - - mkdir -p cache - - cp "build/$CI_PROJECT_NAME" "$CI_PROJECT_NAME" - - | - parents="$(bashbrew cat --format '{{- range $.Entries -}} - {{- if not ($.SkipConstraints .) -}} - {{- $.DockerFroms . | join "\n" -}} - {{- "\n" -}} - {{- end -}} - {{- end -}}' $CI_PROJECT_NAME \ - | { grep -vE '^$|^scratch$|^'"$CANONICAL_NAMESPACE/$CI_PROJECT_NAME"'(:|$)' || true; } \ - | sort -u)" - - echo "$parents" - - | - for parent in $parents; do - echo "Pulling $parent" - docker pull --platform=$DOCKER_PLATFORM "$parent" - done - - retry -t 3 -d 60 -- bashbrew build $CI_PROJECT_NAME - - docker images - - bashbrew tag --target-namespace=$CANONICAL_NAMESPACE$ARCH$CI_PIPELINE_IID $CI_PROJECT_NAME - cache: - paths: - - cache - key: $ARCH - -.Bashbrew build win: - stage: build - variables: - BASHBREW_NAMESPACE: $CANONICAL_NAMESPACE - BASHBREW_LIBRARY: $CI_PROJECT_DIR - BASHBREW_CACHE: $CI_PROJECT_DIR/cache/bashbrew - BASHBREW_DEBUG: "true" - ARCH: winamd64 - BASHBREW_ARCH: windows-amd64 - PARENT_IMAGES: "openjdk:15-windowsservercore-1809;openjdk:11-windowsservercore-1809;openjdk:8-windowsservercore-1809;openjdk:15-windowsservercore-ltsc2016;openjdk:11-windowsservercore-ltsc2016;openjdk:8-windowsservercore-ltsc2016" - script: - - docker info - - cp "build/$CI_PROJECT_NAME" "$CI_PROJECT_NAME" - # Make the user specify the parent images. I don't feel like figuring out - # how to automatically figure them out using powershell. - - $parentArray = $PARENT_IMAGES.split(";") - - foreach ($parent in $parentArray){ docker pull $parent } - - bashbrew build $CI_PROJECT_NAME - - docker images - - bashbrew tag --target-namespace=$CANONICAL_NAMESPACE$ARCH$CI_PIPELINE_IID $CI_PROJECT_NAME - cache: - paths: - - cache - key: $ARCH - tags: - - bashbrew-winamd64 - -Bashbrew build - amd64: - extends: .Bashbrew build Linux - variables: - ARCH: amd64 - BASHBREW_ARCH: amd64 - DOCKER_PLATFORM: linux/amd64 - rules: - - if: $CL_DOCKER_IMAGES_AMD64 - tags: - - bashbrew-amd64 - -Bashbrew build - arm64: - extends: .Bashbrew build Linux - variables: - ARCH: arm64v8 - BASHBREW_ARCH: arm64v8 - DOCKER_PLATFORM: linux/arm64 - rules: - - if: $CL_DOCKER_IMAGES_ARM64V8 - tags: - - bashbrew-arm64v8 - -Bashbrew build - arm32v7: - extends: .Bashbrew build Linux - variables: - ARCH: arm32v7 - BASHBREW_ARCH: arm32v7 - DOCKER_PLATFORM: linux/arm/v7 - rules: - - if: $CL_DOCKER_IMAGES_ARM32V7 - tags: - - bashbrew-arm32v7 - -Bashbrew build - winamd64: - extends: .Bashbrew build win - rules: - - if: $CL_DOCKER_IMAGES_WINAMD64 - - -############################################################################## -# Push - -.Bashbrew push Linux: - stage: push - variables: - BASHBREW_NAMESPACE: $CANONICAL_NAMESPACE - BASHBREW_LIBRARY: $CI_PROJECT_DIR - BASHBREW_CACHE: $CI_PROJECT_DIR/cache/bashbrew - BASHBREW_DEBUG: "true" - script: - - docker info - - mkdir -p cache - - cp "build/$CI_PROJECT_NAME" "$CI_PROJECT_NAME" - - bashbrew tag --namespace=$CANONICAL_NAMESPACE$ARCH$CI_PIPELINE_IID --target-namespace=$CANONICAL_NAMESPACE$ARCH $CI_PROJECT_NAME - - retry -t 3 -d 60 -- bashbrew --namespace=$CANONICAL_NAMESPACE$ARCH push $CI_PROJECT_NAME - cache: - paths: - - cache - key: $ARCH - -.Bashbrew push win: - stage: push - variables: - BASHBREW_NAMESPACE: $CANONICAL_NAMESPACE - BASHBREW_LIBRARY: $CI_PROJECT_DIR - BASHBREW_CACHE: $CI_PROJECT_DIR/cache/bashbrew - BASHBREW_DEBUG: "true" - ARCH: winamd64 - BASHBREW_ARCH: windows-amd64 - script: - - docker info - - cp "build/$CI_PROJECT_NAME" "$CI_PROJECT_NAME" - - bashbrew tag --namespace=$CANONICAL_NAMESPACE$ARCH$CI_PIPELINE_IID --target-namespace=$CANONICAL_NAMESPACE$ARCH $CI_PROJECT_NAME - - bashbrew --namespace=$CANONICAL_NAMESPACE$ARCH push $CI_PROJECT_NAME - cache: - paths: - - cache - key: $ARCH - tags: - - bashbrew-winamd64 - -Bashbrew push - amd64: - extends: .Bashbrew push Linux - variables: - ARCH: amd64 - BASHBREW_ARCH: amd64 - DOCKER_PLATFORM: linux/amd64 - rules: - - if: ($CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH) && $CL_DOCKER_IMAGES_AMD64 - tags: - - bashbrew-amd64 - -Bashbrew push - arm64: - extends: .Bashbrew push Linux - variables: - ARCH: arm64v8 - BASHBREW_ARCH: arm64v8 - DOCKER_PLATFORM: linux/arm64 - rules: - - if: ($CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH) && $CL_DOCKER_IMAGES_ARM64V8 - tags: - - bashbrew-arm64v8 - -Bashbrew push - arm32v7: - extends: .Bashbrew push Linux - variables: - ARCH: arm32v7 - BASHBREW_ARCH: arm32v7 - DOCKER_PLATFORM: linux/arm/v7 - rules: - - if: ($CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH) && $CL_DOCKER_IMAGES_ARM32V7 - tags: - - bashbrew-arm32v7 - -Bashbrew push - winamd64: - extends: .Bashbrew push win - rules: - - if: ($CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH) && $CL_DOCKER_IMAGES_WINAMD64 - -############################################################################## -# Put shared - -Bashbrew put-shared: - stage: put shared - variables: - BASHBREW_NAMESPACE: $CANONICAL_NAMESPACE - BASHBREW_LIBRARY: $CI_PROJECT_DIR - BASHBREW_CACHE: $CI_PROJECT_DIR/cache/bashbrew - BASHBREW_DEBUG: "true" - script: - - docker info - - mkdir -p cache - - cp "build/$CI_PROJECT_NAME" "$CI_PROJECT_NAME" - - retry -t 3 -d 60 -- bashbrew --arch-namespace amd64=${CANONICAL_NAMESPACE}amd64 --arch-namespace arm32v7=${CANONICAL_NAMESPACE}arm32v7 --arch-namespace arm64v8=${CANONICAL_NAMESPACE}arm64v8 --arch-namespace windows-amd64=${CANONICAL_NAMESPACE}winamd64 put-shared "$CI_PROJECT_NAME" - tags: - - bashbrew-amd64 - rules: - - if: ($CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH) - cache: - paths: - - cache - key: put-shared -- GitLab