1# Generated from xtask::workflows::bump_zed_version
2# Rebuild with `cargo xtask workflows`.
3name: bump_zed_version
4on:
5 workflow_dispatch:
6 inputs:
7 target:
8 description: 'Which channels to bump: all, main, preview, or stable'
9 type: string
10 default: all
11jobs:
12 resolve_versions:
13 if: github.repository_owner == 'zed-industries'
14 runs-on: namespace-profile-16x32-ubuntu-2204
15 steps:
16 - id: generate-token
17 name: steps::authenticate_as_zippy
18 uses: actions/create-github-app-token@f8d387b68d61c58ab83c6c016672934102569859
19 with:
20 app-id: ${{ secrets.ZED_ZIPPY_APP_ID }}
21 private-key: ${{ secrets.ZED_ZIPPY_APP_PRIVATE_KEY }}
22 - name: steps::checkout_repo
23 uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd
24 with:
25 clean: false
26 ref: main
27 token: ${{ steps.generate-token.outputs.token }}
28 - id: versions
29 name: bump_zed_version::resolve_versions::extract_versions
30 run: |
31 version=$(script/get-crate-version zed)
32 major=$(echo "$version" | cut -d. -f1)
33 minor=$(echo "$version" | cut -d. -f2)
34
35 channel=$(cat crates/zed/RELEASE_CHANNEL)
36 if [[ "$channel" != "dev" && "$channel" != "nightly" ]]; then
37 echo "::error::release channel on main should be dev or nightly, found: $channel"
38 exit 1
39 fi
40
41 # Next main version after bump
42 next_version="${major}.$((minor + 1)).0"
43 next_major=$(echo "$next_version" | cut -d. -f1)
44 next_minor=$(echo "$next_version" | cut -d. -f2)
45 pr_branch="bump-zed-to-v${next_major}.${next_minor}.0"
46
47 # New preview branch from current main
48 preview_branch="v${major}.${minor}.x"
49 preview_tag="v${version}-pre"
50
51 # Current preview to promote to stable — derive branch from released preview version
52 released_preview=$(script/get-released-version preview)
53 if [[ -z "$released_preview" ]]; then
54 echo "::error::could not determine released preview version"
55 exit 1
56 fi
57 stable_major=$(echo "$released_preview" | cut -d. -f1)
58 stable_minor=$(echo "$released_preview" | cut -d. -f2)
59 stable_branch="v${stable_major}.${stable_minor}.x"
60
61 # Final validation
62 for var in next_version pr_branch preview_branch preview_tag stable_branch; do
63 if [[ -z "${!var}" ]]; then
64 echo "::error::failed to compute $var"
65 exit 1
66 fi
67 done
68
69 {
70 echo "next_version=$next_version"
71 echo "pr_branch=$pr_branch"
72 echo "preview_branch=$preview_branch"
73 echo "preview_tag=$preview_tag"
74 echo "stable_branch=$stable_branch"
75 } >> "$GITHUB_OUTPUT"
76
77 echo "Resolved: next=$next_version preview=$preview_branch($preview_tag) stable=$stable_branch pr=$pr_branch"
78 outputs:
79 next_version: ${{ steps.versions.outputs.next_version }}
80 pr_branch: ${{ steps.versions.outputs.pr_branch }}
81 preview_branch: ${{ steps.versions.outputs.preview_branch }}
82 preview_tag: ${{ steps.versions.outputs.preview_tag }}
83 stable_branch: ${{ steps.versions.outputs.stable_branch }}
84 bump_main:
85 needs:
86 - resolve_versions
87 if: inputs.target == 'all' || inputs.target == 'main'
88 runs-on: namespace-profile-16x32-ubuntu-2204
89 steps:
90 - id: generate-token
91 name: steps::authenticate_as_zippy
92 uses: actions/create-github-app-token@f8d387b68d61c58ab83c6c016672934102569859
93 with:
94 app-id: ${{ secrets.ZED_ZIPPY_APP_ID }}
95 private-key: ${{ secrets.ZED_ZIPPY_APP_PRIVATE_KEY }}
96 - name: steps::checkout_repo
97 uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd
98 with:
99 clean: false
100 ref: main
101 token: ${{ steps.generate-token.outputs.token }}
102 - name: steps::install_cargo_edit
103 uses: taiki-e/install-action@02cc5f8ca9f2301050c0c099055816a41ee05507
104 with:
105 tool: cargo-edit
106 - name: bump_zed_version::bump_main::bump_version
107 run: cargo set-version -p zed --bump minor
108 - name: steps::create_pull_request
109 uses: peter-evans/create-pull-request@98357b18bf14b5342f975ff684046ec3b2a07725
110 with:
111 title: Bump Zed to v${{ needs.resolve_versions.outputs.next_version }}
112 body: |-
113 Release Notes:
114
115 - N/A
116 commit-message: Bump Zed to v${{ needs.resolve_versions.outputs.next_version }}
117 branch: ${{ needs.resolve_versions.outputs.pr_branch }}
118 committer: zed-zippy[bot] <234243425+zed-zippy[bot]@users.noreply.github.com>
119 author: zed-zippy[bot] <234243425+zed-zippy[bot]@users.noreply.github.com>
120 base: main
121 delete-branch: true
122 token: ${{ steps.generate-token.outputs.token }}
123 sign-commits: true
124 assignees: ${{ github.actor }}
125 create_preview_branch:
126 needs:
127 - resolve_versions
128 if: inputs.target == 'all' || inputs.target == 'preview'
129 runs-on: namespace-profile-16x32-ubuntu-2204
130 steps:
131 - id: generate-token
132 name: steps::authenticate_as_zippy
133 uses: actions/create-github-app-token@f8d387b68d61c58ab83c6c016672934102569859
134 with:
135 app-id: ${{ secrets.ZED_ZIPPY_APP_ID }}
136 private-key: ${{ secrets.ZED_ZIPPY_APP_PRIVATE_KEY }}
137 - name: steps::checkout_repo
138 uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd
139 with:
140 clean: false
141 ref: main
142 token: ${{ steps.generate-token.outputs.token }}
143 - id: main-sha
144 name: bump_zed_version::create_preview_branch::get_main_sha
145 run: echo "main_sha=$(git rev-parse HEAD)" >> "$GITHUB_OUTPUT"
146 - name: bump_zed_version::create_preview_branch::promote_to_preview
147 run: echo -n preview > crates/zed/RELEASE_CHANNEL
148 - name: steps::create_branch
149 uses: actions/github-script@f28e40c7f34bde8b3046d885e986cb6290c5673b
150 with:
151 script: |
152 github.rest.git.createRef({
153 owner: context.repo.owner,
154 repo: context.repo.repo,
155 ref: 'refs/heads/${{ needs.resolve_versions.outputs.preview_branch }}',
156 sha: '${{ steps.main-sha.outputs.main_sha }}'
157 })
158 github-token: ${{ steps.generate-token.outputs.token }}
159 - id: commit
160 name: steps::bot_commit
161 uses: IAreKyleW00t/verified-bot-commit@126a6a11889ab05bcff72ec2403c326cd249b84c
162 with:
163 message: ${{ needs.resolve_versions.outputs.preview_branch }} preview
164 ref: refs/heads/${{ needs.resolve_versions.outputs.preview_branch }}
165 files: crates/zed/RELEASE_CHANNEL
166 token: ${{ steps.generate-token.outputs.token }}
167 - name: steps::create_tag
168 uses: actions/github-script@f28e40c7f34bde8b3046d885e986cb6290c5673b
169 with:
170 script: |
171 github.rest.git.createRef({
172 owner: context.repo.owner,
173 repo: context.repo.repo,
174 ref: 'refs/tags/${{ needs.resolve_versions.outputs.preview_tag }}',
175 sha: '${{ steps.commit.outputs.commit }}'
176 })
177 github-token: ${{ steps.generate-token.outputs.token }}
178 promote_to_stable:
179 needs:
180 - resolve_versions
181 if: inputs.target == 'all' || inputs.target == 'stable'
182 runs-on: namespace-profile-16x32-ubuntu-2204
183 steps:
184 - id: generate-token
185 name: steps::authenticate_as_zippy
186 uses: actions/create-github-app-token@f8d387b68d61c58ab83c6c016672934102569859
187 with:
188 app-id: ${{ secrets.ZED_ZIPPY_APP_ID }}
189 private-key: ${{ secrets.ZED_ZIPPY_APP_PRIVATE_KEY }}
190 - name: steps::checkout_repo
191 uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd
192 with:
193 clean: false
194 ref: ${{ needs.resolve_versions.outputs.stable_branch }}
195 token: ${{ steps.generate-token.outputs.token }}
196 - id: stable-info
197 name: bump_zed_version::promote_to_stable
198 run: |
199 stable_version=$(script/get-crate-version zed)
200 {
201 echo "stable_tag=v${stable_version}"
202 } >> "$GITHUB_OUTPUT"
203 - name: bump_zed_version::promote_to_stable
204 run: echo -n stable > crates/zed/RELEASE_CHANNEL
205 - id: commit
206 name: steps::bot_commit
207 uses: IAreKyleW00t/verified-bot-commit@126a6a11889ab05bcff72ec2403c326cd249b84c
208 with:
209 message: ${{ needs.resolve_versions.outputs.stable_branch }} stable
210 ref: refs/heads/${{ needs.resolve_versions.outputs.stable_branch }}
211 files: crates/zed/RELEASE_CHANNEL
212 token: ${{ steps.generate-token.outputs.token }}
213 - name: steps::create_tag
214 uses: actions/github-script@f28e40c7f34bde8b3046d885e986cb6290c5673b
215 with:
216 script: |
217 github.rest.git.createRef({
218 owner: context.repo.owner,
219 repo: context.repo.repo,
220 ref: 'refs/tags/${{ steps.stable-info.outputs.stable_tag }}',
221 sha: '${{ steps.commit.outputs.commit }}'
222 })
223 github-token: ${{ steps.generate-token.outputs.token }}
224defaults:
225 run:
226 shell: bash -euxo pipefail {0}