Skip to content

Commit

Permalink
Publish new Javadoc on release
Browse files Browse the repository at this point in the history
  • Loading branch information
cowwoc committed Oct 31, 2024
1 parent 03fdeb5 commit a1f2a97
Show file tree
Hide file tree
Showing 2 changed files with 63 additions and 36 deletions.
2 changes: 1 addition & 1 deletion .github/workflows/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ jobs:
distribution: zulu
java-version: |
8
21
23
- name: Cache Dependencies
uses: actions/cache@v4
Expand Down
97 changes: 62 additions & 35 deletions .github/workflows/deploy_to_maven_central.yml
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,8 @@ jobs:
open-release:
runs-on: ubuntu-latest
outputs:
INITIAL_REF_POSITION: ${{ steps.create-tag.outputs.INITIAL_REF_POSITION }}
INITIAL_MASTER_POSITION: ${{ steps.create-tag.outputs.INITIAL_MASTER_POSITION }}
INITIAL_GH_PAGES_POSITION: ${{ steps.create-tag.outputs.INITIAL_GH_PAGES_POSITION }}
TAG: ${{ steps.create-tag.outputs.TAG }}
VERSION: ${{ steps.create-tag.outputs.VERSION }}
STAGING_PROFILE_ID: ${{ steps.parse-profile-id.outputs.STAGING_PROFILE_ID }}
Expand All @@ -25,14 +26,13 @@ jobs:
- uses: actions/checkout@v4
with:
ref: ${{ github.ref }}
fetch-depth: 0
token: ${{ secrets.WORKFLOW_TOKEN }}
- uses: actions/setup-java@v4
with:
distribution: zulu
java-version: |
8
21
23
server-id: maven-central-releases
# Server authentication corresponds to "user token" returned by https://oss.sonatype.org/
server-username: OSSRH_USERNAME
Expand All @@ -43,8 +43,7 @@ jobs:
- name: Cache Dependencies
uses: actions/cache@v4
with:
path: |
~/.m2/repository/*
path: ~/.m2/repository/*
key: "${{ runner.OS }}-maven-${{ hashFiles('**/pom.xml') }}"

- name: Configure Git User
Expand All @@ -66,7 +65,7 @@ jobs:
- name: Create tag
id: create-tag
run: |
echo "INITIAL_REF_POSITION=$(git rev-parse HEAD)" >> "$GITHUB_OUTPUT"
echo "INITIAL_MASTER_POSITION=$(git rev-parse HEAD)" >> "$GITHUB_OUTPUT"
./mvnw release:prepare --batch-mode -V -e
TAG=$(git describe --tag --abbrev=0)
echo "TAG=${TAG}" >> "$GITHUB_OUTPUT"
Expand Down Expand Up @@ -113,7 +112,7 @@ jobs:
distribution: zulu
java-version: |
8
21
23
server-id: maven-central-releases
# Server authentication corresponds to "user token" returned by https://oss.sonatype.org/
server-username: OSSRH_USERNAME
Expand All @@ -124,24 +123,53 @@ jobs:
- name: Cache Dependencies
uses: actions/cache@v4
with:
path: |
~/.m2/repository/*
path: ~/.m2/repository/*
key: "${{ runner.OS }}-maven-${{ hashFiles('**/pom.xml') }}"

- name: Test build
run: ./mvnw --batch-mode -V -e verify

# Escape exclamation mark on bash: https://stackoverflow.com/a/27177197/14731
# Must quote exclamation mark on bash: https://stackoverflow.com/a/27177197/14731
- name: Deploy to Maven Central
run: >
./mvnw --batch-mode -V -e -pl '!dropwizard,!jersey'
-Dstaging_repository_id=${{ needs.open-release.outputs.STAGING_REPOSITORY_ID }}
-Dstaging_host="${{ env.STAGING_HOST }}"
deploy -P release
close-release:
document:
name: Publish Javadoc documentation
needs: [ open-release, deploy ]
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
ref: ${{ needs.open-release.outputs.TAG }}
fetch-depth: 0
- uses: actions/setup-java@v4
with:
distribution: zulu
java-version: |
8
23
- name: Generate Javadoc
run: |
./mvnw --batch-mode -V -e verify javadoc:aggregate -pl !dropwizard,!jersey
mkdir --parents "${{ needs.open-release.outputs.VERSION }}/docs"
mv target/reports/apidocs "${{ needs.open-release.outputs.VERSION }}/docs/api"
- name: Commit changes
run: |
git checkout gh-pages
echo "INITIAL_GH_PAGES_POSITION=$(git rev-parse HEAD)" >> "$GITHUB_OUTPUT"
git add "${{ needs.open-release.outputs.VERSION }}/docs/api"
git commit -m "Released version ${{ needs.open-release.outputs.VERSION }}"
git push
close-release:
needs: [ open-release, deploy, document ]
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
Expand All @@ -152,7 +180,7 @@ jobs:
distribution: zulu
java-version: |
8
21
23
server-id: maven-central-releases
# Server authentication corresponds to "user token" returned by https://oss.sonatype.org/
server-username: OSSRH_USERNAME
Expand All @@ -163,8 +191,7 @@ jobs:
- name: Cache Dependencies
uses: actions/cache@v4
with:
path: |
~/.m2/repository/*
path: ~/.m2/repository/*
key: "${{ runner.OS }}-maven-${{ hashFiles('**/pom.xml') }}"

