github.com/10XDev/rclone@v1.52.3-0.20200626220027-16af9ab76b2a/RELEASE.md (about) 1 # Release 2 3 This file describes how to make the various kinds of releases 4 5 ## Extra required software for making a release 6 7 * [github-release](https://github.com/aktau/github-release) for uploading packages 8 * pandoc for making the html and man pages 9 10 ## Making a release 11 12 * git checkout master 13 * git pull 14 * git status - make sure everything is checked in 15 * Check GitHub actions build for master is Green 16 * make test # see integration test server or run locally 17 * make tag 18 * edit docs/content/changelog.md # make sure to remove duplicate logs from point releases 19 * make tidy 20 * make doc 21 * git status - to check for new man pages - git add them 22 * git commit -a -v -m "Version v1.XX.0" 23 * make retag 24 * git push --tags origin master 25 * # Wait for the GitHub builds to complete then... 26 * make fetch_binaries 27 * make tarball 28 * make sign_upload 29 * make check_sign 30 * make upload 31 * make upload_website 32 * make upload_github 33 * make startdev 34 * # announce with forum post, twitter post, patreon post 35 36 Early in the next release cycle update the vendored dependencies 37 38 * Review any pinned packages in go.mod and remove if possible 39 * make update 40 * git status 41 * git add new files 42 * git commit -a -v 43 44 If `make update` fails with errors like this: 45 46 ``` 47 # github.com/cpuguy83/go-md2man/md2man 48 ../../../../pkg/mod/github.com/cpuguy83/go-md2man@v1.0.8/md2man/md2man.go:11:16: undefined: blackfriday.EXTENSION_NO_INTRA_EMPHASIS 49 ../../../../pkg/mod/github.com/cpuguy83/go-md2man@v1.0.8/md2man/md2man.go:12:16: undefined: blackfriday.EXTENSION_TABLES 50 ``` 51 52 Can be fixed with 53 54 * GO111MODULE=on go get -u github.com/russross/blackfriday@v1.5.2 55 * GO111MODULE=on go mod tidy 56 * GO111MODULE=on go mod vendor 57 58 59 ## Making a point release 60 61 If rclone needs a point release due to some horrendous bug: 62 63 First make the release branch. If this is a second point release then 64 this will be done already. 65 66 * BASE_TAG=v1.XX # eg v1.49 67 * NEW_TAG=${BASE_TAG}.Y # eg v1.49.1 68 * echo $BASE_TAG $NEW_TAG # v1.49 v1.49.1 69 * git branch ${BASE_TAG} ${BASE_TAG}-fixes 70 71 Now 72 73 * git co ${BASE_TAG}-fixes 74 * git cherry-pick any fixes 75 * Test (see above) 76 * make NEXT_VERSION=${NEW_TAG} tag 77 * edit docs/content/changelog.md 78 * make TAG=${NEW_TAG} doc 79 * git commit -a -v -m "Version ${NEW_TAG}" 80 * git tag -d ${NEW_TAG} 81 * git tag -s -m "Version ${NEW_TAG}" ${NEW_TAG} 82 * git push --tags -u origin ${BASE_TAG}-fixes 83 * Wait for builds to complete 84 * make BRANCH_PATH= TAG=${NEW_TAG} fetch_binaries 85 * make TAG=${NEW_TAG} tarball 86 * make TAG=${NEW_TAG} sign_upload 87 * make TAG=${NEW_TAG} check_sign 88 * make TAG=${NEW_TAG} upload 89 * make TAG=${NEW_TAG} upload_website 90 * make TAG=${NEW_TAG} upload_github 91 * NB this overwrites the current beta so we need to do this 92 * git co master 93 * make VERSION=${NEW_TAG} startdev 94 * # cherry pick the changes to the changelog and VERSION 95 * git checkout ${BASE_TAG}-fixes VERSION docs/content/changelog.md 96 * git commit --amend 97 * git push 98 * Announce! 99 100 ## Making a manual build of docker 101 102 The rclone docker image should autobuild on docker hub. If it doesn't 103 or needs to be updated then rebuild like this. 104 105 ``` 106 docker build -t rclone/rclone:1.49.1 -t rclone/rclone:1.49 -t rclone/rclone:1 -t rclone/rclone:latest . 107 docker push rclone/rclone:1.49.1 108 docker push rclone/rclone:1.49 109 docker push rclone/rclone:1 110 docker push rclone/rclone:latest 111 ```