diff --git a/.github/workflows/maven.yml b/.github/workflows/maven.yml new file mode 100644 index 0000000..42f40bf --- /dev/null +++ b/.github/workflows/maven.yml @@ -0,0 +1,145 @@ +name: Java CI with Maven + +on: + push: + branches: + - develop + + pull_request: + branches: + - develop + + schedule: + - cron: '0 6 * * 1-5' + + workflow_dispatch: + +concurrency: izgw-transform-sql-dev + +permissions: + contents: write + packages: write + +jobs: + build: + + runs-on: ubuntu-latest + + steps: + + - name: Checkout the software + uses: actions/checkout@v6 + + - name: Set up JDK 21 + uses: actions/setup-java@v5 + with: + java-version: '21' + distribution: 'temurin' + cache: maven + + - name: Set up Maven + uses: stCarolas/setup-maven@v5.1 + with: + maven-version: 3.9.0 + + - name: Set up Toolchain + shell: bash + run: | + mkdir -p ~/.m2 \ + && cat << EOF > ~/.m2/toolchains.xml + + + + jdk + + 21 + sun + + + $JAVA_HOME_21_X64 + + + + EOF + + cat << EOF > ~/.m2/settings.xml + + + + + github + ${{github.actor}} + ${{ secrets.GITHUB_TOKEN }} + + + github-bom + ${{github.actor}} + ${{ secrets.GITHUB_TOKEN }} + + + github-core + ${{github.actor}} + ${{ secrets.GITHUB_TOKEN }} + + + + EOF + + echo BASE_TAG=`mvn help:evaluate -Dexpression=project.version -q -DforceStdout` >> $GITHUB_ENV + echo COMPUTERNAME=`hostname` >> $GITHUB_ENV + + - name: Sets env vars for push or pull request to develop + run: | + echo IMAGE_TAG=`mvn help:evaluate -Dexpression=project.version -q -DforceStdout | sed "s/-SNAPSHOT$/-SNAPSHOT-${{github.run_number}}/"` >> $GITHUB_ENV + echo DO_REVISION_CHECK=true >> $GITHUB_ENV + echo SKIP_DEPENDENCY_CHECK=true >> $GITHUB_ENV + + - name: Sets env vars for pull to main + if: ${{ github.base_ref == 'main' }} + run: | + IMAGE_TAG=`mvn help:evaluate -Dexpression=project.version -q -DforceStdout | sed "s/-.*$/-IZGW-SNAPSHOT-${{github.run_number}}/"` + echo IMAGE_TAG=$IMAGE_TAG >> $GITHUB_ENV + echo DO_REVISION_CHECK=false >> $GITHUB_ENV + echo SKIP_DEPENDENCY_CHECK=true >> $GITHUB_ENV + + - name: Sets env vars for push to main + if: ${{ github.ref_name == 'main' }} + run: | + IMAGE_TAG=`mvn help:evaluate -Dexpression=project.version -q -DforceStdout | sed "s/-.*$/-IZGW-RELEASE-${{github.run_number}}/"` + echo IMAGE_TAG=$IMAGE_TAG >> $GITHUB_ENV + echo DO_REVISION_CHECK=false >> $GITHUB_ENV + echo SKIP_DEPENDENCY_CHECK=false >> $GITHUB_ENV + + - name: List env + shell: bash + run: | + echo BASE_REF: ${{ github.base_ref }} + echo HEAD_REF: ${{ github.head_ref }} + echo REF_NAME: ${{ github.ref_name }} + echo REF: ${{ github.ref }} + echo EVENT_NAME ${{ github.event_name }} + echo TAG: $BASE_TAG + echo DO_REVISION_CHECK: $DO_REVISION_CHECK + echo SKIP_DEPENDENCY_CHECK: $SKIP_DEPENDENCY_CHECK + echo IMAGE_TAG: $IMAGE_TAG + + - name: Maven Build, Test, and Deploy + run: | + mvn -B -U clean package deploy \ + -Dbuildno=${{github.run_number}} \ + -DdoRevisionCheck=${{env.DO_REVISION_CHECK}} \ + -DskipDependencyCheck=${{env.SKIP_DEPENDENCY_CHECK}} + + - name: Upload build environment on failure + uses: actions/upload-artifact@v7 + if: ${{ failure() }} + with: + name: build-failure + path: . + + - name: Upload dependency check report + uses: actions/upload-artifact@v7 + if: ${{ ! env.SKIP_DEPENDENCY_CHECK }} + with: + name: DependencyCheck + path: ./target/site/dependency-check-report.html diff --git a/README.md b/README.md index 6e82edd..a31b285 100644 --- a/README.md +++ b/README.md @@ -8,14 +8,23 @@ backends alongside the existing IZ Gateway path. ## Building -This module is not built standalone. It is included as a profile-activated -dependency in `izgw-transform`: +```cmd +mvn clean package +mvn test +mvn dependency-check:check +``` + +This module builds as a library JAR and publishes to GitHub Packages. It does +not produce a runnable service image on its own. + +To produce a SQL-enabled `izgw-transform` service image, activate the +`sql-support` profile and a driver profile in `izgw-transform`: ``` mvn package -P sql-support,sql-mssql ``` -See `izgw-transform` for full build and deployment documentation. +See `izgw-transform` for full service build and deployment documentation. ## Documentation diff --git a/pom.xml b/pom.xml index ad8893c..c480d5e 100644 --- a/pom.xml +++ b/pom.xml @@ -18,17 +18,68 @@ 21 UTF-8 + ${maven.build.timestamp} + yyyyMMddHHmm + ${project.artifactId}-${project.version}-${timestamp} + ${timestamp} + + + central + Maven Central Repository + https://repo.maven.apache.org/maven2 + true + false + + + github-bom + GitHub Packages + https://maven.pkg.github.com/IZGateway/izgw-bom + true + true + + + github-core + izgw-core + https://maven.pkg.github.com/izgateway/izgw-core + true + true + + + + + + github + GitHub IZGateway Apache Maven Packages + https://maven.pkg.github.com/IZGateway/izgw-transform-sql + + + - gov.cdc.izgateway + gov.cdc.izgw izgw-core + 3.2.0-SNAPSHOT org.springframework.boot spring-boot-starter-jdbc + + org.springframework.boot + spring-boot-starter-web + + + org.projectlombok + lombok + provided + + + org.springframework.boot + spring-boot-starter-test + test +