diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 208c5e09d13a3beafcfa85f35d83affa37dafa00..aa0cf1bd0436538f6bdc0d4381765fa350c6c98f 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -3,49 +3,20 @@ #### variables: - BUGS_INDEX: ${CI_PROJECT_DIR}/${ETC_HTDOCS_DIR}/bugs-index.html - DOCS_BUCKET: nshmp-lib.chs.usgs.gov - EC2_LATEST_URL: http://169.254.169.254/latest - ETC_HTDOCS_DIR: etc/ci-cd/htdocs FAULT_SECTIONS: nshm-fault-sections FAULT_SECTIONS_GIT: https://gitlab-ci-token:${CI_JOB_TOKEN}@code.usgs.gov/ghsc/nshmp/${FAULT_SECTIONS}.git - HTDOCS_CSS: ${CI_PROJECT_DIR}/${ETC_HTDOCS_DIR}/reports.css - HTDOCS_JS: ${CI_PROJECT_DIR}/${ETC_HTDOCS_DIR}/reports.js JACOCO_HTML_DIR: ${REPORTS_DIR}/jacoco/test/html - JAVADOCS_DIR: build/docs/javadoc JUNIT_FILES: build/test-results/test/TEST-*.xml - MERGE_REQUEST_DIR: merge-request-docs - MERGE_REQUEST_KEY: merge-requests/${CI_BUILD_REF_NAME} - PROP_REGION: region REPORTS_DIR: build/reports - REPORTS_INDEX: ${CI_PROJECT_DIR}/${ETC_HTDOCS_DIR}/reports-index.html - SPOTBUGS_REPORTS_DIR: ${REPORTS_DIR}/spotbugs - TEST_REPORTS_DIR: ${REPORTS_DIR}/tests/test #### # Stages for CI-CD pipline #### stages: - test - - build-javadocs - reports - trigger -#### -# Setup for AWS CLI. -# Globals: -# (string) EC2_LATEST_URL - URL to get latest info from EC2 -# (string) PROP_REGION - The AWS region property -#### -.aws-config: - image: python:3 - before_script: - - export PATH=${HOME}/.local/bin:${PATH} - - apt-get update - - apt-get install jq -y - - pip3 install awscli --upgrade --user - - export AWS_DEFAULT_REGION=`curl -s ${EC2_LATEST_URL}/dynamic/instance-identity/document | jq .${PROP_REGION} -r` - #### # Git clone nshm-fault-sections #### @@ -69,41 +40,6 @@ stages: .gradle: image: gradle:jdk11 -#### -# Docs script anchor. -# Globals: -# (string) CI_PROJECT_DIR - Path to repo in pipeline -# (string) JACOCO_HTML_DIR - Path to the Jacoco reports -# (string) JAVADOCS_DIR - Path to Java docs -# (string) SPOTBUGS_REPORTS_DIR - Path to Spotbugs reports -# (string) TEST_REPORTS_DIR - Path to test reports -### -.docs: - reports: &get-reports |- - cp ${REPORTS_INDEX} index.html; - cp ${HTDOCS_CSS} .; - cp ${HTDOCS_JS} .; - # Jacoco reports - mkdir coverage; - cd coverage; - cp -r ${CI_PROJECT_DIR}/${JACOCO_HTML_DIR}/* .; - cd ..; - # Test reports - mkdir tests; - cd tests; - cp -r ${CI_PROJECT_DIR}/${TEST_REPORTS_DIR}/* .; - cd ..; - # Spotbugs Reports - mkdir bugs; - cd bugs; - cp -r ${CI_PROJECT_DIR}/${SPOTBUGS_REPORTS_DIR}/* .; - mkdir src test; - mv main.html src/index.html; - mv test.html test/index.html; - cp ${BUGS_INDEX} index.html; - cp ${HTDOCS_CSS} .; - cp ${HTDOCS_JS} .; - #### # Build jar file. # Globals: @@ -116,7 +52,8 @@ Build Project: - .tags stage: test only: - - merge_request + - branches + - merge_requests - master@ghsc/nshmp/nshmp-lib script: - ./gradlew assemble; @@ -133,7 +70,8 @@ Spotless Check: - .tags stage: test only: - - merge_request + - branches + - merge_requests - master@ghsc/nshmp/nshmp-lib script: - ./gradlew spotlessCheck; @@ -147,7 +85,8 @@ Spotbugs Main: - .tags stage: test only: - - merge_request + - branches + - merge_requests - master@ghsc/nshmp/nshmp-lib script: - ./gradlew spotbugsMain; @@ -161,7 +100,8 @@ Spotbugs Test: - .tags stage: test only: - - merge_request + - branches + - merge_requests - master@ghsc/nshmp/nshmp-lib script: - ./gradlew spotbugsTest; @@ -180,7 +120,8 @@ Unit Tests: - .tags stage: test only: - - merge_request + - branches + - merge_requests - master@ghsc/nshmp/nshmp-lib coverage: '/Total.*?([0-9]{1,3})%/' script: @@ -191,117 +132,3 @@ Unit Tests: - ${REPORTS_DIR} reports: junit: ${JUNIT_FILES} - -# #### -# # Build Java docs -# # Globals: -# # (string) CI_PROJECT_NAME - The name of the project -# #### -# Build Javadocs: -# extends: -# - .tags -# - .gradle -# stage: build-javadocs -# only: -# - master@ghsc/nshmp/nshmp-lib -# script: -# - ./gradlew javadoc; -# artifacts: -# paths: -# - ${JAVADOCS_DIR} - -# #### -# # Upload documents to S3 bucket static site - -# # http://nshmp-lib.chs.usgs.gov.s3-website-us-west-2.amazonaws.com/ -# # Globals: -# # (string) CI_PROJECT_DIR - Path to repo in pipeline -# # (string) CI_PROJECT_NAME - The name of the project -# # (string) DOCS_BUCKET - The S3 bucket to put the docs -# # (string) JACOCO_HTML_DIR - Path to the Jacoco reports -# # (string) JAVADOCS_DIR - Path to Java docs -# #### -# Deploy Docs: -# extends: -# - .aws-config -# - .tags -# stage: reports -# dependencies: -# - Unit Tests -# - Build Javadocs -# only: -# - master@ghsc/nshmp/nshmp-lib -# script: -# # Clean S3 bucket -# - aws s3 rm s3://${DOCS_BUCKET} --recursive; -# - cd ${JAVADOCS_DIR}; -# # Get reports -# - mkdir reports; -# - cd reports; -# - *get-reports -# # Move to S3 bucket -# - aws s3 cp ${CI_PROJECT_DIR}/${JAVADOCS_DIR} s3://${DOCS_BUCKET}/ --recursive; - -#### -# Add branch based reports to s3 at - -# http://nshmp-lib.chs.usgs.gov.s3-website-us-west-2.amazonaws.com/merge-requests/<branch-name> -# Globals: -# (string) CI_PROJECT_DIR - Path to repo in pipeline -# (string) CI_PROJECT_NAME - The name of the project -# (string) DOCS_BUCKET - The S3 bucket to put the docs -# (string) JACOCO_HTML_DIR - Path to the Jacoco reports -# (string) JAVADOCS_DIR - Path to Java docs -# (string) MERGE_REQUEST_DIR - Directory name for branch based reports -# (string) MERGE_REQUEST_KEY - Path for S3 branch based reports -#### -Add Branch Based Reports: - extends: - - .aws-config - - .tags - stage: reports - dependencies: - - Unit Tests - only: - - merge_request - script: - - mkdir ${MERGE_REQUEST_DIR}; - - cd ${MERGE_REQUEST_DIR}; - - *get-reports - - | - aws s3 cp \ - ${CI_PROJECT_DIR}/${MERGE_REQUEST_DIR} \ - s3://${DOCS_BUCKET}/${MERGE_REQUEST_KEY}/ \ - --recursive; - -#### -# Trigger nshmp-ws pipeline to update nshmp-lib dependency in nshmp-ws Docker image. -# -# Note: This is temporary until nshmp-lib is published. -#### -Trigger nshmp-ws: - stage: trigger - image: node:latest - only: - - master@ghsc/nshmp/nshmp-lib - script: - - | - curl -X POST \ - -F token=${NSHMP_WS_TRIGGER_TOKEN} \ - -F "ref=master" \ - https://code.usgs.gov/api/v4/projects/2638/trigger/pipeline - -#### -# Trigger nshmp-haz-v2 pipeline to update nshmp-lib dependency in nshmp-haz-v2 Docker image. -# -# Note: This is temporary until nshmp-lib is published. -#### -Trigger nshmp-haz-v2: - stage: trigger - image: node:latest - only: - - master@ghsc/nshmp/nshmp-lib - script: - - | - curl -X POST \ - -F token=${NSHMP_HAZ_V2_TRIGGER_TOKEN} \ - -F "ref=master" \ - https://code.usgs.gov/api/v4/projects/2148/trigger/pipeline diff --git a/build.gradle b/build.gradle index 40b3457367fac3057debdae816e65f8d0950ef15..6ff2256f241de35a6d886ec31b49a8fad8321b16 100644 --- a/build.gradle +++ b/build.gradle @@ -15,10 +15,6 @@ plugins { id 'java-library' } -apply from: "${projectDir}/gradle/git-hooks.gradle" -apply from: "${projectDir}/gradle/spotbugs.gradle" -apply from: "${projectDir}/gradle/spotless.gradle" - sourceCompatibility = JavaVersion.VERSION_11 compileJava.options.encoding = 'UTF-8' @@ -26,6 +22,20 @@ repositories { jcenter() } +ext { + projectName = 'nshmp-lib' + spotbugsDir = "./gradle" + spotlessDir = "./src/main/resources" + gitTag = 'git describe --tags'.execute().text.replace('\n', '') ?: 'unknown' + gitLink = '<a href="https://code.usgs.gov/ghsc/nshmp/nshmp-lib">' + gitTag +'</a>' + propsPath = '/resources/main/app.properties' + docTitle = projectName + ': ' + gitLink +} + +apply from: "${projectDir}/gradle/git-hooks.gradle" +apply from: "${projectDir}/gradle/spotbugs.gradle" +apply from: "${projectDir}/gradle/spotless.gradle" + dependencies { api 'com.google.guava:guava:28.2-jre' api 'com.google.code.gson:gson:2.8.6' @@ -40,14 +50,6 @@ dependencies { testImplementation 'org.hamcrest:hamcrest-library:1.3' } -ext { - projectName = 'nshmp-lib' - gitTag = 'git describe --tags'.execute().text.replace('\n', '') ?: 'unknown' - gitLink = '<a href="https://code.usgs.gov/ghsc/nshmp/nshmp-lib">' + gitTag +'</a>' - propsPath = '/resources/main/app.properties' - docTitle = projectName + ': ' + gitLink -} - test { useJUnitPlatform() diff --git a/etc/ci-cd/htdocs/bugs-index.html b/etc/ci-cd/htdocs/bugs-index.html deleted file mode 100644 index 82a3fe8b0965c73c6e5ec916dcc2304868353588..0000000000000000000000000000000000000000 --- a/etc/ci-cd/htdocs/bugs-index.html +++ /dev/null @@ -1,31 +0,0 @@ -<html> - <head> - <link - rel="stylesheet" - href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css"> - - <link rel="stylesheet" href="reports.css"> - </head> - - <body class="center"> - <script src="https://d3js.org/d3.v4.min.js" charset="utf-8"></script> - - <script type="module"> - import { Reports } from './reports.js'; - - const links = [ - { - text: 'Spotbugs Reports - src', - href: 'src' - }, - { - text: 'Spotbugs Reports - test', - href: 'test' - } - ]; - - Reports.createCard(links); - </script> - </body> - -</html> diff --git a/etc/ci-cd/htdocs/reports-index.html b/etc/ci-cd/htdocs/reports-index.html deleted file mode 100644 index f5be9dbc18847a3473e5f63383383343990461f7..0000000000000000000000000000000000000000 --- a/etc/ci-cd/htdocs/reports-index.html +++ /dev/null @@ -1,34 +0,0 @@ -<html> - <head> - <link - rel="stylesheet" - href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css"> - - <link rel="stylesheet" href="reports.css"> - </head> - - <body class="center"> - <script src="https://d3js.org/d3.v4.min.js" charset="utf-8"></script> - - <script type="module"> - import { Reports } from './reports.js'; - - const links = [ - { - text: 'Code Coverage Reports', - href: 'coverage' - }, - { - text: 'Code Quality Reports', - href: 'quality' - }, - { - text: 'Tests Reports', - href: 'tests' - } - ]; - - Reports.createCard(links); - </script> - </body> -</html> \ No newline at end of file diff --git a/etc/ci-cd/htdocs/reports.css b/etc/ci-cd/htdocs/reports.css deleted file mode 100644 index 8784ec2b18fa1bed51499c04ff69ed1b4de81c11..0000000000000000000000000000000000000000 --- a/etc/ci-cd/htdocs/reports.css +++ /dev/null @@ -1,16 +0,0 @@ - -.center { - position: absolute; - top: 50%; - width: 100%; - transform: translate(0, -50%); -} - -.card-margin { - margin: 20px; -} - -.card { - background-color: #f0f0f0; - font-weight: bold; -} diff --git a/etc/ci-cd/htdocs/reports.js b/etc/ci-cd/htdocs/reports.js deleted file mode 100644 index a84b6aac57ea954ea1c379b4ae1ed22ac85bfec5..0000000000000000000000000000000000000000 --- a/etc/ci-cd/htdocs/reports.js +++ /dev/null @@ -1,19 +0,0 @@ - -export class Reports { - - static createCard(links) { - d3.select('body') - .selectAll('div') - .data(links) - .enter() - .append('div') - .attr('class', 'card-margin') - .append('div') - .attr('class', 'card offset-4 col-4') - .append('a') - .attr('class', 'card-body text-decoration-none text-reset') - .attr('href', link => link.href) - .text(link => link.text); - } - -} diff --git a/gradle/spotbugs.gradle b/gradle/spotbugs.gradle index f7b104189c3e600bd7e7e2c39d5d47926ed3afa4..13eba6b86098097e1bdf980e3b9414d4966b5542 100644 --- a/gradle/spotbugs.gradle +++ b/gradle/spotbugs.gradle @@ -6,7 +6,7 @@ apply plugin: "com.github.spotbugs" * See https://spotbugs.readthedocs.io */ spotbugs { - excludeFilter = file("../nshmp-lib/gradle/spotbugs-exclude-filter.xml") + excludeFilter = file("${spotbugsDir}/spotbugs-exclude-filter.xml") effort = "max" ignoreFailures = true // TODO remove once code is up to date } diff --git a/gradle/spotless.gradle b/gradle/spotless.gradle index bb5d54230e62d024205074204ceac85c2f1f3676..ea12f21d4f23168abe84d152852622d6492d423d 100644 --- a/gradle/spotless.gradle +++ b/gradle/spotless.gradle @@ -14,7 +14,7 @@ apply plugin: "com.diffplug.gradle.spotless" spotless { /* Java formatting */ java { - targetExclude "**/build", "bin", "**/Scratch*.java", "tmp" + targetExclude "**/build", "bin", "**/Scratch*.java", "tmp", "lib" removeUnusedImports() @@ -24,8 +24,8 @@ spotless { } } - importOrderFile "${rootDir}/../nshmp-lib/src/main/resources/eclipse.importorder" - eclipse().configFile "${rootDir}/../nshmp-lib/src/main/resources/nshmp.eclipse-format.xml" + importOrderFile "${spotlessDir}/eclipse.importorder" + eclipse().configFile "${spotlessDir}/nshmp.eclipse-format.xml" indentWithSpaces(2) endWithNewline() @@ -43,7 +43,7 @@ spotless { /* Markdown, YAML, .gitignore, Bash, and Dockerfile formatting */ format "misc", { target "**/*.md", "**/*.yml", "**/.gitgnore", "**/*.sh", "**/*Dockerfile" - targetExclude "**/build", ".gradle", ".settings", "tmp" + targetExclude "**/build", ".gradle", ".settings", "tmp", "lib" trimTrailingWhitespace() indentWithSpaces(2) endWithNewline() @@ -54,7 +54,7 @@ spotless { format "xml", { target fileTree(".") { include "**/*.xml" - exclude "**/build", ".settings", ".classpath", ".project", "tmp", ".gradle" + exclude "**/build", ".settings", ".classpath", ".project", "tmp", ".gradle", "lib" } eclipseWtp("xml") indentWithSpaces(2)