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

Add templates

parent a6720ccb
No related branches found
No related tags found
2 merge requests!577Production Release | nshmp-haz,!572Resolves: Pipeline Templates
variables: variables:
JACOCO_HTML_DIR: ${REPORTS_DIR}/jacoco/test/html
JUNIT_FILES: build/test-results/test/TEST-*.xml
NSHMP_HAZ_WS_IMAGE: ${CODE_REGISTRY_IMAGE}/nshmp-haz-ws:${ENVIRONMENT}-${CI_COMMIT_SHORT_SHA} NSHMP_HAZ_WS_IMAGE: ${CODE_REGISTRY_IMAGE}/nshmp-haz-ws:${ENVIRONMENT}-${CI_COMMIT_SHORT_SHA}
REPORTS_DIR: build/reports
# Do not run for merge requests # Do not run for merge requests
workflow: workflow:
...@@ -7,33 +10,136 @@ workflow: ...@@ -7,33 +10,136 @@ workflow:
- if: $CI_COMMIT_TAG - if: $CI_COMMIT_TAG
- if: $CI_COMMIT_BRANCH - if: $CI_COMMIT_BRANCH
include:
- project: 'ghsc/nshmp/nshmp-pipeline-templates'
ref: 'main'
file: 'templates/library.yml'
stages: stages:
- init
- build - build
- trigger - trigger
#### ####
# Templates # Environment Templates
#### ####
.gradle: ##
image: ${DEVOPS_REGISTRY}usgs/amazoncorretto:11 # 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'
&& $CI_COMMIT_TAG == null
)
)
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'
|| ( $CI_COMMIT_TAG && $CI_COMMIT_TAG != '' )
)
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
- |
docker build \
${BUILD_ARGS} \
--pull \
--tag "${CODE_REGISTRY_IMAGE}/${CI_PROJECT_NAME}:${IMAGE_TAG}" \
--file "${CI_PROJECT_DIR}/${DOCKERFILE}" \
"${CI_PROJECT_DIR}/.";
- docker push "${CODE_REGISTRY_IMAGE}/${CI_PROJECT_NAME}:${IMAGE_TAG}";
- latest_image_name="${CODE_REGISTRY_IMAGE}/${CI_PROJECT_NAME}:${ENVIRONMENT}-latest";
- docker tag "${CODE_REGISTRY_IMAGE}/${CI_PROJECT_NAME}:${IMAGE_TAG}" "${latest_image_name}";
- docker push "${latest_image_name}";
- if [[
${CI_COMMIT_REF_SLUG} == "${CI_DEFAULT_BRANCH}" ||
${CI_COMMIT_REF_SLUG} == "production" ||
-n "${CI_COMMIT_TAG}"
]]; then
docker tag "${latest_image_name}" "usgs/${CI_PROJECT_NAME}:${ENVIRONMENT}-latest";
docker push "usgs/${CI_PROJECT_NAME}:${ENVIRONMENT}-latest";
fi
- |
printf "
--------
Image Name - %s:%s
--------
" "${CI_PROJECT_NAME}" "${IMAGE_TAG}";
stage: build stage: build
tags: tags:
- development - build
variables:
DOCKERFILE: Dockerfile
DOCKER_BUILD_ARGS: |
BUILD_IMAGE=${DEVOPS_REGISTRY}usgs/centos:latest
FROM_IMAGE=${DEVOPS_REGISTRY}usgs/centos:latest
IMAGE_TAG: ${ENVIRONMENT}-${CI_COMMIT_SHORT_SHA}
#### ####
# Stage: init # Java Templates
#### ####
Init: ##
extends: # General Java setup
- .gradle-init ##
.java:
image: ${DEVOPS_REGISTRY}usgs/amazoncorretto:11
stage: build
tags:
- development
#### ####
# Stage: build # Stage: build
...@@ -64,36 +170,15 @@ Build Image WS: ...@@ -64,36 +170,15 @@ Build Image WS:
Build Project: Build Project:
extends: extends:
- .gradle - .java
needs:
- Init
rules:
-
changes:
- 'src/**'
- '*gradle*'
when: on_success
-
allow_failure: true
when: manual
script: script:
- ./gradlew assemble - ./gradlew assemble
Markdown Lint: Markdown Lint:
extends: extends:
- .gradle - .java
needs:
- Init
rules:
-
changes:
- '**/*.md'
when: on_success
-
allow_failure: true
when: manual
script: script:
- ./gradlew markdownlint; - ./gradlew markdownlint
Unit Tests: Unit Tests:
artifacts: artifacts:
...@@ -103,18 +188,7 @@ Unit Tests: ...@@ -103,18 +188,7 @@ Unit Tests:
junit: ${JUNIT_FILES} junit: ${JUNIT_FILES}
coverage: '/Total.*?([0-9]{1,3})%/' coverage: '/Total.*?([0-9]{1,3})%/'
extends: extends:
- .gradle - .java
needs:
- Init
rules:
-
changes:
- 'src/**/*'
- '*gradle*'
when: on_success
-
allow_failure: true
when: manual
script: script:
- ./gradlew check - ./gradlew check
- cat ${JACOCO_HTML_DIR}/index.html - cat ${JACOCO_HTML_DIR}/index.html
...@@ -128,12 +202,10 @@ Trigger nshmp-haz-ws CDK: ...@@ -128,12 +202,10 @@ Trigger nshmp-haz-ws CDK:
- Build Image WS - Build Image WS
rules: rules:
- -
if: !reference [.development-env, if] <<: *development-env
variables: !reference [.development-env, variables]
when: manual when: manual
allow_failure: true - *staging-env
- !reference [.staging-env] - *production-env
- !reference [.production-env]
script: script:
- apk add curl - apk add curl
- | - |
......
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