rclone/RELEASE.md

110 lines
3.3 KiB
Markdown
Raw Normal View History

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
2015-02-05 06:31:56 +08:00
* [github-release](https://github.com/aktau/github-release) for uploading packages
* pandoc for making the html and man pages
2019-09-02 20:05:29 +08:00
## Making a release
2017-01-02 22:38:14 +08:00
* git status - make sure everything is checked in
* Check travis & appveyor builds are green
2015-09-23 01:47:16 +08:00
* make check
* make test # see integration test server or run locally
2015-02-05 06:31:56 +08:00
* make tag
2015-06-06 22:45:00 +08:00
* edit docs/content/changelog.md
* 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
* git push --tags origin master
* # Wait for the appveyor and travis builds to complete then...
* make fetch_binaries
* make tarball
* make sign_upload
* make check_sign
2017-07-23 01:16:46 +08:00
* make upload
* make upload_website
* make upload_github
2017-03-18 19:30:04 +08:00
* make startdev
* # announce with forum post, twitter post, G+ post
2016-12-15 01:49:26 +08:00
Early in the next release cycle update the vendored dependencies
2019-09-02 20:05:29 +08:00
* Review any pinned packages in go.mod and remove if possible
2016-12-15 01:49:26 +08:00
* make update
* git status
* git add new files
* git commit -a -v
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 20:05:29 +08:00
## Making a point release
If rclone needs a point release due to some horrendous bug:
2019-09-02 20:05:29 +08:00
First make the release branch. If this is a second point release then
this will be done already.
2019-09-09 00:35:41 +08: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 20:05:29 +08:00
* git branch ${BASE_TAG} ${BASE_TAG}-fixes
Now
* git co ${BASE_TAG}-fixes
* git cherry-pick any fixes
* Test (see above)
2019-09-30 02:47:37 +08:00
* make NEXT_VERSION=${NEW_TAG} tag
* edit docs/content/changelog.md
2019-09-02 20:05:29 +08:00
* make TAG=${NEW_TAG} doc
* git commit -a -v -m "Version ${NEW_TAG}"
2019-09-09 00:35:41 +08:00
* git tag -d ${NEW_TAG}
2019-09-02 20:05:29 +08:00
* git tag -s -m "Version ${NEW_TAG}" ${NEW_TAG}
* git push --tags -u origin ${BASE_TAG}-fixes
2019-09-09 00:35:41 +08:00
* Wait for builds to complete
2019-09-02 20:05:29 +08: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
* # cherry pick the changes to the changelog and VERSION
* git checkout ${BASE_TAG}-fixes VERSION docs/content/changelog.md
* git commit --amend
2019-09-02 20:05:29 +08:00
* git push
* Announce!
## 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
```