Skip to content
Merged
145 changes: 145 additions & 0 deletions .github/workflows/maven.yml
Original file line number Diff line number Diff line change
@@ -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
<?xml version="1.0" encoding="UTF8"?>
<toolchains>
<toolchain>
<type>jdk</type>
<provides>
<version>21</version>
<vendor>sun</vendor>
</provides>
<configuration>
<jdkHome>$JAVA_HOME_21_X64</jdkHome>
</configuration>
</toolchain>
</toolchains>
EOF

cat << EOF > ~/.m2/settings.xml
<?xml version="1.0" encoding="UTF-8"?>
<settings>
<servers>
<server>
<id>github</id>
<username>${{github.actor}}</username>
<password>${{ secrets.GITHUB_TOKEN }}</password>
</server>
<server>
<id>github-bom</id>
<username>${{github.actor}}</username>
<password>${{ secrets.GITHUB_TOKEN }}</password>
</server>
<server>
<id>github-core</id>
<username>${{github.actor}}</username>
<password>${{ secrets.GITHUB_TOKEN }}</password>
</server>
</servers>
</settings>
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
15 changes: 12 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -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

Expand Down
53 changes: 52 additions & 1 deletion pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -18,17 +18,68 @@
<properties>
<java.version>21</java.version>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<timestamp>${maven.build.timestamp}</timestamp>
<maven.build.timestamp.format>yyyyMMddHHmm</maven.build.timestamp.format>
<project.build.finalName>${project.artifactId}-${project.version}-${timestamp}</project.build.finalName>
<buildno>${timestamp}</buildno>
</properties>

<repositories>
<repository>
<id>central</id>
<name>Maven Central Repository</name>
<url>https://repo.maven.apache.org/maven2</url>
<releases><enabled>true</enabled></releases>
<snapshots><enabled>false</enabled></snapshots>
</repository>
<repository>
<id>github-bom</id>
<name>GitHub Packages</name>
<url>https://maven.pkg.github.com/IZGateway/izgw-bom</url>
<releases><enabled>true</enabled></releases>
<snapshots><enabled>true</enabled></snapshots>
</repository>
<repository>
<id>github-core</id>
<name>izgw-core</name>
<url>https://maven.pkg.github.com/izgateway/izgw-core</url>
<releases><enabled>true</enabled></releases>
<snapshots><enabled>true</enabled></snapshots>
</repository>
</repositories>

<distributionManagement>
<repository>
<id>github</id>
<name>GitHub IZGateway Apache Maven Packages</name>
<url>https://maven.pkg.github.com/IZGateway/izgw-transform-sql</url>
</repository>
</distributionManagement>

<dependencies>
<dependency>
<groupId>gov.cdc.izgateway</groupId>
<groupId>gov.cdc.izgw</groupId>
<artifactId>izgw-core</artifactId>
<version>3.2.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>

<profiles>
Expand Down