# 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 image: docker:20.10 tags: - docker services: - docker:dind 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 image: docker:20.10 tags: - docker services: - docker:dind 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) - 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 push our images with version tags: stage: release image: docker:20.10 tags: - docker services: - docker:dind 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 push our images as latest tags: stage: release image: docker:20.10 tags: - docker services: - docker:dind 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