diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml new file mode 100644 index 0000000000000000000000000000000000000000..b258433d94ec4b89784707ea72a0af5630384a1a --- /dev/null +++ b/.gitlab-ci.yml @@ -0,0 +1,204 @@ +variables: + CI_DEFAULT_BRANCH: legacy-ws-main + CI_PROJECT_NAME: nshmp-haz-ws-legacy + PRODUCTION_BRANCH: legacy-ws-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 + - trigger + +default: + tags: + - nshmp + +#### +# 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 + +#### +# Java Templates +#### + +## +# General Java setup +## +.java: + image: ${DEVOPS_REGISTRY}usgs/amazoncorretto:8 + +#### +# 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 + +#### +# 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} + +Build Project: + extends: + - .java + before_script: + - mkdir -p ${DIR} + - mv $(ls -1 | grep -v $(basename $(dirname ${DIR}))) ${DIR}/. + - pushd ${DIR} + - pushd .. + - git clone https://code.usgs.gov/ghsc/nshmp/nshmp-haz.git --branch=legacy-main nshmp-haz + - popd + script: + - ./gradlew assemble + stage: build + variables: + DIR: legacy/nshmp-haz-ws + +#### +# Stage: trigger +#### + +Trigger nshmp-haz-ws Legacy CDK: + rules: + - + <<: *development-env + when: manual + - *staging-env + - *production-env + script: + - apk add curl + - | + if [ "${ENVIRONMENT}" == 'production' ]; then + REF="production"; + fi + - | + curl --request POST \ + --form token=${NSHMP_HAZ_WS_LEGACY_CDK_TRIGGER_TOKEN} \ + --form ref=${REF} \ + --form "variables[description]=Triggered by nshmp-haz legacy-ws" \ + --form "variables[ENVIRONMENT]=${ENVIRONMENT}" \ + --form "variables[SOURCE_CODE_BRANCH]=${CI_COMMIT_REF_SLUG}" \ + --form "variables[SOURCE_CODE_PROJECT_PATH]=${CI_PROJECT_PATH}" \ + --form "variables[TRIGGER_PASSCODE]=${NSHMP_HAZ_WS_LEGACY_CDK_TRIGGER_TOKEN}" \ + "https://${PRIVATE_GITLAB}/api/v4/projects/${NSHMP_HAZ_WS_LEGACY_CDK_PROJECT_ID}/trigger/pipeline" + stage: trigger + variables: + REF: main + UPSTREAM_PATH: ghsc/nshmp/nshmp-haz diff --git a/Dockerfile b/Dockerfile index b303578995f0f53e6846185e5406e4ebabf1e600..fa5ab6f274c908129b031b88a7dfe55367e44f58 100644 --- a/Dockerfile +++ b/Dockerfile @@ -37,7 +37,9 @@ ENV LANG en_US.UTF-8 ENV PATH ${CATALINA_HOME}/bin:${PATH} ENV TOMCAT_SOURCE http://archive.apache.org/dist/tomcat ENV TOMCAT_WEBAPPS ${CATALINA_HOME}/webapps -ENV TOMCAT_URL=${TOMCAT_SOURCE}/tomcat-8/v8.5.40/bin/apache-tomcat-8.5.40.tar.gz +ENV TOMCAT_VERSION=8.5.85 + +ENV TOMCAT_URL=${TOMCAT_SOURCE}/tomcat-8/v${TOMCAT_VERSION}/bin/apache-tomcat-${TOMCAT_VERSION}.tar.gz # Install Tomcat WORKDIR ${CATALINA_HOME}