From 918cb6fba26c83fdbcb4819c42800af8d3ea6f68 Mon Sep 17 00:00:00 2001 From: Eric Timmons <etimmons@mit.edu> Date: Tue, 3 Nov 2020 17:00:25 -0500 Subject: [PATCH] Add windows CI jobs --- .gitlab-ci.yml | 112 +++++++++++++++++++++++++++++++++++++------------ 1 file changed, 86 insertions(+), 26 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index b9e659a..aa21a5f 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -2,16 +2,35 @@ include: - template: 'Workflows/MergeRequest-Pipelines.gitlab-ci.yml' stages: + - fixup manifest - build - push - put shared - readme -# Set these vars: -# - CANONICAL_NAMESPACE -# - CL_DOCKER_IMAGES_AMD64 -# - CL_DOCKER_IMAGES_ARM64V8 -# - CL_DOCKER_IMAGES_ARM32V7 +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 @@ -26,13 +45,7 @@ stages: script: - docker info - mkdir -p cache - - mv "$CI_PROJECT_NAME" "$CI_PROJECT_NAME.tmp" - - | - echo "GitCommit: $CI_COMMIT_SHA" > "$CI_PROJECT_NAME" - - | - echo "GitFetch: refs/heads/$CI_COMMIT_REF_NAME" >> "$CI_PROJECT_NAME" - - cat "$CI_PROJECT_NAME.tmp" >> "$CI_PROJECT_NAME" - - rm "$CI_PROJECT_NAME.tmp" + - cp "build/$CI_PROJECT_NAME" "$CI_PROJECT_NAME" - | parents="$(bashbrew cat --format '{{- range $.Entries -}} {{- if not ($.SkipConstraints .) -}} @@ -56,6 +69,34 @@ stages: - 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 + - mkdir -p cache + - 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_PROJECT_NAME + cache: + paths: + - cache + key: $ARCH + tags: + - bashbrew-winamd64 + Bashbrew build - amd64: extends: .Bashbrew build Linux variables: @@ -89,6 +130,12 @@ Bashbrew build - arm32v7: tags: - bashbrew-arm32v7 +Bashbrew build - winamd64: + extends: .Bashbrew build win + rules: + - if: $CL_DOCKER_IMAGES_WINAMD64 + + ############################################################################## # Push @@ -102,19 +149,33 @@ Bashbrew build - arm32v7: script: - docker info - mkdir -p cache - - mv "$CI_PROJECT_NAME" "$CI_PROJECT_NAME.tmp" - - | - echo "GitCommit: $CI_COMMIT_SHA" > "$CI_PROJECT_NAME" - - | - echo "GitFetch: refs/heads/$CI_COMMIT_REF_NAME" >> "$CI_PROJECT_NAME" - - cat "$CI_PROJECT_NAME.tmp" >> "$CI_PROJECT_NAME" - - rm "$CI_PROJECT_NAME.tmp" + - cp "build/$CI_PROJECT_NAME" "$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 + - mkdir -p cache + - bashbrew --namespace=$CANONICAL_NAMESPACE$ARCH push $REPO + cache: + paths: + - cache + key: $ARCH + tags: + - bashbrew-winamd64 + Bashbrew push - amd64: extends: .Bashbrew push Linux variables: @@ -148,6 +209,11 @@ Bashbrew push - arm32v7: tags: - bashbrew-arm32v7 +Bashbrew push - winamd64: + extends: .Bashbrew push win + rules: + - if: $CL_DOCKER_IMAGES_WINAMD64 + ############################################################################## # Put shared @@ -161,13 +227,7 @@ Bashbrew put-shared: script: - docker info - mkdir -p cache - - mv "$CI_PROJECT_NAME" "$CI_PROJECT_NAME.tmp" - - | - echo "GitCommit: $CI_COMMIT_SHA" > "$CI_PROJECT_NAME" - - | - echo "GitFetch: refs/heads/$CI_COMMIT_REF_NAME" >> "$CI_PROJECT_NAME" - - cat "$CI_PROJECT_NAME.tmp" >> "$CI_PROJECT_NAME" - - rm "$CI_PROJECT_NAME.tmp" + - 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 -- GitLab