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

add templates

parent 5f244a4b
No related branches found
No related tags found
1 merge request!222Add CI/CD Templates
...@@ -2,9 +2,7 @@ variables: ...@@ -2,9 +2,7 @@ variables:
IMAGE_NAME: ${CODE_REGISTRY_IMAGE}/${CI_PROJECT_NAME}:${ENVIRONMENT}-${CI_COMMIT_SHORT_SHA} IMAGE_NAME: ${CODE_REGISTRY_IMAGE}/${CI_PROJECT_NAME}:${ENVIRONMENT}-${CI_COMMIT_SHORT_SHA}
include: include:
- project: 'ghsc/nshmp/nshmp-pipeline-templates' - local: '.gitlab/templates/library.yml'
ref: 'main'
file: 'templates/library.yml'
stages: stages:
- init - init
...@@ -18,11 +16,6 @@ workflow: ...@@ -18,11 +16,6 @@ workflow:
- if: $CI_COMMIT_TAG - if: $CI_COMMIT_TAG
- if: $CI_COMMIT_BRANCH - if: $CI_COMMIT_BRANCH
.gradle:
image: ${DEVOPS_REGISTRY}usgs/java:11-jdk
tags:
- development
#### ####
# Stage: init # Stage: init
#### ####
...@@ -46,35 +39,18 @@ Build Image: ...@@ -46,35 +39,18 @@ Build Image:
Build Project: Build Project:
extends: extends:
- .gradle - .java
needs: needs:
- Init - Init
rules:
-
changes:
- 'src/**'
- '*gradle*'
when: on_success
-
allow_failure: true
when: manual
script: script:
- ./gradlew assemble; - ./gradlew assemble;
stage: build stage: build
Markdown Lint: Markdown Lint:
extends: extends:
- .gradle - .java
needs: needs:
- Init - Init
rules:
-
changes:
- '**/*.md'
when: on_success
-
allow_failure: true
when: manual
script: script:
- ./gradlew markdownlint; - ./gradlew markdownlint;
stage: build stage: build
...@@ -87,18 +63,9 @@ Unit Tests: ...@@ -87,18 +63,9 @@ 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: needs:
- Init - 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;
...@@ -110,7 +77,7 @@ Unit Tests: ...@@ -110,7 +77,7 @@ Unit Tests:
Publish: Publish:
extends: extends:
- .gradle - .java
needs: needs:
- Init - Init
- Build Image - Build Image
...@@ -123,12 +90,11 @@ Publish: ...@@ -123,12 +90,11 @@ Publish:
- ./gradlew publish -P version=${CI_COMMIT_TAG} - ./gradlew publish -P version=${CI_COMMIT_TAG}
stage: publish stage: publish
#### ####
# Stage: trigger # Stage: trigger
#### ####
Trigger nshmp-webapps: Trigger CDK nshmp-libs:
needs: needs:
- Build Image - Build Image
rules: rules:
......
---
##
# 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:
- !reference [.development-env]
- !reference [.staging-env]
- !reference [.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
tags:
- 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}
---
##
# Rule for development environment
##
.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:
if: >
$CI_PROJECT_PATH == $UPSTREAM_PATH
&& $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH
variables:
ENVIRONMENT: staging
##
# Rule for production envrionment
##
.production-env:
if: >
$CI_PROJECT_PATH == $UPSTREAM_PATH
&& (
$CI_COMMIT_BRANCH == 'production'
|| ( $CI_COMMIT_TAG && $CI_COMMIT_TAG != '' )
)
variables:
ENVIRONMENT: production
---
##
# 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
##
# General Java setup
.java:
image: ${DEVOPS_REGISTRY}usgs/java:11-jdk
tags:
- development
##
# Initialize Gradle projects
##
.gradle-init:
artifacts:
paths:
- ${GRADLE_USER_HOME}
extends:
- .java
script:
- ./gradlew dependencies
stage: init
---
include:
- local: '.gitlab/templates/docker.yml'
- local: '.gitlab/templates/environment.yml'
- local: '.gitlab/templates/helpers.yml'
- local: '.gitlab/templates/variables.yml'
---
variables:
GRADLE_USER_HOME: ${CI_PROJECT_DIR}/tmp/.gradle
JACOCO_HTML_DIR: ${REPORTS_DIR}/jacoco/test/html
JUNIT_FILES: build/test-results/test/TEST-*.xml
REPORTS_DIR: build/reports
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