Skip to content

Commit 7bf158d

Browse files
committed
Blend detailed release instructions into current docs
1 parent 09a0ac8 commit 7bf158d

File tree

4 files changed

+27
-89
lines changed

4 files changed

+27
-89
lines changed

docs/06_releasing.md

Lines changed: 3 additions & 69 deletions
Original file line numberDiff line numberDiff line change
@@ -65,80 +65,14 @@ Modify the PR's title if it does not represent the introduced changes anymore.
6565
After a maintainer merged the new feature into the dev branch,
6666
they should add the PR's title or a summary of the changes into the [release notes](#release-notes).
6767

68-
### Creating a New Release
68+
### Normal Releases
6969

7070
Once there are enough changes, and the maintainers believe that NewPipe is ready
7171
for a new version, they should prepare a new release.
7272
Be aware of the rule that a release should never be done on a Friday.
7373
For NewPipe, this means: __Don't do a release if you don't have time for it!!!__
7474

75-
By following the steps listed below, you can publish a stable version of NewPipe:
76-
77-
1. [Merge the translations from Weblate into NewPipe](../08_maintainers_view#merge-changes-from-weblate-into-newpipe).
78-
2. Update your local __dev__ branch and create a [changelog file](#changelog-file).
79-
Make sure to push the changes and [update Weblate](../08_maintainers_view#update-weblate).
80-
3. In your local NewPipe repo, fork the __dev__ branch into a new __release/x.y.z__ branch.
81-
4. Increase the [version number](#version-nomenclature) and update the version code in the `build.gradle` file.
82-
5. Open a pull request form the new __release/x.y.z__ branch into the __master__ branch.
83-
6. Create an issue pointing to the new pull request.
84-
The reason for opening an issue is that from my perception, people read issues more than pull requests.
85-
You can also pin this issue to draw more attention to it.
86-
Ensure that the discussion about regressions take place in this issue.
87-
7. Create signed release and debug APKs of the release branch using the `releaseCandidate` and `debug` build types.
88-
Name the build apk files `NewPipe_<versionCode>_RC1.apk` and `NewPipe_<versionCode>_debug_RC1.apk`.
89-
Zip and post them to the head of the pull request and issue. This way, others can test the release candidate.
90-
Release (candidate) and debug APKs of the latest published NewPipe version
91-
should also be provided to allow testing the upgrade process.
92-
8. Test and QA the new version with the help of others. Keep the PR and issue open for a few days
93-
94-
New features can be merged into __dev__ while the release candidate is tested.
95-
PRs which aim to fix regressions of the upcoming release need to target the __release/x.y.z__ branch.
96-
Read [Quickfixes](#quickfixes) for more info.
97-
98-
The changelogs are translated during the test phase.
99-
Therefore, [the translations need to be merged from Weblate](../08_maintainers_view#merge-changes-from-weblate-into-newpipe) once more.
100-
The translation commit is cherry-picked into the release branch.
101-
102-
Once testing is done and the release branch does not contain critical regressions, and you think the update is ready,
103-
proceed with [releasing the new version](#releasing).
104-
105-
### Quickfixes
106-
107-
When issuing a new release, you will most likely encounter bugs
108-
that might not have existed in previous versions.
109-
These are called __regressions__.
110-
If you find a regression during release phase,
111-
you are allowed to push fixes directly into the release branch
112-
without having to fork a branch away from it.
113-
Maintainers have to be aware that they might be required to fix regressions,
114-
so plan your release at a time when you are available.
115-
116-
When you have pushed a quickfix, you need to provide an updated __release candidate__.
117-
Increment the version number in the filename of the release candidate. e.g. `NewPipe_<versionNumber>_RC2.apk` etc.
118-
_Don't update the actual version number. :P_
119-
120-
![release_branch](img/release_branch.svg)
121-
122-
### Releasing
123-
124-
Once the glorious day of all days has come, and you fulfill the ceremony of releasing.
125-
After going through the release procedure of [creating a new release](#creating-a-new-release)
126-
and maybe a few [quickfixes](#quickfixes) on the new release,
127-
this is what you should do when releasing:
128-
129-
1. Click "Merge Pull Request".
130-
2. Checkout the __master__ branch locally and create an unsigned APK.
131-
3. Send this APK to TheAssassin for signing and publishing in an encrypted and signed E-Mail. He'll check your APK, too.
132-
4. Once you received a signed APK, upgrade the version on your device and look for any crashes and regressions.
133-
5. In the GitHub releases section, make sure the draft name equals the tag name. ![draft_name](img/draft_name.png)
134-
6. Add the signed APK to the draft.
135-
7. Make sure to not have forgotten anything.
136-
8. Click "Publish Release".
137-
9. [Publish the new version on F-Droid](#publish-on-f-droid).
138-
10. Merge __master__ into __dev__ or fast-forward if possible. Push.
139-
11. [Update the changelog for the website](https://github.com/TeamNewPipe/website/blob/master/_includes/release_data.html).
140-
141-
![rebase_back](img/rebase_back_release.svg)
75+
By following the steps listed in [Release instructions](../07_release_instructions), you can publish a stable version of NewPipe.
14276

14377
## Hotfix Releases
14478

@@ -275,7 +209,7 @@ For this reason it is recommended to keep the changelog at 400 bytes.
275209

276210
When creating the changelog file be aware of changes which were done in the extractor as well.
277211
Before pushing the changelog to NewPipe's repo, ask other maintainers to review it.
278-
After pushing the changelog to NewPipe's GitHub repo, [updating Weblate](../08_maintainers_view#update-weblate) is necessary.
212+
After pushing the changelog to NewPipe's GitHub repo, [updating Weblate](../09_maintainers_view#update-weblate) is necessary.
279213
This enables translators to work on localized versions of the changelog before a release is tagged and published.
280214

281215
## Publish on F-Droid

docs/NaN_Full_release_docs.md renamed to docs/07_release_instructions.md

Lines changed: 24 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,16 @@
1-
### Preliminary steps
1+
# Release instructions for normal releases
22

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
48

59
- Have admin rights on Weblate
610
- You should be able to access [Weblate's Maintenance page](https://hosted.weblate.org/projects/newpipe/#repository)
711
- Have at least maintainer rights on the NewPipe and NewPipeExtractor repos
812

9-
#### Repositories
13+
### Repositories
1014

1115
- Have a cloned NewPipe local repository (for the rest of the page, `origin` is assumed to be the remote at `github.com/TeamNewPipe/NewPipe`)
1216
- 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 @@
1721
- `git checkout dev`
1822
- `git pull origin dev`
1923

20-
#### Version name and conventions
24+
### Version name and conventions
2125

2226
- 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)
2327
- Choose the version number of the next release according to [semantic versioning](https://semver.org/) (from now on called `X.X.X`)
2428

25-
#### Identification
29+
### Identification
2630

2731
- Have `gpg` installed and usable on your PC
2832
- Have a GPG key, which can be used to verify that a file is really from you
2933

30-
### Pull changes from Weblate
34+
## Pull changes from Weblate
3135

3236
- Go to [Weblate's Maintenance tab](https://hosted.weblate.org/projects/newpipe/#repository)
3337
- Press the *Lock* button to prevent translators from translating while you are creating commits; remember to *Unlock* later!
@@ -50,7 +54,7 @@
5054
- Merge `weblate-dev` into `dev`:
5155
- `git merge weblate-dev`
5256
53-
### Create a changelog
57+
## Create a changelog
5458
5559
- Finalize the draft changelog [kept on GitHub](https://github.com/TeamNewPipe/NewPipe/releases), in case there are still some things to fill in
5660
- 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
@@ -78,7 +82,7 @@
7882
- `git add fastlane/metadata/android/en-US/changelogs/NEW_VERSION_CODE.txt`
7983
- `git commit -m "Add changelog for vX.X.X (NEW_VERSION_CODE)"`
8084
81-
### Push the changelog to Weblate
85+
## Push the changelog to Weblate
8286
8387
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.
8488
- 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
9195
- Weblate's components are connected to NewPipe's `dev` branch, and will update changes from there
9296
- Weblate's git repo is not writable, so there is no way to push commits there manually
9397
94-
### Creating the release branch
98+
## Creating the release branch
9599
96100
- Create a new branch starting from `dev`, named `release-X.X.X`, and switch to it
97101
- `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
109113
- Push the newly created branch to the NewPipe repo
110114
- `git push upstream release-X.X.X`
111115
112-
### Creating the Pull Request
116+
## Creating the Pull Request
113117
114118
- Create a Pull Request (PR) from the new branch you just pushed
115119
- 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
124128
- 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
125129
- *for example, check out [#8231](https://github.com/TeamNewPipe/NewPipe/pull/8231) for reference*
126130
127-
### Creating the issue
131+
## Creating the issue
128132
129133
- Create an issue
130134
- 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
141145
- Once you have created the issue, pin it using the "Pin issue" button on the right
142146
- *for example, check out [#8230](https://github.com/TeamNewPipe/NewPipe/issues/8230) for reference*
143147
144-
### Testing APKs
148+
## Testing APKs
145149
146150
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.
147151
- 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
156160
- Use this naming scheme: `NewPipe_vX.X.X_RC1_release.apk`
157161
- Add a line to the `## Testing for regressions` section, of this form: `Debug APK (built and signed by @YOUR_GITHUB_USERNAME): ...`
158162
159-
### Taking care of regressions
163+
## Taking care of regressions (quickfixes)
160164
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.
162166
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.
164168
165-
### Finally merging the pull request
169+
## Finally merging the pull request
166170
167171
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.
168172
- 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
196200
- Go to [Weblate's Maintenance tab](https://hosted.weblate.org/projects/newpipe/#repository)
197201
- **Press *Unlock***
198202
199-
### Creating the APK
203+
## Creating the APK
200204
201205
Now on the remote `master` branch there is the release code which you need to turn into an APK.
202206
- 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
211215
- Double press Ctrl, type `gradle assembleRelease`, press Enter
212216
- After a while you should find the APK under `./app/build/outputs/apk/release/app-release-unsigned.apk`
213217
214-
### Having the APK signed by @TheAssassin
218+
## Having the APK signed by @TheAssassin
215219
216220
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.
217221
- 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
228232
- 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)
229233
- Tell @TheAssassin to "push the buttons", i.e. publish the signed APK in NewPipe's F-Droid repo.
230234
231-
### Publishing the release
235+
## Publishing the release
232236
233237
- Go to the draft changelog [kept on GitHub](https://github.com/TeamNewPipe/NewPipe/releases)
234238
- 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
238242
- Publish the release
239243
- Profit :-D
240244
241-
### Blog post
245+
## Blog post
242246
243247
> I do not know enough about blog post writing and publishing to fill in this section, I'll leave it to @opusforlife2 and @Poolitzer.
244248
File renamed without changes.
File renamed without changes.

0 commit comments

Comments
 (0)