@@ -9,12 +9,11 @@ platform :swift do
99 sh ( 'git' , 'fetch' )
1010 end
1111
12- desc "Create a release version by building and committing a changelog, pushing a tag to GitHub "
13- lane :release do
12+ desc "Kickoff the next release by updating the changelog, updating the component version, and creating a PR to main "
13+ lane :kickoff_release do
1414 next_version , commits = calculate_next_release_version
1515
16- UI . message ( "Releasing version: #{ next_version } " )
17-
16+ UI . message ( "Kicking off new release for version: #{ next_version } " )
1817 # Increment all specs and plists
1918 increment_versions ( version : next_version )
2019
@@ -25,11 +24,16 @@ platform :swift do
2524 # Update Package dependencies
2625 sh ( 'bundle' , 'exec' , 'swift' , 'package' , 'update' )
2726
27+ # Create and push the new branch
28+ release_branch = "release/#{ next_version } "
29+ sh ( 'git' , 'checkout' , '-b' , release_branch )
30+ sh ( 'git' , 'push' , '--set-upstream' , 'origin' , release_branch )
31+
2832 # Commit and push
29- release_commit ( version : next_version )
33+ pr_title = release_commit ( version : next_version ) . to_s
3034
31- # Create tag and push to origin
32- add_tag ( version : next_version )
35+ # Open the PR to main
36+ sh ( 'gh' , 'pr' , 'create' , '--title' , pr_title , '--body' , 'Kicking off new release' , '--base' , 'main' , '--head' , release_branch )
3337 end
3438
3539 desc "Increment versions"
@@ -45,18 +49,41 @@ platform :swift do
4549 sh ( 'git' , 'config' , '--global' , 'user.email' , ENV [ 'GITHUB_EMAIL' ] )
4650 sh ( 'git' , 'config' , '--global' , 'user.name' , ENV [ 'GITHUB_USER' ] )
4751
48- commit_message = "chore: Release #{ next_version } [skip ci] "
52+ commit_message = "chore: Release #{ next_version } "
4953 sh ( 'git' , 'commit' , '-am' , commit_message )
54+ sh ( 'git' , 'push' )
55+ commit_message
56+ end
57+
58+ desc "Create a pre-release version by pushing a new tag to GitHub"
59+ lane :unstable_release do
60+ next_version = calculate_next_canary_version
61+
62+ UI . message ( "Releasing Authenticator unstable version: #{ next_version } " )
63+
64+ # Create tag and push to origin
65+ add_tag ( version : next_version )
66+ end
67+
68+ desc "Create a release version by pushing a new tag to GitHub and creating a new draft release"
69+ lane :stable_release do |options |
70+ next_version = options [ :version ]
71+
72+ UI . message ( "Releasing Authenticator version: #{ next_version } " )
5073
51- # push to origin
52- sh ( 'git' , 'push' , 'origin' , 'release' )
53- sh ( 'git' , 'push' , 'origin' , 'release:main' )
74+ # Create and push the new tag
75+ add_tag ( version : next_version )
76+
77+ # Create draft release
78+ release_date = sh ( "echo $(date +%F)" )
79+ release_title = "#{ next_version } (#{ release_date } )"
80+ sh ( 'gh' , 'release' , 'create' , next_version , '--draft' , '--title' , release_title )
5481 end
5582
83+
5684 desc "Tag in git and push to GitHub"
5785 private_lane :add_tag do |options |
58- next_version = options [ :version ]
59- next_tag = "#{ next_version } "
86+ next_tag = options [ :version ] . to_s
6087
6188 add_git_tag ( tag : next_tag )
6289 push_git_tags ( tag : next_tag )
0 commit comments