Skip to content
Snippets Groups Projects

Resolves - Legacy WS: Add CI/CD Pipeline

.gitlab-ci.yml 0 → 100644
+ 203
0
 
variables:
 
CI_DEFAULT_BRANCH: legacy-ws-main
 
CI_PROJECT_NAME: nshmp-haz-ws-legacy
 
PRODUCTION_BRANCH: legacy-ws-production
 
UPSTREAM_PATH: ghsc/nshmp/nshmp-haz
 
 
# Do not run for merge requests
 
workflow:
 
rules:
 
- if: $CI_COMMIT_TAG
 
- if: $CI_COMMIT_BRANCH
 
 
stages:
 
- build
 
- trigger
 
 
default:
 
tags:
 
- nshmp
 
 
####
 
# Environment Templates
 
####
 
 
##
 
# Rule for development environment
 
##
 
.development-env: &development-env
 
if: >
 
$CI_PROJECT_PATH != $UPSTREAM_PATH
 
|| (
 
$CI_PROJECT_PATH == $UPSTREAM_PATH
 
&& (
 
$CI_COMMIT_BRANCH != $CI_DEFAULT_BRANCH
 
&& $CI_COMMIT_BRANCH != $PRODUCTION_BRANCH
 
)
 
)
 
variables:
 
ENVIRONMENT: development
 
 
##
 
# Rule for staging environment
 
##
 
.staging-env: &staging-env
 
if: >
 
$CI_PROJECT_PATH == $UPSTREAM_PATH
 
&& $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH
 
variables:
 
ENVIRONMENT: staging
 
 
##
 
# Rule for production envrionment
 
##
 
.production-env: &production-env
 
if: >
 
$CI_PROJECT_PATH == $UPSTREAM_PATH
 
&& $CI_COMMIT_BRANCH == $PRODUCTION_BRANCH
 
variables:
 
ENVIRONMENT: production
 
 
####
 
# Java Templates
 
####
 
 
##
 
# General Java setup
 
##
 
.java:
 
image: ${DEVOPS_REGISTRY}usgs/amazoncorretto:8
 
 
####
 
# Docker Templates
 
####
 
 
##
 
# Docker in Docker
 
##
 
.dind:
 
image: ${DEVOPS_REGISTRY}docker:19.03-git
 
services:
 
- alias: docker
 
name: ${DEVOPS_REGISTRY}docker:19.03-dind
 
variables:
 
DOCKER_DRIVER: overlay2
 
 
##
 
# Build Docker image and push to registry.
 
#
 
# Pushes to internal registry for all branches and Docker registry
 
# on default upstream and production upstream branches.
 
##
 
.docker-build:
 
extends:
 
- .dind
 
needs: []
 
rules:
 
- *development-env
 
- *staging-env
 
- *production-env
 
script:
 
- BUILD_ARGS='';
 
- |
 
for arg in ${DOCKER_BUILD_ARGS}; do
 
BUILD_ARGS="${BUILD_ARGS} --build-arg ${arg}";
 
done
 
- env_image_name="${CODE_REGISTRY_IMAGE}/${CI_PROJECT_NAME}:${ENVIRONMENT}-latest";
 
- latest_image_name="${CODE_REGISTRY_IMAGE}/${CI_PROJECT_NAME}:latest";
 
- sha_image_name="${CODE_REGISTRY_IMAGE}/${CI_PROJECT_NAME}:${IMAGE_TAG}";
 
- |
 
docker build \
 
${BUILD_ARGS} \
 
--pull \
 
--tag "${env_image_name}" \
 
--file "${DOCKERFILE}" \
 
.;
 
- docker push "${env_image_name}";
 
- |
 
docker tag "${env_image_name}" "${sha_image_name}";
 
docker push "${sha_image_name}";
 
- |
 
docker_latest_image="usgs/${CI_PROJECT_NAME}:latest";
 
docker_env_image="usgs/${CI_PROJECT_NAME}:${ENVIRONMENT}-latest";
 
 
docker tag "${env_image_name}" "${docker_env_image}";
 
docker push "${docker_env_image}";
 
 
if [[ "${ENVIRONMENT}" != "development" ]]; then
 
docker tag "${env_image_name}" "${latest_image_name}";
 
docker push "${latest_image_name}";
 
 
docker tag "${env_image_name}" "${docker_latest_image}";
 
docker push "${docker_latest_image}";
 
fi
 
- |
 
printf "
 
--------
 
Image Name - %s:%s
 
--------
 
" "${CI_PROJECT_NAME}" "${IMAGE_TAG}";
 
stage: build
 
tags:
 
- build
 
 
####
 
# Stage: build
 
####
 
 
Build Image:
 
extends:
 
- .docker-build
 
variables:
 
DOCKER_BUILD_ARGS: |
 
BUILD_IMAGE=${DEVOPS_REGISTRY}usgs/amazoncorretto:8
 
FROM_IMAGE=${DEVOPS_REGISTRY}usgs/amazoncorretto:8
 
DOCKERFILE: Dockerfile
 
IMAGE_TAG: ${ENVIRONMENT}-${CI_COMMIT_SHORT_SHA}
 
 
Build Project:
 
extends:
 
- .java
 
hooks:
 
pre_get_sources_script:
 
- mkdir -p legacy/nshmp-haz-ws
 
- cd legacy/nshmp-haz-ws
 
script:
 
- pwd
 
# - pushd ..
 
# - git clone https://code.usgs.gov/ghsc/nshmp/nshmp-haz.git --branch=legacy-main nshmp-haz
 
# - popd
 
# - ./gradlew assemble
 
stage: build
 
 
####
 
# Stage: trigger
 
####
 
 
Trigger nshmp-haz-ws Legacy CDK:
 
rules:
 
-
 
<<: *development-env
 
when: manual
 
- *staging-env
 
- *production-env
 
script:
 
- apk add curl
 
- |
 
if [ "${ENVIRONMENT}" == 'production' ]; then
 
REF="production";
 
fi
 
- |
 
curl --request POST \
 
--form token=${NSHMP_HAZ_WS_LEGACY_CDK_TRIGGER_TOKEN} \
 
--form ref=${REF} \
 
--form "variables[description]=Triggered by nshmp-haz legacy-ws" \
 
--form "variables[ENVIRONMENT]=${ENVIRONMENT}" \
 
--form "variables[SOURCE_CODE_BRANCH]=${CI_COMMIT_REF_SLUG}" \
 
--form "variables[SOURCE_CODE_PROJECT_PATH]=${CI_PROJECT_PATH}" \
 
--form "variables[TRIGGER_PASSCODE]=${NSHMP_HAZ_WS_LEGACY_CDK_TRIGGER_TOKEN}" \
 
"https://${PRIVATE_GITLAB}/api/v4/projects/${NSHMP_HAZ_WS_LEGACY_CDK_PROJECT_ID}/trigger/pipeline"
 
stage: trigger
 
variables:
 
REF: main
 
UPSTREAM_PATH: ghsc/nshmp/nshmp-haz
Loading