Merge pull request #67 from ResilientGroup/versionUpdates #242
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Build | |
on: | |
push: | |
branches: | |
- '**' | |
tags-ignore: | |
- '**' | |
pull_request: | |
# Allows you to run this workflow manually from the Actions tab | |
workflow_dispatch: | |
# Allows reuse of this workflow as a generic "Java build with Maven that publishes to main on merge" | |
workflow_call: | |
inputs: | |
javadoc-project-name: | |
description: Project subdirectory to upload the JavaDoc to in Google Cloud Storage. | |
required: true | |
type: string | |
outputs: | |
release-version: | |
description: The version of the new release built on the main branch. | |
value: ${{ jobs.build_main_branch.outputs.release-version }} | |
jobs: | |
build_feature_branch: | |
name: Build feature branch | |
runs-on: ubuntu-latest | |
if: github.ref != 'refs/heads/main' | |
steps: | |
- name: Checkout repository | |
uses: actions/checkout@v4 | |
with: | |
submodules: true | |
- name: Determine Java version | |
uses: joshlong/java-version-export-github-action@v28 | |
id: determine-java-version | |
- name: Setup Java and Maven | |
uses: actions/setup-java@v4 | |
with: | |
distribution: temurin | |
java-version: ${{ steps.determine-java-version.outputs.java_major_version }} | |
cache: maven | |
- name: Build with Maven verify | |
run: | | |
./mvnw --batch-mode verify javadoc:javadoc javadoc:aggregate | |
build_main_branch: | |
name: Build main branch | |
runs-on: ubuntu-latest | |
if: github.ref == 'refs/heads/main' | |
outputs: | |
release-version: ${{ steps.set-version.outputs.release-version }} | |
steps: | |
- name: Checkout repository | |
uses: actions/checkout@v4 | |
with: | |
fetch-depth: 0 | |
submodules: true | |
- name: Determine Java version | |
uses: joshlong/java-version-export-github-action@v28 | |
id: determine-java-version | |
- name: Setup Java and Maven | |
uses: actions/setup-java@v4 | |
with: | |
distribution: temurin | |
java-version: ${{ steps.determine-java-version.outputs.java_major_version }} | |
cache: 'maven' | |
server-id: reload | |
server-username: MAVEN_SERVER_USERNAME | |
server-password: MAVEN_SERVER_PASSWORD | |
- name: Read revision version from pom.xml | |
shell: bash | |
run: | | |
MAVEN_POM_REVISION_VERSION="$(./mvnw --batch-mode help:evaluate -Dexpression=revision -q -DforceStdout)" | |
echo "MAVEN_POM_REVISION_VERSION=$MAVEN_POM_REVISION_VERSION" >> $GITHUB_ENV | |
- name: Check if revision is already tagged | |
shell: bash | |
run: | | |
if git tag -l $MAVEN_POM_REVISION_VERSION | grep -q $MAVEN_POM_REVISION_VERSION; then | |
echo "Revision $MAVEN_POM_REVISION_VERSION is already tagged. Skipping deployment." | |
exit 0 | |
else | |
DEPLOY_RELEASE=true | |
echo "DEPLOY_RELEASE=$DEPLOY_RELEASE" >> $GITHUB_ENV | |
fi | |
- name: Build merged feature without releasing it | |
if: env.DEPLOY_RELEASE != 'true' | |
run: | | |
./mvnw -Dchangelist= --batch-mode verify -DstagingDirectory="${GITHUB_WORKSPACE}/target/latest" site:site site:stage | |
- name: Build new release | |
if: env.DEPLOY_RELEASE == 'true' | |
run: | | |
./mvnw -Dchangelist= --batch-mode verify -DstagingDirectory="${GITHUB_WORKSPACE}/target/latest" site:site site:stage | |
test -d "${GITHUB_WORKSPACE}/target/latest" | |
rm -rf -- "${GITHUB_WORKSPACE}/target/${MAVEN_POM_REVISION_VERSION}" || : | |
cp --recursive --verbose -- "${GITHUB_WORKSPACE}/target/latest" "${GITHUB_WORKSPACE}/target/${MAVEN_POM_REVISION_VERSION}" | |
- name: Deploy new release | |
if: env.DEPLOY_RELEASE == 'true' | |
env: | |
MAVEN_SERVER_USERNAME: ${{ secrets.MAVEN_SERVER_USERNAME }} | |
MAVEN_SERVER_PASSWORD: ${{ secrets.MAVEN_SERVER_PASSWORD }} | |
run: | | |
./mvnw --batch-mode deploy -Dchangelist= -DskipTests=true -Dcheckstyle.skip=true -Dpmd.skip=true -Dspotbugs.skip=true | |
- name: Create new git tag | |
if: env.DEPLOY_RELEASE == 'true' | |
uses: rickstaa/action-create-tag@v1 | |
with: | |
tag: ${{ env.MAVEN_POM_REVISION_VERSION }} | |
message: Release ${{ env.MAVEN_POM_REVISION_VERSION }} | |
- name: Set version output | |
id: set-version | |
if: env.DEPLOY_RELEASE == 'true' | |
run: echo "release-version=${MAVEN_POM_REVISION_VERSION}" >> $GITHUB_OUTPUT | |
- name: Authenticate with Google Cloud | |
uses: google-github-actions/auth@v2 | |
with: | |
credentials_json: ${{ secrets.CLOUDBUILD_COMMON_GCP_KEY }} | |
- name: Upload latest JavaDoc copy to Google Cloud Storage | |
uses: google-github-actions/upload-cloud-storage@v2 | |
with: | |
path: target/latest | |
destination: resilient-reload-javadoc/${{ inputs.javadoc-project-name || 'MavenSetup' }} | |
process_gcloudignore: false | |
- name: Upload versioned JavaDoc to Google Cloud Storage | |
if: env.DEPLOY_RELEASE == 'true' | |
uses: google-github-actions/upload-cloud-storage@v2 | |
with: | |
path: target/${{ env.MAVEN_POM_REVISION_VERSION }} | |
destination: resilient-reload-javadoc/${{ inputs.javadoc-project-name || 'MavenSetup' }} | |
process_gcloudignore: false |