From bd995d23a536620122f545adf591caf14803cf51 Mon Sep 17 00:00:00 2001 From: Brandon Clayton <bclayton@usgs.gov> Date: Thu, 19 Jan 2023 09:13:56 -0700 Subject: [PATCH 1/6] Add pipeline --- .gitlab-ci.yml | 142 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 142 insertions(+) create mode 100644 .gitlab-ci.yml diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml new file mode 100644 index 00000000..564a2d68 --- /dev/null +++ b/.gitlab-ci.yml @@ -0,0 +1,142 @@ +variables: + CI_DEFAULT_BRANCH: legacy-main + CI_PROJECT_NAME: nshmp-haz-legacy + PRODUCTION_BRANCH: legacy-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 + +#### +# 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 + +#### +# 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 + variables: + +#### +# 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} -- GitLab From 700901a786a2c4197fcef24015c7714f49f57703 Mon Sep 17 00:00:00 2001 From: Brandon Clayton <bclayton@usgs.gov> Date: Thu, 19 Jan 2023 09:58:48 -0700 Subject: [PATCH 2/6] Add pipelines --- .gitlab-ci.yml | 45 ++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 44 insertions(+), 1 deletion(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 564a2d68..796b5602 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -1,6 +1,8 @@ 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 UPSTREAM_PATH: ghsc/nshmp/nshmp-haz @@ -12,6 +14,11 @@ workflow: stages: - build + - test + +default: + tags: + - nshmp #### # Environment Templates @@ -53,6 +60,17 @@ stages: variables: ENVIRONMENT: production + +#### +# Java Templates +#### + +## +# General Java setup +## +.java: + image: ${DEVOPS_REGISTRY}usgs/amazoncorretto:8 + #### # Docker Templates #### @@ -125,7 +143,6 @@ stages: stage: build tags: - build - variables: #### # Stage: build @@ -140,3 +157,29 @@ Build Image: FROM_IMAGE=${DEVOPS_REGISTRY}usgs/amazoncorretto:8 DOCKERFILE: Dockerfile IMAGE_TAG: ${ENVIRONMENT}-${CI_COMMIT_SHORT_SHA} + +Build Project: + extends: + - .java + script: + - ./gradlew assemble + stage: build + +#### +# 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 -- GitLab From 806fa04dccc35b06555a4ead7a4681f1208ca1de Mon Sep 17 00:00:00 2001 From: Brandon Clayton <bclayton@usgs.gov> Date: Thu, 19 Jan 2023 10:02:28 -0700 Subject: [PATCH 3/6] add hazardcalc test --- .gitlab-ci.yml | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 796b5602..c1f60128 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -4,6 +4,7 @@ variables: 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 @@ -149,6 +150,9 @@ default: #### Build Image: + artifacts: + paths: + - build extends: - .docker-build variables: @@ -169,6 +173,18 @@ Build Project: # Stage: test #### +Test HazardCalc: + extends: + - .java + needs: Build Image + 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: -- GitLab From 2c5e114ae8617259515fd3367b4479f97502f657 Mon Sep 17 00:00:00 2001 From: Brandon Clayton <bclayton@usgs.gov> Date: Thu, 19 Jan 2023 10:03:36 -0700 Subject: [PATCH 4/6] Fix needs array --- .gitlab-ci.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index c1f60128..e1ce30f0 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -176,7 +176,8 @@ Build Project: Test HazardCalc: extends: - .java - needs: Build Image + needs: + - Build Image script: - | java -cp build/libs/nshmp-haz.jar \ -- GitLab From f7b0451360ccaea00af734ae50abc2418a855398 Mon Sep 17 00:00:00 2001 From: Brandon Clayton <bclayton@usgs.gov> Date: Thu, 19 Jan 2023 10:04:43 -0700 Subject: [PATCH 5/6] CHange needs --- .gitlab-ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index e1ce30f0..bd5952bd 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -177,7 +177,7 @@ Test HazardCalc: extends: - .java needs: - - Build Image + - Build Project script: - | java -cp build/libs/nshmp-haz.jar \ -- GitLab From 975fa0fce9cf544c162a797643554635b541732c Mon Sep 17 00:00:00 2001 From: Brandon Clayton <bclayton@usgs.gov> Date: Thu, 19 Jan 2023 10:06:28 -0700 Subject: [PATCH 6/6] Add artifact --- .gitlab-ci.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index bd5952bd..4241d055 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -150,9 +150,6 @@ default: #### Build Image: - artifacts: - paths: - - build extends: - .docker-build variables: @@ -163,6 +160,9 @@ Build Image: IMAGE_TAG: ${ENVIRONMENT}-${CI_COMMIT_SHORT_SHA} Build Project: + artifacts: + paths: + - build extends: - .java script: -- GitLab