Repository navigation
Conversation
The mesh, the two SDKs and the Android app are released on their own cycles and version sequences. The prefix of the tag selects the project: v* for the mesh, sdk/js/v* and sdk/python/v* for the SDKs, mobile/v* for the app. A GitHub Actions tag filter does not match "/" with "*", so the existing v* filters keep seeing mesh tags only. release.yml: the SDK jobs no longer wait for goreleaser and run only for their own prefix, stamping with sdk-version.sh --js or --python. Each SDK tag also gets a GitHub release that is not marked latest, with notes from the commits under the SDK directory and the contract files since the previous tag of that SDK (hack/release-notes.sh). goreleaser is pinned to GORELEASER_CURRENT_TAG/PREVIOUS_TAG so its changelog cannot start at an SDK tag, and its job summary shows hack/release-status.sh: which SDK or app releases the mesh release calls for. SDK publishing stays in this file because npm and PyPI trusted publishing are bound to its name. mobile.yml: triggers on mobile/v*, derives the version from that prefix and creates its own release instead of waiting for goreleaser's. make derives the version with git describe --match 'v*', and install.sh's API fallback skips the sdk/* and mobile/* releases. DEVELOPMENT.md documents the release process: what each tag publishes, cutting single and coordinated releases, when a mesh change needs an SDK or app release, how each project gets its version, retrying a failed run.
Contributor
There was a problem hiding this comment.
Code Review
This pull request documents and implements independent release cycles and versioning for the various projects in the repository (the mesh, JS/Python SDKs, and the mobile app). It introduces DEVELOPMENT.md, helper scripts (release-notes.sh and release-status.sh), and updates documentation, the Makefile, and installation scripts to handle project-specific tags separately from mesh tags. The review feedback suggests increasing the GitHub API per_page limit in the installation scripts to ensure mesh releases are not missed among numerous SDK/mobile releases, and improving error handling in release-notes.sh by avoiding piping git log directly to grep inside an if condition.
This branch has not been deployed
This file contains hidden or 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
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Merge after
v0.1.0is tagged, so every project starts its own version sequence from the same base.The mesh, the two SDKs and the Android app get independent release cycles. The prefix of the tag selects the project:
v1.2.3release.yml,deploy.yamlsdk/js/v1.2.3@sam-mesh/sdkrelease.ymlsdk/python/v1.2.3sam-meshrelease.ymlmobile/v1.2.3mobile.ymlA GitHub Actions tag filter never matches
/with*, so the existingv*filters (deploy, test, e2e, ...) keep seeing mesh tags only.Changes:
release.yml: SDK jobs no longerneedgoreleaser; each runs for its own prefix and stamps withsdk-version.sh --js|--python. An SDK tag also creates a GitHub release (--latest=false) with notes fromhack/release-notes.sh(commits since the previous tag of the same prefix, filtered to the SDK directory andapi/sam.proto,api/datalog.go). goreleaser getsGORELEASER_CURRENT_TAG/GORELEASER_PREVIOUS_TAGpinned tov*so its changelog cannot start at an SDK tag, and its job summary showshack/release-status.sh: which SDK or app releases this mesh release calls for. SDK publishing stays in this file because npm and PyPI trusted publishing are bound to the workflow file name; no re-registration is needed.mobile.yml: triggers onmobile/v*, derives the version name from that prefix, creates its own release instead of polling for goreleaser's.Makefile:git describe --tags --match 'v*'. Verified in a throwaway clone that without--matchansdk/js/v*tag on HEAD becomes the Go binary version.install.sh(and thesite/staticcopy): the API fallback, used while every mesh release is an rc, skipssdk/*andmobile/*releases.DEVELOPMENT.md: the release process; linked fromREADME.md,CONTRIBUTING.mdand the contributing page.Validation: shellcheck clean, workflows parse and pass actionlint (one pre-existing SC2086 in
mobile.yml),make -n buildderivesv0.1.0-rc.9.