Skip to content

UID2-6762: Consolidate release-notes pipeline onto shared_create_releases#229

Merged
jon8787 merged 8 commits into
mainfrom
jon-UID2-6762-consolidate-release-notes
May 12, 2026
Merged

UID2-6762: Consolidate release-notes pipeline onto shared_create_releases#229
jon8787 merged 8 commits into
mainfrom
jon-UID2-6762-consolidate-release-notes

Conversation

@jon8787
Copy link
Copy Markdown
Contributor

@jon8787 jon8787 commented May 11, 2026

Summary

Extend the shared_create_releases composite action to support all five publish platforms (Docker, Maven, PyPI, NuGet, iOS) and consolidate every inline mikepenz/release-changelog-builder step in the shared workflows onto the composite.

  • One canonical release-notes pipeline lives in actions/shared_create_releases/action.yaml — Build Changelog → Delete Draft Releases → Create Release (draft).
  • Each shared workflow now calls the composite via a single ~7-line step instead of duplicating ~30 lines of inline mikepenz / softprops / delete-draft logic.
  • No mikepenz or softprops/action-gh-release references remain outside the composite.

Closes UID2-6762 (decision and rationale documented in the ticket comments: mikepenz over GitHub-native, primarily to suppress @AUTHOR from the public-facing release pages via pr_template).

Side-effect fixes (bugs found during the audit)

  • PyPI template no longer emits a Maven <dependency> block — uses pip install <pkg>==<version> and links to the version-specific PyPI page.
  • NuGet template no longer emits a Maven <dependency> block — uses dotnet add package and links to the version-specific NuGet page.
  • Delete Draft Releases now runs for every platform (previously only shared-publish-java-to-docker-versioned had it).
  • shared-publish-to-docker-versioned bumped composite reference from @v2 to @v3 for consistency with the rest of the repo.

Coordination with PR #228

PR #228 (UID2-6764, SLSA build provenance) touches shared-publish-java-to-docker-versioned.yaml just above this PR's edit area (adds an Attest build provenance step between Push to Docker and the release-notes block). No line conflict but I'll rebase this PR after #228 merges to preserve the attestation step. This PR should land after #228 and update-major-version-tags.yaml should be run on main immediately after merge to promote v3 — same post-merge requirement as #228.

Caller-repo impact

None directly. Consumers reference IABTechLab/uid2-shared-actions/.github/workflows/...@v3 (floating major tag) and will pick up the change automatically once v3 is re-promoted. The 6 ticket-scope repos (operator, core, admin, optout, databricks, snowflake) get verified opportunistically as Behnam's caller-repo follow-up PRs from #228 cut their next real publish.

Test plan

🤖 Generated with Claude Code

…ases

Extend the shared_create_releases composite action to support all five
publish platforms (Docker, Maven, PyPI, NuGet, iOS) and consolidate every
inline mikepenz/release-changelog-builder step in the shared workflows
onto the composite.

Net result: one canonical release-notes pipeline (Build Changelog ->
Delete Draft Releases -> Create Release draft) in a single composite
action, with each workflow calling it via a single ~7-line step instead
of ~30 lines of duplicated inline mikepenz/delete-draft/softprops blocks.

Side-effect fixes:
- PyPI template no longer emits a Maven <dependency> block (uses
  pip install instead) and links to the version-specific PyPI page
- NuGet template no longer emits a Maven <dependency> block (uses
  dotnet add package) and links to the version-specific NuGet page
- Every workflow now has Delete Draft Releases (previously only
  shared-publish-java-to-docker-versioned had it)
- shared-publish-to-docker-versioned bumped from @v2 to @V3 for
  consistency with the rest of the repo

Decision and rationale documented in UID2-6762 (mikepenz over GitHub-
native: PR-line author suppression for public-facing release pages).
@jon8787 jon8787 force-pushed the jon-UID2-6762-consolidate-release-notes branch from d72d8eb to b944b53 Compare May 12, 2026 00:39
new_version: ${{ steps.version.outputs.new_version }}
github_token: ${{ secrets.GITHUB_TOKEN }}
publish_platform: PyPI
repo: ${{ env.REPO }}
Copy link
Copy Markdown
Contributor

@BehnamMozafari BehnamMozafari May 12, 2026

Choose a reason for hiding this comment

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

I think env.REPO will pass uid2-client-python and shared_create_releases will run pip install uid2-client-python==<version> which will fail since the project is registered as uid2-client on PyPI

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

Good catch — and the same pattern affects 4 of the Maven callers too (uid2-attestation-azureattestation-azure, similar for -gcp, -aws, and uid2-client-javauid2-client). 5 of 9 callers ship broken install snippets today.

Fixed in 31313d1 by extracting the real package identifier from the manifest at release time:

  • PyPI: greps the top-level name = "..." from pyproject.toml
  • Maven: uses mvn help:evaluate -Dexpression=project.artifactId -q -DforceStdout as the canonical source

Both fail loudly if extraction returns empty. NuGet stays hardcoded (workflow already only handles UID2.Client); Docker / iOS unaffected.

This also makes uid2-attestation-api and uid2-shared (currently correct by coincidence — repo name happens to equal artifactId) robust against future renames.

The PyPI install snippet and Maven dependency block in release notes
previously used `github.event.repository.name`, which differs from the
actual published package name in 5 of 9 consumer repos:

  PyPI:  uid2-client-python repo  → uid2-client package
  Maven: uid2-attestation-azure   → attestation-azure
  Maven: uid2-attestation-gcp     → attestation-gcp
  Maven: uid2-attestation-aws     → attestation-aws
  Maven: uid2-client-java         → uid2-client

Result: \`pip install\` / \`<dependency>\` snippets shown on the GitHub
Releases page produced 404s when copy-pasted.

Fix: read the real package identifier from each manifest at release time.
PyPI greps the top-level \`name = \"...\"\` from pyproject.toml; Maven uses
\`mvn help:evaluate -Dexpression=project.artifactId\` as the canonical
source. Both fail loudly if extraction returns empty.

Fixes Behnam's review comment on PR #229.
@jon8787 jon8787 merged commit 59602cb into main May 12, 2026
3 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants