You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: docs/07_release_instructions.md
+24-20Lines changed: 24 additions & 20 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1,12 +1,16 @@
1
-
### Preliminary steps
1
+
#Release instructions for normal releases
2
2
3
-
#### Permissions
3
+
This page just contains detailed instructions for normal releases. Refer to [Releasing](../06_releasing) for other information about releases.
4
+
5
+
## Preliminary steps
6
+
7
+
### Permissions
4
8
5
9
- Have admin rights on Weblate
6
10
- You should be able to access [Weblate's Maintenance page](https://hosted.weblate.org/projects/newpipe/#repository)
7
11
- Have at least maintainer rights on the NewPipe and NewPipeExtractor repos
8
12
9
-
####Repositories
13
+
### Repositories
10
14
11
15
- Have a cloned NewPipe local repository (for the rest of the page, `origin` is assumed to be the remote at `github.com/TeamNewPipe/NewPipe`)
12
16
- Add the `weblate` remote to the same local repository (the URL used below can be found on the Maintenance page on Weblate)
@@ -17,17 +21,17 @@
17
21
-`git checkout dev`
18
22
-`git pull origin dev`
19
23
20
-
####Version name and conventions
24
+
### Version name and conventions
21
25
22
26
- Find the version code of the next release by looking for `versionCode` in [`app/build.gradle`](https://github.com/TeamNewPipe/NewPipe/blob/dev/app/build.gradle): 1 added to that value (from now on called `NEW_VERSION_CODE`) will be the new value (but do not edit the file yet)
23
27
- Choose the version number of the next release according to [semantic versioning](https://semver.org/) (from now on called `X.X.X`)
24
28
25
-
####Identification
29
+
### Identification
26
30
27
31
- Have `gpg` installed and usable on your PC
28
32
- Have a GPG key, which can be used to verify that a file is really from you
29
33
30
-
###Pull changes from Weblate
34
+
## Pull changes from Weblate
31
35
32
36
- Go to [Weblate's Maintenance tab](https://hosted.weblate.org/projects/newpipe/#repository)
33
37
- Press the *Lock* button to prevent translators from translating while you are creating commits; remember to *Unlock* later!
@@ -50,7 +54,7 @@
50
54
- Merge `weblate-dev` into `dev`:
51
55
- `git merge weblate-dev`
52
56
53
-
### Create a changelog
57
+
## Create a changelog
54
58
55
59
- Finalize the draft changelog [kept on GitHub](https://github.com/TeamNewPipe/NewPipe/releases), in case there are still some things to fill in
56
60
- Remove the temporary instructions, and the numbers before `-` which keep track of the order in which the PRs were merged, as that info is useful only for the blog post writers
- `git commit -m "Add changelog for vX.X.X (NEW_VERSION_CODE)"`
80
84
81
-
### Push the changelog to Weblate
85
+
## Push the changelog to Weblate
82
86
83
87
Now there should be two new commits (the Weblate and changelog ones) on your local `dev` branch, which are not on NewPipe's remote `dev` branch.
84
88
- If you are an admin of the NewPipe repo, just push the changes to the remote `dev`
@@ -91,7 +95,7 @@ Now there should be two new commits (the Weblate and changelog ones) on your loc
91
95
- Weblate's components are connected to NewPipe's `dev` branch, and will update changes from there
92
96
- Weblate's git repo is not writable, so there is no way to push commits there manually
93
97
94
-
### Creating the release branch
98
+
## Creating the release branch
95
99
96
100
- Create a new branch starting from `dev`, named `release-X.X.X`, and switch to it
97
101
- `git checkout -b release-X.X.X`
@@ -109,7 +113,7 @@ Now there should be two new commits (the Weblate and changelog ones) on your loc
109
113
- Push the newly created branch to the NewPipe repo
110
114
- `git push upstream release-X.X.X`
111
115
112
-
### Creating the Pull Request
116
+
## Creating the Pull Request
113
117
114
118
- Create a Pull Request (PR) from the new branch you just pushed
115
119
- If you used the correct branch name you should be able to use this url, after changing the X.X.X: https://github.com/TeamNewPipe/NewPipe/pull/new/release-X.X.X
@@ -124,7 +128,7 @@ Now there should be two new commits (the Weblate and changelog ones) on your loc
124
128
- In case some issue would be fixed when the release PR is merged, link them using the "Development" tab on the right, or add a "Fixes #...." in the PR description
125
129
- *for example, check out [#8231](https://github.com/TeamNewPipe/NewPipe/pull/8231) for reference*
126
130
127
-
### Creating the issue
131
+
## Creating the issue
128
132
129
133
- Create an issue
130
134
- Click [here](https://github.com/TeamNewPipe/NewPipe/issues/new) to open one without a template
@@ -141,7 +145,7 @@ Now there should be two new commits (the Weblate and changelog ones) on your loc
141
145
- Once you have created the issue, pin it using the "Pin issue" button on the right
142
146
- *for example, check out [#8230](https://github.com/TeamNewPipe/NewPipe/issues/8230) for reference*
143
147
144
-
### Testing APKs
148
+
## Testing APKs
145
149
146
150
The first time you open the release issue, and then each time some changes are made to the release PR, you should provide a debug APK in the `## Testing for regressions` section.
147
151
- Wait for the Continuous Integration (CI) to finish testing the PR, then download the debug APK it will have built from the "Checks" tab
@@ -156,13 +160,13 @@ Sometimes it might be needed to also provide a release APK. In this case follow
156
160
- Use this naming scheme: `NewPipe_vX.X.X_RC1_release.apk`
157
161
- Add a line to the `## Testing for regressions` section, of this form: `Debug APK (built and signed by @YOUR_GITHUB_USERNAME): ...`
158
162
159
-
### Taking care of regressions
163
+
## Taking care of regressions (quickfixes)
160
164
161
-
The release issue and pull request should stay open for **roughly one week**, so that people can test the provided APKs and give feedback. If a *regression* is reported by some user, it should possibly be solved before releasing, otherwise the app would become more broken after each release. A *regression* is a bug now present in some code that used to run well in the last release, but was then modified in this release (supposedly to fix something else) and is now broken. So the following do not classify as regressions: some videos stop working because YouTube made some changes; the newly introduced big feature XYZ is still not perfect and has some bugs; a random crash reproducible also on previous versions... You get the point. Before releasing, try to fix any regression that come out, but avoid fixing non-regressions, since those should be treated with the same care and attention as all other issues.
165
+
The release issue and pull request should stay open for **roughly one week**, so that people can test the provided APKs and give feedback. If a *regression* is reported by some user, it should possibly be solved before releasing, otherwise the app would become more broken after each release. A *regression* is a bug now present in some code that used to run well in the last release, but was then modified in this release (supposedly to fix something else) and is now broken. So the following do not classify as regressions: some videos stop working because YouTube made some changes; the newly introduced big feature XYZ is still not perfect and has some bugs; a random crash reproducible also on previous versions... You get the point. Before releasing, try to fix any regression that come out, but avoid fixing non-regressions, since those should be treated with the same care and attention as all other issues. Maintainers have to be aware that they might be required to fix regressions, so plan your release at a time when you are available.
162
166
163
-
Pull requests fixing regressions should target the `release-X.X.X` branch, not the `dev` branch! When merging those PRs, also provide a new RC APK.
167
+
Pull requests fixing regressions should target the `release-X.X.X` branch, not the `dev` branch! When merging those PRs, also provide a new Release Candidate APK.
164
168
165
-
### Finally merging the pull request
169
+
## Finally merging the pull request
166
170
167
171
Once enough time has passed and all regressions and TODOs have been solved, you can proceed with the actual release. The following points include merging weblate changes again.
168
172
- In the local repository, check out the release branch and make sure it is up-to-date with the remote
@@ -196,7 +200,7 @@ Once enough time has passed and all regressions and TODOs have been solved, you
196
200
- Go to [Weblate's Maintenance tab](https://hosted.weblate.org/projects/newpipe/#repository)
197
201
- **Press *Unlock***
198
202
199
-
### Creating the APK
203
+
## Creating the APK
200
204
201
205
Now on the remote `master` branch there is the release code which you need to turn into an APK.
202
206
- In the local repository, check out the `master` branch and make sure it is up-to-date with the remote
@@ -211,7 +215,7 @@ Now on the remote `master` branch there is the release code which you need to tu
211
215
- Double press Ctrl, type `gradle assembleRelease`, press Enter
212
216
- After a while you should find the APK under `./app/build/outputs/apk/release/app-release-unsigned.apk`
213
217
214
-
### Having the APK signed by @TheAssassin
218
+
## Having the APK signed by @TheAssassin
215
219
216
220
Currently @TheAssassin is the only holder of NewPipe's APK signing keys. Therefore you should send the unsigned APK to him and he will send a signed one back. He will also then publish the signed APK in NewPipe's F-Droid repo.
217
221
- Rename `app-release-unsigned.apk` to `NewPipe_vX.X.X.apk`
@@ -228,7 +232,7 @@ Currently @TheAssassin is the only holder of NewPipe's APK signing keys. Therefo
228
232
- Install it on your device to see if everything went well (note that installation will work only if your currently installed version of newpipe comes from NewPipe's F-Droid repo or GitHub)
229
233
- Tell @TheAssassin to "push the buttons", i.e. publish the signed APK in NewPipe's F-Droid repo.
230
234
231
-
### Publishing the release
235
+
## Publishing the release
232
236
233
237
- Go to the draft changelog [kept on GitHub](https://github.com/TeamNewPipe/NewPipe/releases)
234
238
- Set `vX.X.X` as the tag name
@@ -238,7 +242,7 @@ Currently @TheAssassin is the only holder of NewPipe's APK signing keys. Therefo
238
242
- Publish the release
239
243
- Profit :-D
240
244
241
-
### Blog post
245
+
## Blog post
242
246
243
247
> I do not know enough about blog post writing and publishing to fill in this section, I'll leave it to @opusforlife2 and @Poolitzer.
0 commit comments