- name: Close staging repository
Expand All @@ -176,7 +203,7 @@ jobs:
# Cleanup on failure: https://stackoverflow.com/a/74562058/14731
on-failure:
needs: [ open-release, deploy, close-release ]
needs: [ open-release, deploy, document, close-release ]
runs-on: ubuntu-latest
if: ${{ failure() || cancelled() }}
steps:
Expand All @@ -190,21 +217,14 @@ jobs:
distribution: zulu
java-version: |
8
21
23
server-id: maven-central-releases
# Server authentication corresponds to "user token" returned by https://oss.sonatype.org/
server-username: OSSRH_USERNAME
server-password: OSSRH_TOKEN
gpg-private-key: ${{ secrets.MAVEN_GPG_PRIVATE_KEY }}
gpg-passphrase: MAVEN_GPG_PASSPHRASE

- name: Cache Dependencies
uses: actions/cache@v4
with:
path: |
~/.m2/repository/*
key: "${{ runner.OS }}-maven-${{ hashFiles('**/pom.xml') }}"

- name: Drop staging repository
if: needs.open-release.outputs.STAGING_REPOSITORY_ID != '' && needs.open-release.outputs.STAGING_PROFILE_ID != ''
run: >
Expand All @@ -213,24 +233,31 @@ jobs:
-d '{"data": {"stagedRepositoryId": "${{ needs.open-release.outputs.STAGING_REPOSITORY_ID }}", "description": "Dropping repository"}}'
'https://${{ env.STAGING_HOST }}/service/local/staging/profiles/${{ needs.open-release.outputs.STAGING_PROFILE_ID }}/drop'
- name: Configure Git User
run: |
git config user.email "[email protected]"
git config user.name "Gili Tzabari"
- name: Restore the workflow ref to its original position
if: needs.open-release.outputs.INITIAL_REF_POSITION != ''
- name: Restore the master ref to its original position
if: needs.open-release.outputs.INITIAL_MASTER_POSITION != ''
run: |
CURRENT_REF_POSITION=$(git rev-parse HEAD)
if [ "${CURRENT_REF_POSITION}" != "${{ needs.open-release.outputs.INITIAL_REF_POSITION }}" ]; then
git reset --hard ${{ needs.open-release.outputs.INITIAL_REF_POSITION }}
if [ "${CURRENT_REF_POSITION}" != "${{ needs.open-release.outputs.INITIAL_MASTER_POSITION }}" ]; then
git reset --hard ${{ needs.open-release.outputs.INITIAL_MASTER_POSITION }}
if [ "${{ github.ref_type }}" == "tag" ]; then
git ${{ github.ref_type }} -f ${{ github.ref_name }}
fi
git push -f origin ${{ github.ref_name }}
fi
- name: Delete tag
if: needs.open-release.outputs.TAG != ''
- name: Delete master's tag
if: needs.open-release.outputs.INITIAL_MASTER_POSITION != ''
run: |
git push --delete origin ${{ needs.open-release.outputs.TAG }}
git push --delete origin ${{ needs.open-release.outputs.TAG }}
- name: Restore the gh-pages ref to its original position
if: needs.open-release.outputs.INITIAL_GH_PAGES_POSITION != ''
run: |
CURRENT_REF_POSITION=$(git rev-parse HEAD)
if [ "${CURRENT_REF_POSITION}" != "${{ needs.open-release.outputs.INITIAL_GH_PAGES_POSITION }}" ]; then
git reset --hard ${{ needs.open-release.outputs.INITIAL_GH_PAGES_POSITION }}
if [ "${{ github.ref_type }}" == "tag" ]; then
git ${{ github.ref_type }} -f ${{ github.ref_name }}
fi
git push -f origin ${{ github.ref_name }}
fi

0 comments on commit a1f2a97

Please sign in to comment.