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