diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 64c6076dd151404e1c90838b184432ea1841e853..f1cd4dd97d00a273bdcf0969cb090265aa26a699 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -4,6 +4,8 @@ variables: NSHMP_HAZ_WS_IMAGE: ${CODE_REGISTRY_IMAGE}/nshmp-haz-ws:${ENVIRONMENT}-${CI_COMMIT_SHORT_SHA} REPORTS_DIR: build/reports +image: ${CI_REGISTRY}/devops/images/usgs/java:11 + # Do not run for merge requests workflow: rules: @@ -70,11 +72,12 @@ default: ## # Docker in Docker ## + .dind: - image: ${DEVOPS_REGISTRY}docker:19.03-git + image: ${CI_REGISTRY}/devops/images/docker:20 services: - alias: docker - name: ${DEVOPS_REGISTRY}docker:19.03-dind + name: ${CI_REGISTRY}/devops/images/docker:20-dind variables: DOCKER_DRIVER: overlay2 @@ -142,22 +145,13 @@ default: variables: DOCKERFILE: Dockerfile DOCKER_BUILD_ARGS: | - BUILD_IMAGE=${DEVOPS_REGISTRY}usgs/amazoncorretto:11 - FROM_IMAGE=${DEVOPS_REGISTRY}usgs/amazoncorretto:11 + BUILD_IMAGE=${CI_REGISTRY}/devops/images/usgs/java:11 + FROM_IMAGE=${CI_REGISTRY}/devops/images/usgs/java:11 IMAGE_TAG: ${ENVIRONMENT}-${CI_COMMIT_SHORT_SHA} PUSH_DOCKER: 'false' REGISTRY_IMAGE: ${CI_REGISTRY_IMAGE} TAG: build -#### -# Java Templates -#### - -## -# General Java setup -## -.java: - image: ${DEVOPS_REGISTRY}usgs/amazoncorretto:11 #### # Stage: build @@ -180,8 +174,8 @@ CHS Registry: TAG: build variables: DOCKER_BUILD_ARGS: | - BUILD_IMAGE=${DEVOPS_REGISTRY}usgs/amazoncorretto:11 - FROM_IMAGE=${DEVOPS_REGISTRY}usgs/amazoncorretto:11 + BUILD_IMAGE=${CI_REGISTRY}/devops/images/usgs/java:11 + FROM_IMAGE=${CI_REGISTRY}/devops/images/usgs/java:11 CI_COMMIT_BRANCH=${CI_COMMIT_BRANCH} CI_PROJECT_URL=${CI_PROJECT_URL} PUSH_DOCKER: 'true' @@ -206,15 +200,13 @@ Container Registry: TAG: nshmp variables: DOCKER_BUILD_ARGS: | - BUILD_IMAGE=${DEVOPS_REGISTRY}usgs/amazoncorretto:11 - FROM_IMAGE=${DEVOPS_REGISTRY}usgs/amazoncorretto:11 + BUILD_IMAGE=${CI_REGISTRY}/devops/images/usgs/java:11 + FROM_IMAGE=${CI_REGISTRY}/devops/images/usgs/java:11 CI_COMMIT_BRANCH=${CI_COMMIT_BRANCH} CI_PROJECT_URL=${CI_PROJECT_URL} UPSTREAM_PATH: ghsc/nshmp/nshmp-haz Build Project: - extends: - - .java script: - ./gradlew assemble stage: build @@ -225,8 +217,6 @@ Build Project: Markdown Lint: allow_failure: true - extends: - - .java needs: [] script: - ./gradlew nodeInstall @@ -240,8 +230,6 @@ NSHM Tests: reports: junit: ${JUNIT_FILES} coverage: '/Total.*?([0-9]{1,3})%/' - extends: - - .java needs: [] parallel: matrix: @@ -257,8 +245,6 @@ NSHM Tests: YAML Lint: allow_failure: true - extends: - - .java needs: [] script: - ./gradlew nodeInstall @@ -272,8 +258,6 @@ Unit Tests: reports: junit: ${JUNIT_FILES} coverage: '/Total.*?([0-9]{1,3})%/' - extends: - - .java needs: [] script: - ./gradlew check @@ -292,7 +276,6 @@ Trigger nshmp-haz-ws CDK: - *staging-env - *production-env script: - - apk add curl - | if [ "${ENVIRONMENT}" == 'production' ]; then REF="production"; diff --git a/Dockerfile b/Dockerfile index eaaf180b28295cfc72fee3a4bdb79ad86fade06c..35dacdf7c5af1f77f6532a5f49a0fb56619493c6 100644 --- a/Dockerfile +++ b/Dockerfile @@ -19,6 +19,7 @@ # # docker run \ # --env CLASS_NAME="nshmp-haz class name" \ +# --volume "/path/to/sites:/app/sites.geojson" \ # --volume "/path/to/model:/app/model" \ # --volume "/path/to/output:/app/output" \ # usgs/nshmp-haz:production-latest @@ -27,8 +28,8 @@ # docker build -t nshmp-haz . #### -ARG BUILD_IMAGE=usgs/amazoncorretto:11 -ARG FROM_IMAGE=usgs/amazoncorretto:11 +ARG BUILD_IMAGE=code.usgs.gov:5001/devops/images/usgs/java:11 +ARG FROM_IMAGE=code.usgs.gov:5001/devops/images/usgs/java:11 #### # Builder image: Build jar file. @@ -43,6 +44,8 @@ WORKDIR /app COPY . . +USER root + RUN ./gradlew assemble #### @@ -66,10 +69,16 @@ VOLUME [ "${MODEL_PATH}", "${OUTPUT_PATH}" ] WORKDIR /app -COPY --from=builder /app/build/libs/nshmp-haz.jar . -COPY scripts scripts +USER root + +RUN yum install -y jq && \ + chown -R usgs-user:usgs-user /app + +USER usgs-user + +COPY --from=builder --chown=usgs-user:usgs-user /app/build/libs/nshmp-haz.jar . +COPY --chown=usgs-user:usgs-user scripts scripts -RUN yum install -y jq \ - && echo "{}" > "${CONFIG_FILE}" +RUN echo "{}" > "${CONFIG_FILE}" ENTRYPOINT [ "bash", "scripts/docker-entrypoint.sh" ] diff --git a/docs/pages/Using-Docker.md b/docs/pages/Using-Docker.md index 501d12566a66914f746aea275f4fb7b739fab7d8..c2c80909099542fea969864855b49e15ebecb643 100644 --- a/docs/pages/Using-Docker.md +++ b/docs/pages/Using-Docker.md @@ -84,7 +84,7 @@ docker pull usgs/nshmp-haz:latest docker run \ --env CLASS_NAME="HazardCalc" \ --volume "$(pwd)/nshm-hawaii:/app/model" \ - --volume "$(pwd)/sites.geojson" \ + --volume "$(pwd)/sites.geojson:/app/sites.geojson" \ --volume "$(pwd)/hawaii-hazard-output:/app/output" \ usgs/nshmp-haz ``` @@ -107,7 +107,7 @@ docker run \ --env CLASS_NAME="DisaggCalc" \ --env RETURN_PERIOD=475 \ --volume "$(pwd)/nshm-hawaii:/app/model" \ - --volume "$(pwd)/sites.geojson" \ + --volume "$(pwd)/sites.geojson:/app/sites.geojson" \ --volume "$(pwd)/hawaii-disagg-output:/app/output" \ usgs/nshmp-haz:latest ``` @@ -129,7 +129,7 @@ docker pull usgs/nshmp-haz:latest docker run \ --env CLASS_NAME="RateCalc" \ --volume "$(pwd)/nshm-hawaii:/app/model" \ - --volume "$(pwd)/sites.geojson" \ + --volume "$(pwd)/sites.geojson:/app/sites.geojson" \ --volume "$(pwd)/hawaii-rate-output:/app/output" \ usgs/nshmp-haz ``` diff --git a/gradle/app-version.gradle b/gradle/app-version.gradle index c0f4c3c4c23fa00d78ca1a4d5d4af2e67101f91c..7bf56dc983b77e834ae8abf2b4b2a6cedca32298 100644 --- a/gradle/app-version.gradle +++ b/gradle/app-version.gradle @@ -1,11 +1,12 @@ tasks.withType(JavaCompile) { doFirst { - try { - apply plugin: "com.palantir.git-version" + apply plugin: "com.palantir.git-version" + + def versionFile = new File("${projectDir}/src/main/resources/version/nshmp-haz-version.json") + new File(versionFile.getParent()).mkdirs() - def versionFile = new File("${projectDir}/src/main/resources/version/nshmp-haz-version.json") - new File(versionFile.getParent()).mkdirs() + try { def details = versionDetails() def ciProjectUrl = System.getenv("CI_PROJECT_URL") def branch = System.getenv("CI_COMMIT_BRANCH") @@ -23,7 +24,9 @@ tasks.withType(JavaCompile) { def json = groovy.json.JsonOutput.toJson(versionInfo) versionFile.write(groovy.json.JsonOutput.prettyPrint(json)) } catch (Exception e) { - println("Failed to create version file.") + println("Failed to create version file. Writing blank file.") + println(e) + versionFile.write('{}') } } } diff --git a/ws.Dockerfile b/ws.Dockerfile index 69a5349a03560334b0405d7dff28a20d098963ac..3a61732e451a3b758fd1b946e4412165512b957a 100644 --- a/ws.Dockerfile +++ b/ws.Dockerfile @@ -13,12 +13,12 @@ # # Run locally: # docker run -p 8080:8080 -# -v "path/to/models:/models" +# -v "path/to/model:/app/model" # nshmp-haz-ws #### -ARG BUILD_IMAGE=usgs/amazoncorretto:11 -ARG FROM_IMAGE=usgs/amazoncorretto:11 +ARG BUILD_IMAGE=code.usgs.gov:5001/devops/images/usgs/java:11 +ARG FROM_IMAGE=code.usgs.gov:5001/devops/images/usgs/java:11 #### # Builder image: Build jar file. @@ -35,6 +35,8 @@ WORKDIR /app COPY . . +USER root + RUN ./gradlew assemble #### @@ -46,12 +48,20 @@ LABEL maintainer="Peter Powers <pmpowers@usgs.gov>, Brandon Clayton <bclayton@us ENV CONTEXT_PATH="/" ENV JAVA_OPTS="-Xms2g -Xmx8g" -ENV MODELS_DIRECTORY="/model" +ENV MODELS_DIRECTORY="/app/model" WORKDIR /app -COPY --from=builder /app/build/libs/nshmp-haz.jar . -COPY --from=builder /app/nshms.yml . +USER root + +RUN mkdir /asset-output \ + && chown -R usgs-user:usgs-user /app \ + && chown -R usgs-user:usgs-user /asset-output + +USER usgs-user + +COPY --from=builder --chown=usgs-user:usgs-user /app/build/libs/nshmp-haz.jar . +COPY --from=builder --chown=usgs-user:usgs-user /app/nshms.yml . VOLUME [ "${MODELS_DIRECTORY}" ]