Skip to content
GitLab
Explore
Sign in
Register
Primary navigation
Search or go to…
Project
A
abcl
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Wiki
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Build
Pipelines
Jobs
Pipeline schedules
Artifacts
Deploy
Releases
Package Registry
Container Registry
Model registry
Operate
Environments
Terraform modules
Monitor
Incidents
Service Desk
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Terms and privacy
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
Robert Goldman
abcl
Commits
f7484ba7
Commit
f7484ba7
authored
4 years ago
by
Eric Timmons
Browse files
Options
Downloads
Patches
Plain Diff
Update CI
parent
d8146d3b
No related branches found
Branches containing commit
No related tags found
No related merge requests found
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
.gitlab-ci.yml
+9
-309
9 additions, 309 deletions
.gitlab-ci.yml
with
9 additions
and
309 deletions
.gitlab-ci.yml
+
9
−
309
View file @
f7484ba7
# include:
# - project: 'cl-docker-images/ci-helpers'
# file: '/cl-docker-images-default-pipeline.yml'
include
:
-
template
:
'
Workflows/Branch-Pipelines.gitlab-ci.yml'
-
project
:
'
cl-docker-images/ci-helpers'
file
:
'
/cl-docker-images-default-pipeline-v2.yml'
variables
:
CANONICAL_NAMESPACE
:
daewok
CL_DOCKER_IMAGES_AMD64
:
"
1"
CL_DOCKER_IMAGES_ARM64V8
:
"
1"
CL_DOCKER_IMAGES_WINAMD64
:
"
1"
WINDOWS_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"
stages
:
-
update nightly
-
generate manifest
-
build
-
push
-
put shared
-
readme
##############################################################################
# Nightly version updater
Update nightly images
:
stage
:
update nightly
image
:
alpine
script
:
-
apk add git openssh-client jq curl ca-certificates bash
-
./update.sh nightly
-
|
if git diff --quiet; then
exit 0
fi
-
NEW_COMMIT="$(grep -e "^ENV ABCL_COMMIT" nightly/buster/jdk-11/Dockerfile | cut -d" " -f 3)"
-
mkdir -p ~/.ssh
-
ssh-keyscan "$CI_SERVER_HOST" > ~/.ssh/known_hosts
-
git remote add origin-ssh "git@$CI_SERVER_HOST:$CI_PROJECT_PATH.git"
-
git add .
-
git config user.name "$GITLAB_USER_NAME"
-
git config user.email "$GITLAB_USER_EMAIL"
-
git commit -m "Update nightly to commit $NEW_COMMIT"
-
chmod 600 $NIGHTLY_DEPLOY_PRIVATE_KEY
-
GIT_SSH_COMMAND="ssh -i $NIGHTLY_DEPLOY_PRIVATE_KEY" git push origin-ssh HEAD:$CI_COMMIT_BRANCH
rules
:
-
if
:
'
$CI_PIPELINE_SOURCE
==
"schedule"
&&
$SCHEDULE_TYPE
==
"nightly-update"'
##############################################################################
# Fixup manifest
Generate manifest
:
stage
:
generate manifest
script
:
-
mkdir -p build
-
|
echo "GitFetch: refs/heads/$CI_COMMIT_REF_NAME" > "build/$CI_PROJECT_NAME"
-
|
./generate-stackbrew-library.sh all >> "build/$CI_PROJECT_NAME"
-
sed -i "s/github.com/gitlab.common-lisp.net/" "build/$CI_PROJECT_NAME"
artifacts
:
paths
:
-
build/
tags
:
-
bashbrew-amd64
rules
:
-
if
:
'
$CI_PIPELINE_SOURCE
==
"schedule"
&&
$SCHEDULE_TYPE
==
"nightly-update"'
when
:
never
-
when
:
on_success
##############################################################################
# Build
.Bashbrew build Linux
:
stage
:
build
variables
:
BASHBREW_NAMESPACE
:
$CANONICAL_NAMESPACE
BASHBREW_LIBRARY
:
$CI_PROJECT_DIR/build
BASHBREW_CACHE
:
$CI_PROJECT_DIR/cache/bashbrew
BASHBREW_DEBUG
:
"
true"
script
:
-
echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin
-
docker info
-
mkdir -p cache
-
|
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/build
BASHBREW_CACHE
:
$CI_PROJECT_DIR/cache/bashbrew
BASHBREW_DEBUG
:
"
true"
ARCH
:
winamd64
BASHBREW_ARCH
:
windows-amd64
script
:
-
echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin
-
docker info
# Make the user specify the parent images. I don't feel like figuring out
# how to automatically figure them out using powershell.
-
$parentArray = $WINDOWS_PARENT_IMAGES.split(";")
-
foreach ($parent in $parentArray){ docker pull $parent }
-
bashbrew --constraint windowsservercore-ltsc2016 --constraint windowsservercore-1809 build $CI_PROJECT_NAME
-
docker images
-
bashbrew --constraint windowsservercore-ltsc2016 --constraint windowsservercore-1809 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
:
'
$CI_PIPELINE_SOURCE
==
"schedule"
&&
$SCHEDULE_TYPE
==
"nightly-update"'
when
:
never
-
if
:
'
$CL_DOCKER_IMAGES_AMD64
&&
$CI_COMMIT_REF_PROTECTED
==
"true"'
tags
:
-
bashbrew-amd64
Bashbrew build - arm64
:
extends
:
.Bashbrew build Linux
variables
:
ARCH
:
arm64v8
BASHBREW_ARCH
:
arm64v8
DOCKER_PLATFORM
:
linux/arm64
rules
:
-
if
:
'
$CI_PIPELINE_SOURCE
==
"schedule"
&&
$SCHEDULE_TYPE
==
"nightly-update"'
when
:
never
-
if
:
'
$CL_DOCKER_IMAGES_ARM64V8
&&
$CI_COMMIT_REF_PROTECTED
==
"true"'
tags
:
-
bashbrew-arm64v8
Bashbrew build - arm32v7
:
extends
:
.Bashbrew build Linux
variables
:
ARCH
:
arm32v7
BASHBREW_ARCH
:
arm32v7
DOCKER_PLATFORM
:
linux/arm/v7
rules
:
-
if
:
'
$CI_PIPELINE_SOURCE
==
"schedule"
&&
$SCHEDULE_TYPE
==
"nightly-update"'
when
:
never
-
if
:
'
$CL_DOCKER_IMAGES_ARM32V7
&&
$CI_COMMIT_REF_PROTECTED
==
"true"'
tags
:
-
bashbrew-arm32v7
Bashbrew build - winamd64
:
extends
:
.Bashbrew build win
rules
:
-
if
:
'
$CI_PIPELINE_SOURCE
==
"schedule"
&&
$SCHEDULE_TYPE
==
"nightly-update"'
when
:
never
-
if
:
'
$CL_DOCKER_IMAGES_WINAMD64
&&
$CI_COMMIT_REF_PROTECTED
==
"true"'
##############################################################################
# Push
.Bashbrew push Linux
:
stage
:
push
variables
:
BASHBREW_NAMESPACE
:
$CANONICAL_NAMESPACE
BASHBREW_LIBRARY
:
$CI_PROJECT_DIR/build
BASHBREW_CACHE
:
$CI_PROJECT_DIR/cache/bashbrew
BASHBREW_DEBUG
:
"
true"
script
:
-
echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin
-
docker info
-
mkdir -p cache
-
bashbrew --namespace=$CANONICAL_NAMESPACE$ARCH$CI_PIPELINE_IID tag --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/build
BASHBREW_CACHE
:
$CI_PROJECT_DIR/cache/bashbrew
BASHBREW_DEBUG
:
"
true"
ARCH
:
winamd64
BASHBREW_ARCH
:
windows-amd64
script
:
-
echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin
-
docker info
-
bashbrew --constraint windowsservercore-ltsc2016 --constraint windowsservercore-1809 --namespace=$CANONICAL_NAMESPACE$ARCH$CI_PIPELINE_IID tag --target-namespace=$CANONICAL_NAMESPACE$ARCH $CI_PROJECT_NAME
-
bashbrew --constraint windowsservercore-ltsc2016 --constraint windowsservercore-1809 --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_PIPELINE_SOURCE
==
"schedule"
&&
$SCHEDULE_TYPE
==
"nightly-update"'
when
:
never
-
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_PIPELINE_SOURCE
==
"schedule"
&&
$SCHEDULE_TYPE
==
"nightly-update"'
when
:
never
-
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_PIPELINE_SOURCE
==
"schedule"
&&
$SCHEDULE_TYPE
==
"nightly-update"'
when
:
never
-
if
:
($CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH) && $CL_DOCKER_IMAGES_ARM32V7
tags
:
-
bashbrew-arm32v7
Bashbrew push - winamd64
:
extends
:
.Bashbrew push win
rules
:
-
if
:
'
$CI_PIPELINE_SOURCE
==
"schedule"
&&
$SCHEDULE_TYPE
==
"nightly-update"'
when
:
never
-
if
:
($CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH) && $CL_DOCKER_IMAGES_WINAMD64
##############################################################################
# Put shared
Bashbrew
put-shared
:
stage
:
put
shared
put-shared
clfoundation
:
extends
:
Bashbrew
put
-
shared
variables
:
BASHBREW_NAMESPACE
:
$CANONICAL_NAMESPACE
BASHBREW_LIBRARY
:
$CI_PROJECT_DIR/build
BASHBREW_CACHE
:
$CI_PROJECT_DIR/cache/bashbrew
BASHBREW_DEBUG
:
"
true"
script
:
-
echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin
-
docker info
-
mkdir -p cache
-
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_PIPELINE_SOURCE
==
"schedule"
&&
$SCHEDULE_TYPE
==
"nightly-update"'
when
:
never
-
if
:
($CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH)
cache
:
paths
:
-
cache
key
:
put-shared
BASHBREW_NAMESPACE
:
clfoundation
##############################################################################
# Readme
Pushrm
:
# We have to take the long way around to do this because Gitlab CI does not
# allow creating a job with no script. Ideally we would just use the
# container's entrypoint to do the work for us. We can't even override the
# entrypoint because the pushrm image is FROM scratch which doesn't have a
# shell... Watch https://gitlab.com/gitlab-org/gitlab/-/issues/19717
stage
:
readme
script
:
-
docker info
-
./generate-readme.sh < build/$CI_PROJECT_NAME > build/hub-description.md
-
|
docker run -i \
-v $(pwd):/app \
-e DOCKER_USER=$DOCKER_README_USERNAME -e DOCKER_PASS="$DOCKER_README_PASSWORD" \
chko/docker-pushrm:1 \
--file /app/build/hub-description.md \
--debug \
$CANONICAL_NAMESPACE/$CI_PROJECT_NAME
artifacts
:
paths
:
-
build/hub-description.md
rules
:
-
if
:
'
$CI_PIPELINE_SOURCE
==
"schedule"
&&
$SCHEDULE_TYPE
==
"nightly-update"'
when
:
never
-
if
:
($CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH)
tags
:
-
bashbrew-amd64
Pushrm clfoundation
:
extends
:
Pushrm
variables
:
README_NAMESPACE
:
clfoundation
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment