Skip to content

Commit 953932a

Browse files
Copilotedburns
andauthored
Unify publish.yml to include Java via workflow_call (#1938)
* Initial plan * feat: unify publish.yml to include Java via workflow_call - Add workflow_call trigger to java-publish-maven.yml alongside existing workflow_dispatch (inputs mirrored exactly) - Add publish-java job to publish.yml that calls the Java workflow with releaseVersion and prerelease inputs, skipped for unstable - Update github-release job to use always() with explicit per-language status checks so Java failure doesn't block cross-language release Closes #1874 Co-authored-by: edburns <75821+edburns@users.noreply.github.com> * Fix review comments: declare workflow_call secrets, gate Java publish to main, accept preview version format Co-authored-by: edburns <75821+edburns@users.noreply.github.com> * Tighten version regex: use unified alternation to prevent ambiguous suffix combinations Co-authored-by: edburns <75821+edburns@users.noreply.github.com> --------- Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: edburns <75821+edburns@users.noreply.github.com> Co-authored-by: Ed Burns <edburns@microsoft.com>
1 parent 532c2b1 commit 953932a

2 files changed

Lines changed: 51 additions & 5 deletions

File tree

.github/workflows/java-publish-maven.yml

Lines changed: 31 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,34 @@ on:
2222
type: boolean
2323
required: false
2424
default: false
25+
workflow_call:
26+
inputs:
27+
releaseVersion:
28+
description: "Release version (e.g., 1.0.0). If empty, derives from pom.xml by removing -SNAPSHOT"
29+
required: false
30+
type: string
31+
developmentVersion:
32+
description: "Next development version (e.g., 1.0.1-SNAPSHOT). If empty, increments patch version"
33+
required: false
34+
type: string
35+
prerelease:
36+
description: "Is this a prerelease?"
37+
type: boolean
38+
required: false
39+
default: false
40+
secrets:
41+
JAVA_RELEASE_TOKEN:
42+
required: true
43+
JAVA_RELEASE_GITHUB_TOKEN:
44+
required: true
45+
JAVA_MAVEN_CENTRAL_USERNAME:
46+
required: true
47+
JAVA_MAVEN_CENTRAL_PASSWORD:
48+
required: true
49+
JAVA_GPG_SECRET_KEY:
50+
required: true
51+
JAVA_GPG_PASSPHRASE:
52+
required: true
2553

2654
permissions:
2755
contents: write
@@ -144,10 +172,10 @@ jobs:
144172
exit 1
145173
fi
146174
else
147-
# Split version: supports "0.1.32", "0.1.32-java.0", and "0.1.32-java-preview.0" formats
175+
# Split version: supports "0.1.32", "0.1.32-preview.0", "0.1.32-java.0", and "0.1.32-java-preview.0" formats
148176
# Validate RELEASE_VERSION format explicitly to provide clear errors
149-
if ! echo "$RELEASE_VERSION" | grep -qE '^[0-9]+\.[0-9]+\.[0-9]+(-(beta-)?java(-preview)?\.[0-9]+)?$'; then
150-
echo "Error: RELEASE_VERSION '$RELEASE_VERSION' is invalid. Expected format: M.M.P, M.M.P-java.N, M.M.P-java-preview.N, M.M.P-beta-java.N, or M.M.P-beta-java-preview.N (e.g., 1.2.3, 1.2.3-java.0, 1.2.3-java-preview.0, 1.2.3-beta-java.0, or 1.2.3-beta-java-preview.0)." >&2
177+
if ! echo "$RELEASE_VERSION" | grep -qE '^[0-9]+\.[0-9]+\.[0-9]+(-(preview|(beta-)?java(-preview)?)\.[0-9]+)?$'; then
178+
echo "Error: RELEASE_VERSION '$RELEASE_VERSION' is invalid. Expected format: M.M.P, M.M.P-preview.N, M.M.P-java.N, M.M.P-java-preview.N, M.M.P-beta-java.N, or M.M.P-beta-java-preview.N (e.g., 1.2.3, 1.2.3-preview.0, 1.2.3-java.0, 1.2.3-java-preview.0, 1.2.3-beta-java.0, or 1.2.3-beta-java-preview.0)." >&2
151179
exit 1
152180
fi
153181
# Extract the base M.M.P portion (before any qualifier)

.github/workflows/publish.yml

Lines changed: 20 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -229,10 +229,28 @@ jobs:
229229
with:
230230
packages-dir: python/dist/
231231

232+
publish-java:
233+
name: Publish Java SDK
234+
if: github.event.inputs.dist-tag != 'unstable' && github.ref == 'refs/heads/main'
235+
needs: version
236+
uses: ./.github/workflows/java-publish-maven.yml
237+
with:
238+
releaseVersion: ${{ needs.version.outputs.version }}
239+
prerelease: ${{ github.event.inputs.dist-tag == 'prerelease' }}
240+
secrets: inherit
241+
232242
github-release:
233243
name: Create GitHub Release
234-
needs: [version, publish-nodejs, publish-dotnet, publish-python, publish-rust]
235-
if: github.ref == 'refs/heads/main' && github.event.inputs.dist-tag != 'unstable'
244+
needs: [version, publish-nodejs, publish-dotnet, publish-python, publish-rust, publish-java]
245+
if: |
246+
always() &&
247+
github.ref == 'refs/heads/main' &&
248+
github.event.inputs.dist-tag != 'unstable' &&
249+
needs.version.result == 'success' &&
250+
needs.publish-nodejs.result == 'success' &&
251+
needs.publish-dotnet.result == 'success' &&
252+
needs.publish-python.result == 'success' &&
253+
needs.publish-rust.result == 'success'
236254
runs-on: ubuntu-latest
237255
steps:
238256
- uses: actions/checkout@v6.0.2

0 commit comments

Comments
 (0)