This file describes how to make the various kinds of releases
- github-release for uploading packages
- pandoc for making the html and man pages
- git checkout master
- git pull
- git status - make sure everything is checked in
- Check GitHub actions build for master is Green
- make test # see integration test server or run locally
- make tag
- edit docs/content/changelog.md # make sure to remove duplicate logs from point releases
- make tidy
- make doc
- git status - to check for new man pages - git add them
- git commit -a -v -m "Version v1.XX.0"
- make retag
- git push --tags origin master
- make fetch_binaries
- make tarball
- make sign_upload
- make check_sign
- make upload
- make upload_website
- make upload_github
- make startdev
Early in the next release cycle update the dependencies
- Review any pinned packages in go.mod and remove if possible
- 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/[email protected]/md2man/md2man.go:11:16: undefined: blackfriday.EXTENSION_NO_INTRA_EMPHASIS
../../../../pkg/mod/github.com/cpuguy83/[email protected]/md2man/md2man.go:12:16: undefined: blackfriday.EXTENSION_TABLES
Can be fixed with
* GO111MODULE=on go get -u github.com/russross/[email protected]
* GO111MODULE=on go mod tidy
If rclone needs a point release due to some horrendous bug:
First make the release branch. If this is a second point release then this will be done already.
- BASE_TAG=v1.XX # eg v1.52
- NEW_TAG=${BASE_TAG}.Y # eg v1.52.1
- echo $BASE_TAG $NEW_TAG # v1.52 v1.52.1
- git branch ${BASE_TAG} ${BASE_TAG}-stable
Now
- FIXME this is now broken with new semver layout - needs fixing
- FIXME the TAG=${NEW_TAG} shouldn't be necessary any more
- git co ${BASE_TAG}-stable
- git cherry-pick any fixes
- Test (see above)
- make NEXT_VERSION=${NEW_TAG} tag
- edit docs/content/changelog.md
- make TAG=${NEW_TAG} doc
- git commit -a -v -m "Version ${NEW_TAG}"
- git tag -d ${NEW_TAG}
- git tag -s -m "Version ${NEW_TAG}" ${NEW_TAG}
- git push --tags -u origin ${BASE_TAG}-stable
- Wait for builds to complete
- 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 VERSION=${NEW_TAG} startdev
-
cherry pick the changes to the changelog and VERSION
- git checkout ${BASE_TAG}-stable VERSION docs/content/changelog.md
- git commit --amend
- git push
- Announce!
The rclone docker image should autobuild on via GitHub actions. If it doesn't or needs to be updated then rebuild like this.
docker pull golang
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
docker push rclone/rclone:1
docker push rclone/rclone:latest