diff --git a/.github/workflows/build-and-publish-develop.yaml b/.github/workflows/build-and-publish-develop.yaml
new file mode 100644
index 0000000..92d3ea9
--- /dev/null
+++ b/.github/workflows/build-and-publish-develop.yaml
@@ -0,0 +1,66 @@
+name: SNAPSHOT - Build and Publish Maven Artifacts
+
+on:
+ workflow_dispatch:
+ push:
+ branches:
+ - develop
+
+env:
+ NEXUS_USERNAME: 'edward'
+ NEXUS_PASSWORD: ${{ secrets.NEXUS_PASSWORD }}
+ MAVEN_PUBLIC_REPOSITORY_URL: ${{ secrets.MAVEN_PUBLIC_REPOSITORY_URL }}
+ SNAPSHOT_DEPLOYMENT_REPOSITORY_URL: ${{ secrets.SNAPSHOT_DEPLOYMENT_REPOSITORY_URL }}
+ RELEASE_DEPLOYMENT_REPOSITORY_URL: ${{ secrets.RELEASE_DEPLOYMENT_REPOSITORY_URL }}
+
+jobs:
+ build-java:
+ runs-on: ubuntu-latest
+ permissions:
+ id-token: write
+ contents: write
+ packages: write
+ name: Build Java Package and Publish
+ steps:
+ - uses: actions/checkout@v4
+ with:
+ fetch-depth: 0
+ - uses: actions/setup-java@v4.2.2
+ if: ${{ hashFiles('**/pom.xml') }}
+ with:
+ java-version: 17
+ distribution: zulu
+ cache: 'maven'
+ - name: maven-settings-xml-action
+ uses: whelk-io/maven-settings-xml-action@v22
+ with:
+ profiles: >
+ [{
+ "id": "homelab",
+ "properties": {
+ "altSnapshotDeploymentRepository": "nexus-snapshot::${env.SNAPSHOT_DEPLOYMENT_REPOSITORY_URL}",
+ "altReleaseDeploymentRepository": "nexus-release::${env.RELEASE_DEPLOYMENT_REPOSITORY_URL}"
+ }
+ }]
+ repositories: >
+ [{
+ "id": "maven-public",
+ "url": "${env.MAVEN_PUBLIC_REPOSITORY_URL}",
+ "snapshots": {
+ "enabled": "true"
+ }
+ }]
+ servers: >
+ [{
+ "id": "nexus-snapshot",
+ "username": "${env.NEXUS_USERNAME}",
+ "password": "${env.NEXUS_PASSWORD}"
+ },
+ {
+ "id": "nexus-release",
+ "username": "${env.NEXUS_USERNAME}",
+ "password": "${env.NEXUS_PASSWORD}"
+ }]
+ - name: Maven Publish
+ run: |
+ mvn -B deploy -P homelab
\ No newline at end of file
diff --git a/.github/workflows/build-and-publish-release.yml b/.github/workflows/build-and-publish-release.yml
new file mode 100644
index 0000000..b318b02
--- /dev/null
+++ b/.github/workflows/build-and-publish-release.yml
@@ -0,0 +1,80 @@
+name: RELEASE - Build and Publish Maven Artifacts
+
+on:
+ workflow_dispatch:
+ push:
+ branches:
+ - main
+
+env:
+ NEXUS_USERNAME: 'edward'
+ NEXUS_PASSWORD: ${{ secrets.NEXUS_PASSWORD }}
+ MAVEN_PUBLIC_REPOSITORY_URL: ${{ secrets.MAVEN_PUBLIC_REPOSITORY_URL }}
+ SNAPSHOT_DEPLOYMENT_REPOSITORY_URL: ${{ secrets.SNAPSHOT_DEPLOYMENT_REPOSITORY_URL }}
+ RELEASE_DEPLOYMENT_REPOSITORY_URL: ${{ secrets.RELEASE_DEPLOYMENT_REPOSITORY_URL }}
+
+jobs:
+ build-java:
+ runs-on: ubuntu-latest
+ permissions:
+ id-token: write
+ contents: write
+ packages: write
+ name: Build Java Package and Publish
+ steps:
+ - uses: actions/checkout@v4
+ with:
+ fetch-depth: 0
+ - uses: actions/setup-java@v4.2.2
+ if: ${{ hashFiles('**/pom.xml') }}
+ with:
+ java-version: 17
+ distribution: zulu
+ cache: 'maven'
+ - name: maven-settings-xml-action
+ uses: whelk-io/maven-settings-xml-action@v22
+ with:
+ profiles: >
+ [{
+ "id": "homelab",
+ "properties": {
+ "altSnapshotDeploymentRepository": "nexus-snapshot::${env.SNAPSHOT_DEPLOYMENT_REPOSITORY_URL}",
+ "altReleaseDeploymentRepository": "nexus-release::${env.RELEASE_DEPLOYMENT_REPOSITORY_URL}"
+ }
+ }]
+ repositories: >
+ [{
+ "id": "maven-public",
+ "url": "${env.MAVEN_PUBLIC_REPOSITORY_URL}",
+ "snapshots": {
+ "enabled": "true"
+ }
+ }]
+ servers: >
+ [{
+ "id": "nexus-snapshot",
+ "username": "${env.NEXUS_USERNAME}",
+ "password": "${env.NEXUS_PASSWORD}"
+ },
+ {
+ "id": "nexus-release",
+ "username": "${env.NEXUS_USERNAME}",
+ "password": "${env.NEXUS_PASSWORD}"
+ }]
+ - name: Config Git
+ run: |
+ git config --global user.email "edward@cheng.sydney"
+ git config --global user.name "3dwardch3ng"
+ git config --global core.autocrlf input
+ - name: Start release
+ run: |
+ mvn gitflow:release-start -B -DpushRemote=true -DallowSnapshots=true -P homelab
+ - name: Maven Publish
+ run: |
+ mvn -B deploy -P homelab
+ - name: Finish release
+ env:
+ GITHUB_ACTOR: 3dwardch3ng
+ GITHUB_TOKEN: ${{ secrets.GH_TOKEN }}
+ run: |
+ mvn gitflow:release-finish -B -DpushRemote=true -DallowSnapshots=true -P homelab
\ No newline at end of file
diff --git a/pom.xml b/pom.xml
index a78d12f..122b9a1 100644
--- a/pom.xml
+++ b/pom.xml
@@ -39,10 +39,10 @@
- database
swagger
- configuration
entity
+ configuration
+ database
@@ -64,6 +64,28 @@
https://sonarqube.cluster.edward.sydney
+
+
+
+ org.apache.maven.plugins
+ maven-source-plugin
+ ${maven-source-plugin.version}
+
+
+ attach-sources
+
+ jar
+
+
+
+
+
+ org.springframework.boot
+ spring-boot-maven-plugin
+
+
+
+
org.springframework.boot