Newer
Older

Nick Bearson
committed
# Define environment variables for all stages
variables:
# Tell docker images where the host docker daemon is
# and how to talk to it
DOCKER_TLS_CERTDIR: ""
DOCKER_HOST: "tcp://docker:2375"
BUILDBUCKET_IMAGE: $CI_REGISTRY_IMAGE/buildbucket
GRIDDED_GLM_IMAGE: $CI_REGISTRY_IMAGE/gridded_glm
stages:
- buildbucket_build
- gridded_glm_build
- test
- release
create the Gridded GLM buildbucket:
stage: buildbucket_build

Nick Bearson
committed
tags:
- docker
services:

Nick Bearson
committed
script:
- docker login --username $CI_REGISTRY_USER --password $CI_REGISTRY_PASSWORD $CI_REGISTRY
- docker build -f buildbucket/Dockerfile --tag $BUILDBUCKET_IMAGE:$CI_COMMIT_SHORT_SHA --cache-from $BUILDBUCKET_IMAGE:latest buildbucket/
- docker push $BUILDBUCKET_IMAGE:$CI_COMMIT_SHORT_SHA
create the Gridded GLM package:
stage: gridded_glm_build

Nick Bearson
committed
tags:
- docker
services:

Nick Bearson
committed
script:
- docker login --username $CI_REGISTRY_USER --password $CI_REGISTRY_PASSWORD $CI_REGISTRY
# Creates the gridded GLM package
- docker run --rm -v "${PWD}":/dock -v $PWD:/work/cspp-geo-gridded-glm $BUILDBUCKET_IMAGE:$CI_COMMIT_SHORT_SHA ./package.sh $CI_COMMIT_SHORT_SHA
# Create a simple Docker image with the gridded GLM package included
# (the below Dockerfile is created by ./package.sh)

Nick Bearson
committed
- docker build . -f Dockerfile -t $GRIDDED_GLM_IMAGE:$CI_COMMIT_SHORT_SHA
- docker push $GRIDDED_GLM_IMAGE:$CI_COMMIT_SHORT_SHA
# worry about this later; rsync isn't available in busybox. we probably need some refactoring to use a build image more directly & upload from there.
# # upload the package to /apollo/ via a limited-use key on espresso
# - rsync -auv -e "ssh -T -o StrictHostKeyChecking=no -o IdentitiesOnly=yes -o ForwardAgent=no -i $NICKB_UPLOAD_KEY" cspp-geo-gridded-glm-$CI_COMMIT_SHORT_SHA.tar.xz nickb@espresso:/apollo/csppgeo/packages/gridded-glm/ci/cspp-geo-gridded-glm-$CI_COMMIT_SHORT_SHA.tar.xz
run tests:
stage: test
image: $GRIDDED_GLM_IMAGE:$CI_COMMIT_SHORT_SHA
tags:
- docker
script:
# $CSPP_GEO_GGLM_HOME is set in
- $CSPP_GEO_GGLM_HOME/bin/cspp-geo-gglm.sh --help # smoke test

Nick Bearson
committed
push our images with version tags:
stage: release
tags:
- docker
services:
rules:
- if: '$CI_COMMIT_TAG'
script:
- docker login --username $CI_REGISTRY_USER --password $CI_REGISTRY_PASSWORD $CI_REGISTRY
# buildbucket
- docker pull $BUILDBUCKET_IMAGE:$CI_COMMIT_SHORT_SHA
- if [ $CI_COMMIT_TAG != '' ]; then docker tag $BUILDBUCKET_IMAGE:$CI_COMMIT_SHORT_SHA $BUILDBUCKET_IMAGE:$CI_COMMIT_TAG; fi
- if [ $CI_COMMIT_TAG != '' ]; then docker push $BUILDBUCKET_IMAGE:$CI_COMMIT_TAG; fi
# gridded_glm
- docker pull $GRIDDED_GLM_IMAGE:$CI_COMMIT_SHORT_SHA
- if [ $CI_COMMIT_TAG != '' ]; then docker tag $GRIDDED_GLM_IMAGE:$CI_COMMIT_SHORT_SHA $GRIDDED_GLM_IMAGE:$CI_COMMIT_TAG; fi
- if [ $CI_COMMIT_TAG != '' ]; then docker push $GRIDDED_GLM_IMAGE:$CI_COMMIT_TAG; fi

Nick Bearson
committed
push our images as latest tags:
stage: release

Nick Bearson
committed
tags:
- docker
services:

Nick Bearson
committed
script:
- docker login --username $CI_REGISTRY_USER --password $CI_REGISTRY_PASSWORD $CI_REGISTRY
# buildbucket
- docker pull $BUILDBUCKET_IMAGE:$CI_COMMIT_SHORT_SHA
- docker tag $BUILDBUCKET_IMAGE:$CI_COMMIT_SHORT_SHA $BUILDBUCKET_IMAGE:latest
- docker push $BUILDBUCKET_IMAGE:latest
# gridded_glm
- docker pull $GRIDDED_GLM_IMAGE:$CI_COMMIT_SHORT_SHA
- docker tag $GRIDDED_GLM_IMAGE:$CI_COMMIT_SHORT_SHA $GRIDDED_GLM_IMAGE:latest
- docker push $GRIDDED_GLM_IMAGE:latest
only:
- tags
- master