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

Add pipeline

parent 5255c863
No related branches found
No related tags found
1 merge request!695Resolves - Legacy: Add CI/CD Pipeline
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}
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