2019-09-02 14:05:29 +02:00
|
|
|
# Release
|
|
|
|
|
|
|
|
This file describes how to make the various kinds of releases
|
|
|
|
|
|
|
|
## Extra required software for making a release
|
|
|
|
|
2021-02-04 18:34:30 +01:00
|
|
|
* [gh the github cli](https://github.com/cli/cli) for uploading packages
|
2015-02-04 23:31:56 +01:00
|
|
|
* pandoc for making the html and man pages
|
|
|
|
|
2019-09-02 14:05:29 +02:00
|
|
|
## Making a release
|
|
|
|
|
2020-09-03 12:29:33 +02:00
|
|
|
* git checkout master # see below for stable branch
|
2020-02-01 11:31:42 +01:00
|
|
|
* git pull
|
2017-01-02 15:38:14 +01:00
|
|
|
* git status - make sure everything is checked in
|
2020-02-01 11:31:42 +01:00
|
|
|
* Check GitHub actions build for master is Green
|
2018-03-17 16:06:04 +01:00
|
|
|
* make test # see integration test server or run locally
|
2015-02-04 23:31:56 +01:00
|
|
|
* make tag
|
2020-02-01 11:31:42 +01:00
|
|
|
* edit docs/content/changelog.md # make sure to remove duplicate logs from point releases
|
2019-10-26 12:04:54 +02:00
|
|
|
* make tidy
|
2016-03-01 18:42:27 +01:00
|
|
|
* make doc
|
2017-01-02 16:30:34 +01:00
|
|
|
* git status - to check for new man pages - git add them
|
2019-04-13 12:01:58 +02:00
|
|
|
* git commit -a -v -m "Version v1.XX.0"
|
2015-02-04 23:31:56 +01:00
|
|
|
* make retag
|
2020-09-13 11:27:24 +02:00
|
|
|
* git push --follow-tags origin
|
2020-02-01 13:31:44 +01:00
|
|
|
* # Wait for the GitHub builds to complete then...
|
2018-09-01 11:19:03 +02:00
|
|
|
* make fetch_binaries
|
2018-03-17 16:06:04 +01:00
|
|
|
* make tarball
|
2020-09-02 18:53:05 +02:00
|
|
|
* make vendorball
|
2018-03-17 16:06:04 +01:00
|
|
|
* make sign_upload
|
|
|
|
* make check_sign
|
2017-07-22 19:16:46 +02:00
|
|
|
* make upload
|
|
|
|
* make upload_website
|
2015-11-23 22:58:54 +01:00
|
|
|
* make upload_github
|
2020-09-03 12:29:33 +02:00
|
|
|
* make startdev # make startstable for stable branch
|
2020-05-27 17:11:47 +02:00
|
|
|
* # announce with forum post, twitter post, patreon post
|
2016-12-14 18:49:26 +01:00
|
|
|
|
2021-11-10 11:33:48 +01:00
|
|
|
## Update dependencies
|
|
|
|
|
2020-03-04 15:01:25 +01:00
|
|
|
Early in the next release cycle update the dependencies
|
2019-09-02 14:05:29 +02:00
|
|
|
|
2018-09-01 11:19:03 +02:00
|
|
|
* Review any pinned packages in go.mod and remove if possible
|
2021-11-10 11:33:48 +01:00
|
|
|
* make updatedirect
|
|
|
|
* make
|
2016-12-14 18:49:26 +01:00
|
|
|
* git commit -a -v
|
2021-11-10 11:33:48 +01:00
|
|
|
* make update
|
|
|
|
* make
|
|
|
|
* roll back any updates which didn't compile
|
|
|
|
* git commit -a -v --amend
|
|
|
|
|
|
|
|
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-07 18:10:29 +02:00
|
|
|
|
2022-09-12 21:30:34 +02: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 14:05:29 +02:00
|
|
|
## Making a point release
|
|
|
|
|
2019-09-17 15:22:47 +02:00
|
|
|
If rclone needs a point release due to some horrendous bug:
|
2019-09-02 14:05:29 +02:00
|
|
|
|
2020-09-03 12:29:33 +02:00
|
|
|
Set vars
|
2019-09-02 14:05:29 +02:00
|
|
|
|
2020-10-13 23:49:58 +02:00
|
|
|
* BASE_TAG=v1.XX # e.g. v1.52
|
|
|
|
* NEW_TAG=${BASE_TAG}.Y # e.g. v1.52.1
|
2020-06-10 17:49:04 +02:00
|
|
|
* echo $BASE_TAG $NEW_TAG # v1.52 v1.52.1
|
2020-09-03 12:29:33 +02:00
|
|
|
|
|
|
|
First make the release branch. If this is a second point release then
|
|
|
|
this will be done already.
|
|
|
|
|
2020-06-10 17:49:04 +02:00
|
|
|
* git branch ${BASE_TAG} ${BASE_TAG}-stable
|
2020-09-03 12:29:33 +02:00
|
|
|
* git co ${BASE_TAG}-stable
|
|
|
|
* make startstable
|
2019-09-02 14:05:29 +02:00
|
|
|
|
|
|
|
Now
|
|
|
|
|
2020-06-10 17:49:04 +02:00
|
|
|
* git co ${BASE_TAG}-stable
|
2018-09-07 18:10:29 +02:00
|
|
|
* git cherry-pick any fixes
|
2020-09-03 12:29:33 +02:00
|
|
|
* Do the steps as above
|
|
|
|
* make startstable
|
2019-09-02 14:05:29 +02:00
|
|
|
* git co master
|
2020-11-24 18:59:52 +01:00
|
|
|
* `#` cherry pick the changes to the changelog - check the diff to make sure it is correct
|
2020-09-03 12:29:33 +02:00
|
|
|
* git checkout ${BASE_TAG}-stable docs/content/changelog.md
|
|
|
|
* git commit -a -v -m "Changelog updates from Version ${NEW_TAG}"
|
2019-09-02 14:05:29 +02:00
|
|
|
* git push
|
2019-09-02 15:30:11 +02:00
|
|
|
|
|
|
|
## Making a manual build of docker
|
|
|
|
|
2020-06-10 17:49:04 +02:00
|
|
|
The rclone docker image should autobuild on via GitHub actions. If it doesn't
|
2019-09-02 15:30:11 +02:00
|
|
|
or needs to be updated then rebuild like this.
|
|
|
|
|
2021-03-24 15:22:27 +01:00
|
|
|
See: https://github.com/ilteoood/docker_buildx/issues/19
|
|
|
|
See: https://github.com/ilteoood/docker_buildx/blob/master/scripts/install_buildx.sh
|
|
|
|
|
|
|
|
```
|
|
|
|
git co v1.54.1
|
|
|
|
docker pull golang
|
|
|
|
export DOCKER_CLI_EXPERIMENTAL=enabled
|
|
|
|
docker buildx create --name actions_builder --use
|
|
|
|
docker run --rm --privileged docker/binfmt:820fdd95a9972a5308930a2bdfb8573dd4447ad3
|
|
|
|
docker run --rm --privileged multiarch/qemu-user-static --reset -p yes
|
|
|
|
SUPPORTED_PLATFORMS=$(docker buildx inspect --bootstrap | grep 'Platforms:*.*' | cut -d : -f2,3)
|
|
|
|
echo "Supported platforms: $SUPPORTED_PLATFORMS"
|
|
|
|
docker buildx build --platform linux/amd64,linux/386,linux/arm64,linux/arm/v7 -t rclone/rclone:1.54.1 -t rclone/rclone:1.54 -t rclone/rclone:1 -t rclone/rclone:latest --push .
|
|
|
|
docker buildx stop actions_builder
|
|
|
|
```
|
|
|
|
|
|
|
|
### Old build for linux/amd64 only
|
|
|
|
|
2019-09-02 15:30:11 +02:00
|
|
|
```
|
2020-06-10 17:51:05 +02:00
|
|
|
docker pull golang
|
2020-05-28 14:12:13 +02:00
|
|
|
docker build --rm --ulimit memlock=67108864 -t rclone/rclone:1.52.0 -t rclone/rclone:1.52 -t rclone/rclone:1 -t rclone/rclone:latest .
|
|
|
|
docker push rclone/rclone:1.52.0
|
|
|
|
docker push rclone/rclone:1.52
|
2019-09-02 15:30:11 +02:00
|
|
|
docker push rclone/rclone:1
|
|
|
|
docker push rclone/rclone:latest
|
|
|
|
```
|