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