Skip to content
Projects
Groups
Snippets
Help
Loading...
Sign in / Register
Toggle navigation
C
capnproto
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Packages
Packages
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
submodule
capnproto
Commits
7781d0c4
Commit
7781d0c4
authored
Aug 31, 2013
by
Kenton Varda
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Extend release script to automatically upload and automatically update docs.
parent
5f50acd4
Show whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
59 additions
and
20 deletions
+59
-20
RELEASE-PROCESS.md
RELEASE-PROCESS.md
+23
-15
release.sh
release.sh
+36
-5
No files found.
RELEASE-PROCESS.md
View file @
7781d0c4
How to release
==============
*
Check out the master branch in a fresh directory. Do NOT use your regular repo, as the release
script commits changes and if anything goes wrong you'll probably want to trash the whole thing
without pushing.
*
First, develop some new features to release! As you do, make sure to keep the documentation
up-to-date.
*
Run
`super-test.sh`
on as many platforms as you have available. Remember that you can easily run
on any machine available through ssh using
`./super-test.sh remote [hostname]`
. Also run in
clang mode.
Clang mode. (If you are Kenton and running from Kenton's home machine and network, use
`./super-test.sh kenton`
to run on all supported compilers and platforms.)
*
Write a blog post discussing what is new, placing it in doc/_posts.
*
Run jekyll locally and review the blog post and docs.
*
Check out the master branch in a fresh directory. Do NOT use your regular repo, as the release
script commits changes and if anything goes wrong you'll probably want to trash the whole thing
without pushing. DO NOT git clone the repo from an existing local repo -- check it out directly
from github. Otherwise, when it pushes its changes back, they'll only be pushed back to your
local repo.
*
Run
`./release.sh candidate`
. This creates a new release branch, updates the version number to
`-rc1`
, builds release tarballs, copies them to the current directory, then switches back to the
master branch and bumps the version number there.
master branch and bumps the version number there. After asking for final confirmation, it will
upload the tarball to S3 and push all changes back to github.
*
Install your release candidates on your local machine, as if you were a user.
*
Go to
`c++/samples`
in the git repo and run
`./test.sh`
. It will try to build against your
installed copy.
*
Push changes to git for both the master and release branches.
*
Post the release candidates somewhere public and then send links to the mailing list for people
to test. Wait a bit for bug reports.
...
...
@@ -28,16 +37,15 @@ How to release
commits into the release branch and create a new candidate. Repeat until all problems are fixed.
Be sure that any such fixes include tests or process changes so that they don't happen again.
*
You should now be ready for an official release. Run
`./release.sh final`
.
*
Upload the files and update the download links on the web site.
*
Write and publish a blog post discussing what is new.
*
You should now be ready for an official release. Run
`./release.sh final`
. This will remove the
"-rcN" suffix from the version number, update the version number shown on the downloads page,
build the final release package, and -- after final confirmation -- upload the binary, push
changes to git, and publish the new documentation.
*
Submit the blog post to news sites and social media as you see fit.
*
Submit the
newly-published
blog post to news sites and social media as you see fit.
*
If problems are discovered in the release, fix them in master and run
`./release.sh candidate <commit>...`
in the release branch to start a new micro release. The
script automatically sees that the current branch's version no longer contains
`-rc`
, so it starts
a new branch. Repeat the rest of the process above.
Blog posts are usually not warranted for
minor bugfix releases, but the people reporting the bug should of course be told of the fix
.
a new branch. Repeat the rest of the process above.
If you decide to write a blog post (not
always necessary), do it in the master branch and cherry-pick it
.
release.sh
View file @
7781d0c4
...
...
@@ -67,7 +67,7 @@ build_packages() {
doit ./setup-autotools.sh |
tr
=
-
doit autoreconf
-i
doit ./configure
doit make dist
doit make dist
check
doit
mv
capnproto-c++-
$VERSION
.tar.gz ..
doit make maintainer-clean
cd
..
...
...
@@ -86,6 +86,7 @@ cherry_pick() {
done_banner
()
{
local
VERSION
=
$1
local
PUSH
=
$2
local
FINAL
=
$3
echo
"========================================================================="
echo
"Done"
echo
"========================================================================="
...
...
@@ -93,6 +94,35 @@ done_banner() {
echo
" capnproto-c++-
$VERSION
.tar.gz"
echo
"Don't forget to push changes:"
echo
" git push origin
$PUSH
"
read
-s
-n
1
-p
"Shall I push to git and upload to S3 now? (y/N)"
YESNO
echo
case
"
$YESNO
"
in
y
|
Y
)
doit git push origin
$PUSH
doit s3cmd put
--guess-mime-type
--acl-public
capnproto-c++-
$VERSION
.tar.gz
\
s3://capnproto.org/capnproto-c++-
$VERSION
.tar.gz
if
[
"
$FINAL
"
=
yes
]
;
then
echo
"========================================================================="
echo
"Publishing docs"
echo
"========================================================================="
cd
doc
doit ./push-site.sh
cd
..
echo
"========================================================================="
echo
"Really done"
echo
"========================================================================="
fi
echo
"Release is available at:"
echo
" http://capnproto.org/capnproto-c++-
$VERSION
.tar.gz"
;;
*
)
echo
"OK, do it yourself then."
;;
esac
}
BRANCH
=
$(
git rev-parse
--abbrev-ref
HEAD
)
...
...
@@ -131,7 +161,7 @@ case "${1-}:$BRANCH" in
update_version
$HEAD_VERSION
$NEXT_VERSION
-dev
"mainlaine"
done_banner
$RELEASE_VERSION
-rc1
"master release-
$RELEASE_VERSION
"
done_banner
$RELEASE_VERSION
-rc1
"master release-
$RELEASE_VERSION
"
no
;;
# ======================================================================================
...
...
@@ -173,7 +203,7 @@ case "${1-}:$BRANCH" in
build_packages
$RC_VERSION
done_banner
$RC_VERSION
release-
$BRANCH_VERSION
done_banner
$RC_VERSION
release-
$BRANCH_VERSION
no
;;
# ======================================================================================
...
...
@@ -200,11 +230,12 @@ case "${1-}:$BRANCH" in
echo
"Updating version number to
$NEW_VERSION
..."
echo
"========================================================================="
doit
sed
-i
-re
"s/capnproto-c[+][+]-[0-9]+[.][0-9]+[.][0-9]+
\>
/capnproto-c++-
$NEW_VERSION
/g"
doc/install.md
update_version
$OLD_VERSION
$NEW_VERSION
"release branch"
build_packages
$NEW_VERSION
done_banner
$NEW_VERSION
release-
$NEW_VERSION
done_banner
$NEW_VERSION
release-
$NEW_VERSION
yes
;;
# ======================================================================================
...
...
@@ -225,7 +256,7 @@ case "${1-}:$BRANCH" in
OLD_VERSION
=
$(
get_release_version
)
build_packages
$OLD_VERSION
done_banner
$OLD_VERSION
release-
$OLD_VERSION
done_banner
$OLD_VERSION
release-
$OLD_VERSION
no
;;
# ======================================================================================
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment