2019-09-02 12:05:29 +00:00
|
|
|
# Release
|
|
|
|
|
|
|
|
This file describes how to make the various kinds of releases
|
|
|
|
|
|
|
|
## Extra required software for making a release
|
|
|
|
|
2015-02-04 22:31:56 +00:00
|
|
|
* [github-release](https://github.com/aktau/github-release) for uploading packages
|
|
|
|
* pandoc for making the html and man pages
|
|
|
|
|
2019-09-02 12:05:29 +00:00
|
|
|
## Making a release
|
|
|
|
|
2017-01-02 14:38:14 +00:00
|
|
|
* git status - make sure everything is checked in
|
|
|
|
* Check travis & appveyor builds are green
|
2015-09-22 17:47:16 +00:00
|
|
|
* make check
|
2018-03-17 15:06:04 +00:00
|
|
|
* make test # see integration test server or run locally
|
2015-02-04 22:31:56 +00:00
|
|
|
* make tag
|
2015-06-06 14:45:00 +00:00
|
|
|
* edit docs/content/changelog.md
|
2016-03-01 17:42:27 +00:00
|
|
|
* make doc
|
2017-01-02 15:30:34 +00:00
|
|
|
* git status - to check for new man pages - git add them
|
2019-04-13 10:01:58 +00:00
|
|
|
* git commit -a -v -m "Version v1.XX.0"
|
2015-02-04 22:31:56 +00:00
|
|
|
* make retag
|
|
|
|
* git push --tags origin master
|
2018-09-01 09:19:03 +00:00
|
|
|
* # Wait for the appveyor and travis builds to complete then...
|
|
|
|
* make fetch_binaries
|
2018-03-17 15:06:04 +00:00
|
|
|
* make tarball
|
|
|
|
* make sign_upload
|
|
|
|
* make check_sign
|
2017-07-22 17:16:46 +00:00
|
|
|
* make upload
|
|
|
|
* make upload_website
|
2015-11-23 21:58:54 +00:00
|
|
|
* make upload_github
|
2017-03-18 11:30:04 +00:00
|
|
|
* make startdev
|
|
|
|
* # announce with forum post, twitter post, G+ post
|
2016-12-14 17:49:26 +00:00
|
|
|
|
|
|
|
Early in the next release cycle update the vendored dependencies
|
2019-09-02 12:05:29 +00:00
|
|
|
|
2018-09-01 09:19:03 +00:00
|
|
|
* Review any pinned packages in go.mod and remove if possible
|
2016-12-14 17:49:26 +00:00
|
|
|
* make update
|
|
|
|
* git status
|
|
|
|
* git add new files
|
|
|
|
* git commit -a -v
|
2018-09-07 16:10:29 +00:00
|
|
|
|
2018-10-25 15:35:30 +00:00
|
|
|
If `make update` fails with errors like this:
|
|
|
|
|
|
|
|
```
|
|
|
|
# github.com/cpuguy83/go-md2man/md2man
|
|
|
|
../../../../pkg/mod/github.com/cpuguy83/go-md2man@v1.0.8/md2man/md2man.go:11:16: undefined: blackfriday.EXTENSION_NO_INTRA_EMPHASIS
|
|
|
|
../../../../pkg/mod/github.com/cpuguy83/go-md2man@v1.0.8/md2man/md2man.go:12:16: undefined: blackfriday.EXTENSION_TABLES
|
|
|
|
```
|
|
|
|
|
|
|
|
Can be fixed with
|
|
|
|
|
|
|
|
* GO111MODULE=on go get -u github.com/russross/blackfriday@v1.5.2
|
|
|
|
* GO111MODULE=on go mod tidy
|
|
|
|
* GO111MODULE=on go mod vendor
|
|
|
|
|
|
|
|
|
2019-09-02 12:05:29 +00:00
|
|
|
## Making a point release
|
|
|
|
|
|
|
|
If rclone needs a point release due to some horrendous bug then a
|
|
|
|
point release is necessary.
|
|
|
|
|
|
|
|
First make the release branch. If this is a second point release then
|
|
|
|
this will be done already.
|
|
|
|
|
2019-09-08 16:35:41 +00:00
|
|
|
* BASE_TAG=v1.XX # eg v1.49
|
|
|
|
* NEW_TAG=${BASE_TAG}.Y # eg v1.49.1
|
|
|
|
* echo $BASE_TAG $NEW_TAG # v1.49 v1.49.1
|
2019-09-02 12:05:29 +00:00
|
|
|
* git branch ${BASE_TAG} ${BASE_TAG}-fixes
|
|
|
|
|
|
|
|
Now
|
|
|
|
|
|
|
|
* git co ${BASE_TAG}-fixes
|
2018-09-07 16:10:29 +00:00
|
|
|
* git cherry-pick any fixes
|
|
|
|
* Test (see above)
|
2019-09-02 12:05:29 +00:00
|
|
|
* make NEW_TAG=${NEW_TAG} tag
|
2018-09-07 16:10:29 +00:00
|
|
|
* edit docs/content/changelog.md
|
2019-09-02 12:05:29 +00:00
|
|
|
* make TAG=${NEW_TAG} doc
|
|
|
|
* git commit -a -v -m "Version ${NEW_TAG}"
|
2019-09-08 16:35:41 +00:00
|
|
|
* git tag -d ${NEW_TAG}
|
2019-09-02 12:05:29 +00:00
|
|
|
* git tag -s -m "Version ${NEW_TAG}" ${NEW_TAG}
|
|
|
|
* git push --tags -u origin ${BASE_TAG}-fixes
|
2019-09-08 16:35:41 +00:00
|
|
|
* Wait for builds to complete
|
2019-09-02 12:05:29 +00:00
|
|
|
* make BRANCH_PATH= TAG=${NEW_TAG} fetch_binaries
|
|
|
|
* make TAG=${NEW_TAG} tarball
|
|
|
|
* make TAG=${NEW_TAG} sign_upload
|
|
|
|
* make TAG=${NEW_TAG} check_sign
|
|
|
|
* make TAG=${NEW_TAG} upload
|
|
|
|
* make TAG=${NEW_TAG} upload_website
|
|
|
|
* make TAG=${NEW_TAG} upload_github
|
|
|
|
* NB this overwrites the current beta so we need to do this
|
|
|
|
* git co master
|
|
|
|
* make LAST_TAG=${NEW_TAG} startdev
|
2019-09-06 09:21:32 +00:00
|
|
|
* # cherry pick the changes to the changelog
|
|
|
|
* git checkout ${BASE_TAG}-fixes docs/content/changelog.md
|
|
|
|
* git commit --amend
|
2019-09-02 12:05:29 +00:00
|
|
|
* git push
|
2018-09-07 16:10:29 +00:00
|
|
|
* Announce!
|
2019-09-02 13:30:11 +00:00
|
|
|
|
|
|
|
## Making a manual build of docker
|
|
|
|
|
|
|
|
The rclone docker image should autobuild on docker hub. If it doesn't
|
|
|
|
or needs to be updated then rebuild like this.
|
|
|
|
|
|
|
|
```
|
|
|
|
docker build -t rclone/rclone:1.49.1 -t rclone/rclone:1.49 -t rclone/rclone:1 -t rclone/rclone:latest .
|
|
|
|
docker push rclone/rclone:1.49.1
|
|
|
|
docker push rclone/rclone:1.49
|
|
|
|
docker push rclone/rclone:1
|
|
|
|
docker push rclone/rclone:latest
|
|
|
|
```
|