2019-09-02 20:05:29 +08:00
|
|
|
# Release
|
|
|
|
|
|
|
|
This file describes how to make the various kinds of releases
|
|
|
|
|
|
|
|
## Extra required software for making a release
|
|
|
|
|
2021-02-05 01:34:30 +08:00
|
|
|
* [gh the github cli](https://github.com/cli/cli) for uploading packages
|
2015-02-05 06:31:56 +08:00
|
|
|
* pandoc for making the html and man pages
|
|
|
|
|
2019-09-02 20:05:29 +08:00
|
|
|
## Making a release
|
|
|
|
|
2020-09-03 18:29:33 +08:00
|
|
|
* git checkout master # see below for stable branch
|
2023-03-15 21:34:30 +08:00
|
|
|
* git pull # IMPORTANT
|
2017-01-02 22:38:14 +08:00
|
|
|
* git status - make sure everything is checked in
|
2020-02-01 18:31:42 +08:00
|
|
|
* Check GitHub actions build for master is Green
|
2018-03-17 23:06:04 +08:00
|
|
|
* make test # see integration test server or run locally
|
2015-02-05 06:31:56 +08:00
|
|
|
* make tag
|
2020-02-01 18:31:42 +08:00
|
|
|
* edit docs/content/changelog.md # make sure to remove duplicate logs from point releases
|
2019-10-26 18:04:54 +08:00
|
|
|
* make tidy
|
2016-03-02 01:42:27 +08:00
|
|
|
* make doc
|
2017-01-02 23:30:34 +08:00
|
|
|
* git status - to check for new man pages - git add them
|
2019-04-13 18:01:58 +08:00
|
|
|
* git commit -a -v -m "Version v1.XX.0"
|
2015-02-05 06:31:56 +08:00
|
|
|
* make retag
|
2023-03-15 21:34:30 +08:00
|
|
|
* git push origin # without --follow-tags so it doesn't push the tag if it fails
|
2020-09-13 17:27:24 +08:00
|
|
|
* git push --follow-tags origin
|
2020-02-01 20:31:44 +08:00
|
|
|
* # Wait for the GitHub builds to complete then...
|
2018-09-01 17:19:03 +08:00
|
|
|
* make fetch_binaries
|
2018-03-17 23:06:04 +08:00
|
|
|
* make tarball
|
2020-09-03 00:53:05 +08:00
|
|
|
* make vendorball
|
2018-03-17 23:06:04 +08:00
|
|
|
* make sign_upload
|
|
|
|
* make check_sign
|
2017-07-23 01:16:46 +08:00
|
|
|
* make upload
|
|
|
|
* make upload_website
|
2015-11-24 05:58:54 +08:00
|
|
|
* make upload_github
|
2020-09-03 18:29:33 +08:00
|
|
|
* make startdev # make startstable for stable branch
|
2020-05-27 23:11:47 +08:00
|
|
|
* # announce with forum post, twitter post, patreon post
|
2016-12-15 01:49:26 +08:00
|
|
|
|
2021-11-10 18:33:48 +08:00
|
|
|
## Update dependencies
|
|
|
|
|
2024-05-22 22:50:31 +08:00
|
|
|
Early in the next release cycle update the dependencies.
|
2019-09-02 20:05:29 +08:00
|
|
|
|
2018-09-01 17:19:03 +08:00
|
|
|
* Review any pinned packages in go.mod and remove if possible
|
2024-05-22 22:50:31 +08:00
|
|
|
* `make updatedirect`
|
|
|
|
* `make GOTAGS=cmount`
|
|
|
|
* `make compiletest`
|
|
|
|
* Fix anything which doesn't compile at this point and commit changes here
|
|
|
|
* `git commit -a -v -m "build: update all dependencies"`
|
|
|
|
|
|
|
|
If the `make updatedirect` upgrades the version of go in the `go.mod`
|
|
|
|
then go to manual mode. `go1.20` here is the lowest supported version
|
|
|
|
in the `go.mod`.
|
|
|
|
|
|
|
|
```
|
|
|
|
go list -m -f '{{if not (or .Main .Indirect)}}{{.Path}}{{end}}' all > /tmp/potential-upgrades
|
|
|
|
go get -d $(cat /tmp/potential-upgrades)
|
|
|
|
go mod tidy -go=1.20 -compat=1.20
|
|
|
|
```
|
|
|
|
|
|
|
|
If the `go mod tidy` fails use the output from it to remove the
|
|
|
|
package which can't be upgraded from `/tmp/potential-upgrades` when
|
|
|
|
done
|
|
|
|
|
|
|
|
```
|
|
|
|
git co go.mod go.sum
|
|
|
|
```
|
|
|
|
|
|
|
|
And try again.
|
|
|
|
|
|
|
|
Optionally upgrade the direct and indirect dependencies. This is very
|
|
|
|
likely to fail if the manual method was used abve - in that case
|
|
|
|
ignore it as it is too time consuming to fix.
|
|
|
|
|
|
|
|
* `make update`
|
|
|
|
* `make GOTAGS=cmount`
|
|
|
|
* `make compiletest`
|
2021-11-10 18:33:48 +08:00
|
|
|
* roll back any updates which didn't compile
|
2024-05-22 22:50:31 +08:00
|
|
|
* `git commit -a -v --amend`
|
2023-10-29 01:06:17 +08:00
|
|
|
* **NB** watch out for this changing the default go version in `go.mod`
|
2021-11-10 18:33:48 +08:00
|
|
|
|
|
|
|
Note that `make update` updates all direct and indirect dependencies
|
|
|
|
and there can occasionally be forwards compatibility problems with
|
|
|
|
doing that so it may be necessary to roll back dependencies to the
|
|
|
|
version specified by `make updatedirect` in order to get rclone to
|
|
|
|
build.
|
2018-09-08 00:10:29 +08:00
|
|
|
|
2024-05-22 22:50:31 +08:00
|
|
|
Once it compiles locally, push it on a test branch and commit fixes
|
|
|
|
until the tests pass.
|
|
|
|
|
2022-09-13 03:30:34 +08:00
|
|
|
## Tidy beta
|
|
|
|
|
|
|
|
At some point after the release run
|
|
|
|
|
|
|
|
bin/tidy-beta v1.55
|
|
|
|
|
|
|
|
where the version number is that of a couple ago to remove old beta binaries.
|
|
|
|
|
2019-09-02 20:05:29 +08:00
|
|
|
## Making a point release
|
|
|
|
|
2019-09-17 21:22:47 +08:00
|
|
|
If rclone needs a point release due to some horrendous bug:
|
2019-09-02 20:05:29 +08:00
|
|
|
|
2020-09-03 18:29:33 +08:00
|
|
|
Set vars
|
2019-09-02 20:05:29 +08:00
|
|
|
|
2020-10-14 05:49:58 +08:00
|
|
|
* BASE_TAG=v1.XX # e.g. v1.52
|
|
|
|
* NEW_TAG=${BASE_TAG}.Y # e.g. v1.52.1
|
2020-06-10 23:49:04 +08:00
|
|
|
* echo $BASE_TAG $NEW_TAG # v1.52 v1.52.1
|
2020-09-03 18:29:33 +08:00
|
|
|
|
|
|
|
First make the release branch. If this is a second point release then
|
|
|
|
this will be done already.
|
|
|
|
|
2022-12-23 20:34:04 +08:00
|
|
|
* git co -b ${BASE_TAG}-stable ${BASE_TAG}.0
|
2020-09-03 18:29:33 +08:00
|
|
|
* make startstable
|
2019-09-02 20:05:29 +08:00
|
|
|
|
|
|
|
Now
|
|
|
|
|
2020-06-10 23:49:04 +08:00
|
|
|
* git co ${BASE_TAG}-stable
|
2018-09-08 00:10:29 +08:00
|
|
|
* git cherry-pick any fixes
|
2020-09-03 18:29:33 +08:00
|
|
|
* Do the steps as above
|
|
|
|
* make startstable
|
2019-09-02 20:05:29 +08:00
|
|
|
* git co master
|
2020-11-25 01:59:52 +08:00
|
|
|
* `#` cherry pick the changes to the changelog - check the diff to make sure it is correct
|
2020-09-03 18:29:33 +08:00
|
|
|
* git checkout ${BASE_TAG}-stable docs/content/changelog.md
|
|
|
|
* git commit -a -v -m "Changelog updates from Version ${NEW_TAG}"
|
2019-09-02 20:05:29 +08:00
|
|
|
* git push
|
2019-09-02 21:30:11 +08:00
|
|
|
|
2023-10-23 22:12:33 +08:00
|
|
|
## Sponsor logos
|
|
|
|
|
|
|
|
If updating the website note that the sponsor logos have been moved out of the main repository.
|
|
|
|
|
|
|
|
You will need to checkout `/docs/static/img/logos` from https://github.com/rclone/third-party-logos
|
|
|
|
which is a private repo containing artwork from sponsors.
|
|
|
|
|
2023-09-14 00:01:42 +08:00
|
|
|
## Update the website between releases
|
|
|
|
|
|
|
|
Create an update website branch based off the last release
|
|
|
|
|
|
|
|
git co -b update-website
|
|
|
|
|
|
|
|
If the branch already exists, double check there are no commits that need saving.
|
|
|
|
|
|
|
|
Now reset the branch to the last release
|
|
|
|
|
|
|
|
git reset --hard v1.64.0
|
|
|
|
|
|
|
|
Create the changes, check them in, test with `make serve` then
|
|
|
|
|
|
|
|
make upload_test_website
|
|
|
|
|
|
|
|
Check out https://test.rclone.org and when happy
|
|
|
|
|
|
|
|
make upload_website
|
|
|
|
|
|
|
|
Cherry pick any changes back to master and the stable branch if it is active.
|
|
|
|
|
2019-09-02 21:30:11 +08:00
|
|
|
## Making a manual build of docker
|
|
|
|
|
2024-01-04 01:26:13 +08:00
|
|
|
To do a basic build of rclone's docker image to debug builds locally:
|
2019-09-02 21:30:11 +08:00
|
|
|
|
2024-01-04 01:26:13 +08:00
|
|
|
```
|
|
|
|
docker buildx build --load -t rclone/rclone:testing --progress=plain .
|
|
|
|
docker run --rm rclone/rclone:testing version
|
|
|
|
```
|
|
|
|
|
|
|
|
To test the multipatform build
|
2021-03-24 22:22:27 +08:00
|
|
|
|
|
|
|
```
|
2024-01-04 01:26:13 +08:00
|
|
|
docker buildx build -t rclone/rclone:testing --progress=plain --platform linux/amd64,linux/386,linux/arm64,linux/arm/v7,linux/arm/v6 .
|
2021-03-24 22:22:27 +08:00
|
|
|
```
|
|
|
|
|
2024-01-04 01:26:13 +08:00
|
|
|
To make a full build then set the tags correctly and add `--push`
|
2021-03-24 22:22:27 +08:00
|
|
|
|
2024-09-13 22:51:11 +08:00
|
|
|
Note that you can't only build one architecture - you need to build them all.
|
|
|
|
|
2019-09-02 21:30:11 +08:00
|
|
|
```
|
2024-09-13 22:51:11 +08:00
|
|
|
docker buildx build --platform linux/amd64,linux/386,linux/arm64,linux/arm/v7,linux/arm/v6 -t rclone/rclone:1.54.1 -t rclone/rclone:1.54 -t rclone/rclone:1 -t rclone/rclone:latest --push .
|
2019-09-02 21:30:11 +08:00
|
|
|
```
|