release/v0.7.4
claude/smbcloud-github-app-k9641p
development
feature/apps
feature/build-release
feature/ci-docs
feature/ci-ruby-gems
feature/cicd
feature/completion
feature/dist-nuget
feature/fix-ci-sdk-pypi-rubygem
feature/fix-clippy-on-stable-channel
feature/fix-deployment-script
feature/github-email
feature/gresiq-v1
feature/project-new-structure
feature/rsync-deploy
feature/ruby-runner
feature/sdk-npm
feature/sdk-workflows
feature/smbcloud-cli-release-npm
feature/smbcloud-deploy
feature/wasm
main
release/v0.7.4
| 1 | .PHONY: help release patch minor major custom sync-release-metadata regenerate-release-lockfiles check-release-versions |
| 2 | |
| 3 | help: |
| 4 | @echo "Release commands:" |
| 5 | @echo " make patch" |
| 6 | @echo " make minor" |
| 7 | @echo " make major" |
| 8 | @echo " make custom VERSION=0.4.14" |
| 9 | |
| 10 | release: |
| 11 | @test -n "$(BUMP)" || (echo "BUMP is required" && exit 1) |
| 12 | @if [ "$(BUMP)" = "custom" ] && [ -z "$(VERSION)" ]; then echo "VERSION is required for custom releases"; exit 1; fi |
| 13 | @case "$$(git branch --show-current)" in development|release/v*) ;; *) echo "Releases must be prepared on development or a release/v<version> branch"; exit 1;; esac |
| 14 | @if [ -n "$$(git status --short --untracked-files=all)" ]; then echo "Working tree must be clean before running a release"; exit 1; fi |
| 15 | @if [ "$(BUMP)" = "custom" ]; then \ |
| 16 | cargo workspaces version custom "$(VERSION)" --yes --no-git-commit --force "*"; \ |
| 17 | else \ |
| 18 | cargo workspaces version "$(BUMP)" --yes --no-git-commit --force "*"; \ |
| 19 | fi |
| 20 | @$(MAKE) sync-release-metadata |
| 21 | @$(MAKE) regenerate-release-lockfiles |
| 22 | @$(MAKE) check-release-versions |
| 23 | @release_version=$$(sed -n 's/^version = "\(.*\)"/\1/p' crates/cli/Cargo.toml | head -n 1); \ |
| 24 | if [ -z "$$release_version" ]; then echo "Unable to determine release version from crates/cli/Cargo.toml"; exit 1; fi; \ |
| 25 | release_branch=$$(git branch --show-current); \ |
| 26 | git add -A; \ |
| 27 | git commit -m "Release $$release_version"; \ |
| 28 | if [ "$$release_branch" = "development" ]; then \ |
| 29 | git tag "v$$release_version"; \ |
| 30 | echo "Release $$release_version prepared locally."; \ |
| 31 | echo "Next: git push origin development && git push origin v$$release_version"; \ |
| 32 | else \ |
| 33 | echo "Release $$release_version prepared on $$release_branch (not tagged)."; \ |
| 34 | echo "The tag belongs on development, on the merge commit."; \ |
| 35 | echo "Next: git push origin $$release_branch"; \ |
| 36 | echo " CI green: git checkout development && git merge --no-ff $$release_branch"; \ |
| 37 | echo " then: git tag v$$release_version && git push origin development && git push origin v$$release_version"; \ |
| 38 | fi |
| 39 | |
| 40 | sync-release-metadata: |
| 41 | @node ./scripts/sync-release-version.mjs |
| 42 | |
| 43 | regenerate-release-lockfiles: |
| 44 | @# Ruby extension Cargo.lock files resolve crates.io dependencies that are |
| 45 | @# published only after this release tag is pushed. The SDK gem workflow waits |
| 46 | @# for those crates and resolves them during its build, so do not attempt to |
| 47 | @# regenerate the locks while preparing the tag locally. |
| 48 | @BUNDLE_GEMFILE=sdk/gems/auth/Gemfile bundle lock |
| 49 | @BUNDLE_GEMFILE=sdk/gems/email/Gemfile bundle lock |
| 50 | @BUNDLE_GEMFILE=sdk/gems/model/Gemfile bundle lock |
| 51 | |
| 52 | check-release-versions: |
| 53 | @node ./scripts/check-release-versions.mjs |
| 54 | |
| 55 | patch: |
| 56 | @$(MAKE) release BUMP=patch |
| 57 | |
| 58 | minor: |
| 59 | @$(MAKE) release BUMP=minor |
| 60 | |
| 61 | major: |
| 62 | @$(MAKE) release BUMP=major |
| 63 | |
| 64 | custom: |
| 65 | @$(MAKE) release BUMP=custom VERSION="$(VERSION)" |