Skip to content
Snippets Groups Projects
Commit 0b88ad07 authored by Clayton, Brandon Scott's avatar Clayton, Brandon Scott
Browse files

Merge branch 'legacy-main--ci' into 'legacy-main'

Resolves - Legacy: Add CI/CD Pipeline

See merge request !695
parents 5255c863 975fa0fc
No related branches found
No related tags found
1 merge request!695Resolves - Legacy: Add CI/CD Pipeline
Pipeline #214687 passed
variables:
CI_DEFAULT_BRANCH: legacy-main
CI_PROJECT_NAME: nshmp-haz-legacy
JACOCO_HTML_DIR: ${REPORTS_DIR}/jacoco/test/html
JUNIT_FILES: build/test-results/test*/TEST-*.xml
PRODUCTION_BRANCH: legacy-production
REPORTS_DIR: build/reports
UPSTREAM_PATH: ghsc/nshmp/nshmp-haz
# Do not run for merge requests
workflow:
rules:
- if: $CI_COMMIT_TAG
- if: $CI_COMMIT_BRANCH
stages:
- build
- test
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:
artifacts:
paths:
- build
extends:
- .java
script:
- ./gradlew assemble
stage: build
####
# Stage: test
####
Test HazardCalc:
extends:
- .java
needs:
- Build Project
script:
- |
java -cp build/libs/nshmp-haz.jar \
gov.usgs.earthquake.nshmp.HazardCalc \
etc/peer/models/Set1-Case1 \
"Test Site, -122.0, 38.0"
stage: test
Unit Tests:
artifacts:
paths:
- ${JACOCO_HTML_DIR}
reports:
junit: ${JUNIT_FILES}
coverage: '/Total.*?([0-9]{1,3})%/'
extends:
- .java
needs: []
script:
- ./gradlew check
- cat ${JACOCO_HTML_DIR}/index.html
stage: test
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment