Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
23 commits
Select commit Hold shift + click to select a range
dbc9099
chore(main): release 1.0.0-rc
fusionauth-platform-team Jan 27, 2026
378bb61
chore(release): v1.0.0
mrudatsprint Jan 27, 2026
d9cc971
Compare to the release.
mrudatsprint Jan 27, 2026
d267dcb
chore(main): release 1.0.0-rc
fusionauth-platform-team Feb 8, 2026
87bf904
feat: Move from OSSRH to the Maven Central Portal to publish the SDK …
mrudatsprint Feb 9, 2026
8f0fec9
chore: Merge remote-tracking branch 'origin/release-please--branches-…
mrudatsprint Feb 9, 2026
870ccbd
feat: retrieve secrets from AWS and not GitHub
mrudatsprint Feb 9, 2026
a46223a
Specify a know version.
mrudatsprint Feb 10, 2026
e6ffba4
Use the aws secrets action.
mrudatsprint Feb 10, 2026
b315cae
Missing permission for running aws-actions/configure-aws-credentials@v4
mrudatsprint Feb 10, 2026
33a8213
Remove role-chaining as it may be preventing setting the aws credenti…
mrudatsprint Feb 10, 2026
d2ea69d
debugging assuming role with OIDC.
mrudatsprint Feb 10, 2026
8887d00
Change role to authenticate with AWS.
mrudatsprint Feb 11, 2026
986f480
Use the aws cli to get the secret vs a specific github action.
mrudatsprint Feb 12, 2026
cbee4c1
Debugging the creation of the deployment bundle.
mrudatsprint Feb 12, 2026
136517e
debugging the location of the deployment.
mrudatsprint Feb 12, 2026
5e263e5
Attempting to locate the deployment.
mrudatsprint Feb 12, 2026
f5c47e2
Publish to the Central Portal using a username/password
mrudatsprint Feb 12, 2026
e3d8fa1
Rename as OSSRH is not being used.
mrudatsprint Feb 12, 2026
25b213e
Security cleanup per co-pilot.
mrudatsprint Feb 12, 2026
a15c3fc
Fix syntax error.
mrudatsprint Feb 12, 2026
b939e09
Rename in order to re-test publish.
mrudatsprint Feb 12, 2026
46c18e8
Rename as OSSRH is not being used.
mrudatsprint Feb 12, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
114 changes: 0 additions & 114 deletions .github/workflows/release-publish-ossrh.yml

This file was deleted.

122 changes: 122 additions & 0 deletions .github/workflows/release-publish.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,122 @@
# This workflow uses actions that are not certified by GitHub.
# They are provided by a third-party and are governed by
# separate terms of service, privacy policy, and support
# documentation.

# This workflow performs a Maven Release to Central Portal
#

name: Maven Release Central Portal

on:
# Allows you to run this workflow manually from the Actions tab
workflow_dispatch:

# This workflow is part of the release group and will not run concurrently with other workflows in the same group
concurrency:
group: release

env:
AWS_REGION: us-west-2

# A workflow run is made up of one or more jobs that can run sequentially or in parallel
jobs:
# The e2e-test job first verifies the release with multiple fusionauth versions
e2e-test:
uses: ./.github/workflows/e2e-test-fusionauth-matrix-android-latest.yml

# The publish job builds and publishes the release to Central Portal
publish:
name: Maven Release

permissions:
# required for all workflows
security-events: write
# only required for workflows in private repositories
actions: read
contents: read
id-token: write

# The type of runner that the job will run on
runs-on: ubuntu-latest

# Requires e2e-test job
needs: [ e2e-test ]

# Steps represent a sequence of tasks that will be executed as part of the job
steps:
# Sets up JDK as a prerequisite to run Gradle
- name: Setup Java
uses: actions/setup-java@v5
with:
java-version: '17'
distribution: 'zulu'

# Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it
- name: Checkout repository
uses: actions/checkout@v6

- name: set aws credentials
uses: aws-actions/configure-aws-credentials@v4
with:
role-to-assume: arn:aws:iam::752443094709:role/gha-fusionauth-android-sdk
role-session-name: aws-auth-action
aws-region: ${{ env.AWS_REGION }}

- name: get secrets into the env
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Get the secrets from AWS to publish the artifact to the Central Portal.

run: |
while IFS=$'\t' read -r key value; do
echo "::add-mask::${value}"
echo "${key}=${value}" >> $GITHUB_ENV
done < <(aws secretsmanager get-secret-value \
--region us-west-2 \
--secret-id platform/maven \
--query SecretString \
--output text | \
jq -r 'to_entries[] | [.key, .value] | @tsv')

# Sets up Gradle as a prerequisite to run Maven Release
- name: Setup Gradle
uses: gradle/actions/setup-gradle@4d9f0ba0025fe599b4ebab900eb7f3a1d93ef4c2 # v5.0.0
with:
gradle-home-cache-cleanup: true

# Performs a Local Maven Release
- name: Run Maven Local Release
env:
ORG_GRADLE_PROJECT_signingKey: ${{ secrets.GPG_SIGNING_KEY }}
ORG_GRADLE_PROJECT_signingPassword: ${{ secrets.GPG_SIGNING_PASSWORD }}
run: ./gradlew publishReleasePublicationToMavenLocal

# Build and sign the publication bundle
- name: Build Publication Bundle
env:
ORG_GRADLE_PROJECT_signingKey: ${{ secrets.GPG_SIGNING_KEY }}
ORG_GRADLE_PROJECT_signingPassword: ${{ secrets.GPG_SIGNING_PASSWORD }}
run: ./gradlew publishReleasePublicationToMavenLocalRepository

# Create deployment bundle for Central Portal
- name: Create Deployment Bundle
run: |
cd library/build/maven-local-repository
zip -r ../deployment-bundle.zip .

# Publish to Central Portal
- name: Publish to Central Portal
run: |
HTTP_STATUS=$(curl --request POST \
--silent \
--output response.json \
--write-out "%{http_code}" \
--user '${{ env.CENTRAL_USERNAME }}:${{ env.CENTRAL_PASSWORD }}' \
Copy link

Copilot AI Feb 12, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The Central Portal credentials are populated at runtime via $GITHUB_ENV in a previous step, but ${{ env.CENTRAL_USERNAME }} / ${{ env.CENTRAL_PASSWORD }} are evaluated as GitHub expressions before the step runs, so they may be empty here. Use the shell env vars ($CENTRAL_USERNAME / $CENTRAL_PASSWORD) instead so the values set from AWS Secrets Manager are actually used.

Suggested change
--user '${{ env.CENTRAL_USERNAME }}:${{ env.CENTRAL_PASSWORD }}' \
--user "$CENTRAL_USERNAME:$CENTRAL_PASSWORD" \

Copilot uses AI. Check for mistakes.
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

No, CENTRAL_USERNAME and CENTRAL_PASSWORD are set in the environment when retrieving the secrets by executing aws secretsmanager get-secret-value

--form bundle=@library/build/deployment-bundle.zip \
https://central.sonatype.com/api/v1/publisher/upload?publishingType=AUTOMATIC)

echo "Response from Central Portal:"
cat response.json
echo

# Check if the upload was successful based on HTTP status code
if [ "$HTTP_STATUS" -lt 200 ] || [ "$HTTP_STATUS" -ge 300 ]; then
echo "Error: Upload failed with HTTP status ${HTTP_STATUS}"
fi
2 changes: 1 addition & 1 deletion .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -137,7 +137,7 @@ jobs:
GH_TOKEN: ${{ github.token }}
RELEASE_TAG: ${{ needs.prerelease-prep.outputs.tag_name }}
run: |
gh workflow run release-publish-ossrh.yml --ref refs/tags/$RELEASE_TAG
gh workflow run release-publish.yml --ref refs/tags/$RELEASE_TAG

# This job runs post-release steps
post-release:
Expand Down
22 changes: 3 additions & 19 deletions library/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -111,26 +111,10 @@ publishing {

// Here we define some repositories that we can publish our outputs to.
repositories {
// Specifying that this is a custom maven repository.
maven {
// This is the name of the repo that is used as the value of ${target}
// from above.
name = "OSSRH"

// Self-explanatory.
setUrl {
val repositoryId =
System.getenv("SONATYPE_REPOSITORY_ID") ?: error("Missing env variable: SONATYPE_REPOSITORY_ID")
"https://oss.sonatype.org/service/local/staging/deployByRepositoryId/${repositoryId}/"
}

// These need to be defined in ~/.gradle/gradle.properties:
// ossrhUsername=<your sonatype jira username>
// ossrhPassword=<your sonatype jira password>
credentials {
username = project.findProperty("ossrhUsername") as String?
password = project.findProperty("ossrhPassword") as String?
}
// publish to a local directory first
name = "MavenLocal"
url = uri("${buildDir}/maven-local-repository")
}
}
}
Expand Down