Skip to content

Commit

Permalink
Automate releases!
Browse files Browse the repository at this point in the history
Signed-off-by: Chris Warrick <kwpolska@gmail.com>
  • Loading branch information
Kwpolska committed Jul 23, 2016
1 parent d71bd08 commit 2673a71
Show file tree
Hide file tree
Showing 3 changed files with 24 additions and 93 deletions.
39 changes: 8 additions & 31 deletions checklist.html
Expand Up @@ -44,23 +44,13 @@
<body>
<div class="container">
<div id="counter"><span id="current">0</span>/<span id="total">?</span></div>
<h1>Nikola Release Checklist (v12/2016-04-29)</h1>
<h1>Nikola Release Checklist (v13/2016-07-23)</h1>
<h2>Requirements</h2>
<p>In order to create a release, you need a bit of free time and a GPG setup.</p>
<h2>Housekeeping</h2>
<p>In order to create a release, you need a bit of free time, ZSH installed, and a GPG setup.</p>
<h2>Preparation</h2>
<ul>
<li><input type="checkbox"> If you have a local clone of the releng repo: <code>git pull</code> first, refresh the page if necessary</li>
<li><input type="checkbox"> Get into the Nikola repo, make sure you are on the <code>master</code> branch and run <code>git pull origin master</code></li>
<li><input type="checkbox"> <code>scripts/document_path_handlers.py &gt; docs/path_handlers.txt</code></li>
<li><input type="checkbox"> <code>scripts/jinjify.py</code></li>
<li><input type="checkbox"> <code>scripts/import_po.py</code></li>
<li><input type="checkbox"> <code>scripts/update-bower.sh</code></li>
<li><input type="checkbox"> <code>scripts/generate_symlinked_list.sh</code></li>
<li><input type="checkbox"> <code>scripts/generate_conf.py &gt; ../nikola-site/listings/conf.py</code> (if necessary, change the path to reflect where you store your clone of the Nikola website)</li>
<li><input type="checkbox"> Check if there are any new languages that <strong>have translations</strong> (edit the files for translations marked as not found manually) and add them, using <code>scripts/langstatus.py</code></li>
</ul>
<h2>Preparation</h2>
<ul>
<li><input type="checkbox"> Pick a reasonable version number. Increase the last number (patch) or, if the changes <em>really</em> are significant, increase the second number (minor).</li>
</ul>
<h2>Writing announcements</h2>
Expand All @@ -71,25 +61,14 @@ <h2>Writing announcements</h2>
<li><input type="checkbox"> Write an announcement for e-mail. It should use reST-esque syntax, with word wrap at 70 columns.</li>
<li><input type="checkbox"> Write an announcement for the Nikola blog. Use <code>nikola new_post -et &quot;Nikola v$VERSION is out&quot;'!' -i path/to/blog.rst --tags 'nikola, planet, python, programming, release'</code> to import the announcement template (which you should then edit). Make sure to set the author name to your real name.</li>
</ul>
<h2>Versioning and tagging</h2>
<p>Run all the commands in your terminal:</p>
<h2>Release!</h2>
<p>Run the release script and hope everything works fine:</p>
<ul>
<li><input type="checkbox"> <code>VERSION=X.Y.Z</code> (without <code>v</code>!)</li>
<li><input type="checkbox"> <code>scripts/set_version.py</code></li>
<li><input type="checkbox"> <code>git add .</code></li>
<li><input type="checkbox"> <code>git commit -S -asm &quot;Version $VERSION&quot;</code></li>
<li><input type="checkbox"> <code>git tag -sm &quot;Version $VERSION&quot; &quot;v$VERSION&quot;</code></li>
<li><input type="checkbox"> <code>git push --follow-tags origin master</code></li>
<li><input type="checkbox"> <code>rm -rf build Nikola.egg-info</code></li>
<li><input type="checkbox"> <code>./setup.py bdist_wheel</code></li>
<li><input type="checkbox"> <code>twine upload -s dist/Nikola-$VERSION-py2.py3-none-any.whl</code></li>
<li><input type="checkbox"> <code>scripts/release</code></li>
</ul>
<h2>GitHub Releases</h2>
<ul>
<li><input type="checkbox"> Create a GitHub release for this version by running <code>scripts/github-release.py</code></li>
<li><input type="checkbox"> Download the source <code>.tar.gz</code> file generated by GitHub (open link from the release script and click the download button)</li>
<li><input type="checkbox"> Sign the file with <code>gpg -a --detach-sign nikola-$VERSION.tar.gz</code></li>
<li><input type="checkbox"> Upload the tarball and the <code>.asc</code> file to PyPI</li>
<li><input type="checkbox"> Create a GitHub release for this version by running <code>scripts/github-release.py</code> (pass announcement filename and <code>v$VERSION</code> as arguments)</li>
</ul>
<h2>GitHub Issues</h2>
<ul>
Expand All @@ -99,12 +78,10 @@ <h2>GitHub Issues</h2>
</ul>
<h2>Local update</h2>
<ul>
<li><input type="checkbox"> Use <code>pip install -e</code> to reinstall Nikola from Git in your virtualenv (if applicable)</li>
<li><input type="checkbox"> Use <code>pip install -e .</code> to reinstall Nikola from Git in your virtualenv (if applicable)</li>
</ul>
<h2>Website update</h2>
<ul>
<li><input type="checkbox"> Copy all documentation, <code>AUTHORS.txt</code> and <code>CHANGES.txt</code> from your Nikola copy to <code>stories/</code></li>
<li><input type="checkbox"> Modify the version numbers in <code>stories/conf.txt</code> (it’s used TWICE!)</li>
<li><input type="checkbox"> Optionally regenerate the <code>cerulean</code> theme: <code>nikola bootswatch_theme -s cerulean -n cerulean</code></li>
<li><input type="checkbox"> Build and deploy the site</li>
<li><input type="checkbox"> Commit and push your changes to GitHub</li>
Expand Down
39 changes: 8 additions & 31 deletions src/checklist.html
@@ -1,20 +1,10 @@
<h1>Nikola Release Checklist (v12/2016-04-29)</h1>
<h1>Nikola Release Checklist (v13/2016-07-23)</h1>
<h2>Requirements</h2>
<p>In order to create a release, you need a bit of free time and a GPG setup.</p>
<h2>Housekeeping</h2>
<p>In order to create a release, you need a bit of free time, ZSH installed, and a GPG setup.</p>
<h2>Preparation</h2>
<ul>
<li><input type="checkbox"> If you have a local clone of the releng repo: <code>git pull</code> first, refresh the page if necessary</li>
<li><input type="checkbox"> Get into the Nikola repo, make sure you are on the <code>master</code> branch and run <code>git pull origin master</code></li>
<li><input type="checkbox"> <code>scripts/document_path_handlers.py &gt; docs/path_handlers.txt</code></li>
<li><input type="checkbox"> <code>scripts/jinjify.py</code></li>
<li><input type="checkbox"> <code>scripts/import_po.py</code></li>
<li><input type="checkbox"> <code>scripts/update-bower.sh</code></li>
<li><input type="checkbox"> <code>scripts/generate_symlinked_list.sh</code></li>
<li><input type="checkbox"> <code>scripts/generate_conf.py &gt; ../nikola-site/listings/conf.py</code> (if necessary, change the path to reflect where you store your clone of the Nikola website)</li>
<li><input type="checkbox"> Check if there are any new languages that <strong>have translations</strong> (edit the files for translations marked as not found manually) and add them, using <code>scripts/langstatus.py</code></li>
</ul>
<h2>Preparation</h2>
<ul>
<li><input type="checkbox"> Pick a reasonable version number. Increase the last number (patch) or, if the changes <em>really</em> are significant, increase the second number (minor).</li>
</ul>
<h2>Writing announcements</h2>
Expand All @@ -25,25 +15,14 @@ <h2>Writing announcements</h2>
<li><input type="checkbox"> Write an announcement for e-mail. It should use reST-esque syntax, with word wrap at 70 columns.</li>
<li><input type="checkbox"> Write an announcement for the Nikola blog. Use <code>nikola new_post -et &quot;Nikola v$VERSION is out&quot;'!' -i path/to/blog.rst --tags 'nikola, planet, python, programming, release'</code> to import the announcement template (which you should then edit). Make sure to set the author name to your real name.</li>
</ul>
<h2>Versioning and tagging</h2>
<p>Run all the commands in your terminal:</p>
<h2>Release!</h2>
<p>Run the release script and hope everything works fine:</p>
<ul>
<li><input type="checkbox"> <code>VERSION=X.Y.Z</code> (without <code>v</code>!)</li>
<li><input type="checkbox"> <code>scripts/set_version.py</code></li>
<li><input type="checkbox"> <code>git add .</code></li>
<li><input type="checkbox"> <code>git commit -S -asm &quot;Version $VERSION&quot;</code></li>
<li><input type="checkbox"> <code>git tag -sm &quot;Version $VERSION&quot; &quot;v$VERSION&quot;</code></li>
<li><input type="checkbox"> <code>git push --follow-tags origin master</code></li>
<li><input type="checkbox"> <code>rm -rf build Nikola.egg-info</code></li>
<li><input type="checkbox"> <code>./setup.py bdist_wheel</code></li>
<li><input type="checkbox"> <code>twine upload -s dist/Nikola-$VERSION-py2.py3-none-any.whl</code></li>
<li><input type="checkbox"> <code>scripts/release</code></li>
</ul>
<h2>GitHub Releases</h2>
<ul>
<li><input type="checkbox"> Create a GitHub release for this version by running <code>scripts/github-release.py</code></li>
<li><input type="checkbox"> Download the source <code>.tar.gz</code> file generated by GitHub (open link from the release script and click the download button)</li>
<li><input type="checkbox"> Sign the file with <code>gpg -a --detach-sign nikola-$VERSION.tar.gz</code></li>
<li><input type="checkbox"> Upload the tarball and the <code>.asc</code> file to PyPI</li>
<li><input type="checkbox"> Create a GitHub release for this version by running <code>scripts/github-release.py</code> (pass announcement filename and <code>v$VERSION</code> as arguments)</li>
</ul>
<h2>GitHub Issues</h2>
<ul>
Expand All @@ -53,12 +32,10 @@ <h2>GitHub Issues</h2>
</ul>
<h2>Local update</h2>
<ul>
<li><input type="checkbox"> Use <code>pip install -e</code> to reinstall Nikola from Git in your virtualenv (if applicable)</li>
<li><input type="checkbox"> Use <code>pip install -e .</code> to reinstall Nikola from Git in your virtualenv (if applicable)</li>
</ul>
<h2>Website update</h2>
<ul>
<li><input type="checkbox"> Copy all documentation, <code>AUTHORS.txt</code> and <code>CHANGES.txt</code> from your Nikola copy to <code>stories/</code></li>
<li><input type="checkbox"> Modify the version numbers in <code>stories/conf.txt</code> (it’s used TWICE!)</li>
<li><input type="checkbox"> Optionally regenerate the <code>cerulean</code> theme: <code>nikola bootswatch_theme -s cerulean -n cerulean</code></li>
<li><input type="checkbox"> Build and deploy the site</li>
<li><input type="checkbox"> Commit and push your changes to GitHub</li>
Expand Down
39 changes: 8 additions & 31 deletions src/checklist.md
@@ -1,23 +1,13 @@
# Nikola Release Checklist (v12/2016-04-29)
# Nikola Release Checklist (v13/2016-07-23)

## Requirements

In order to create a release, you need a bit of free time and a GPG setup.
In order to create a release, you need a bit of free time, ZSH installed, and a GPG setup.

## Housekeeping
## Preparation

* <input type="checkbox"> If you have a local clone of the releng repo: `git pull` first, refresh the page if necessary
* <input type="checkbox"> Get into the Nikola repo, make sure you are on the `master` branch and run `git pull origin master`
* <input type="checkbox"> `scripts/document_path_handlers.py > docs/path_handlers.txt`
* <input type="checkbox"> `scripts/jinjify.py`
* <input type="checkbox"> `scripts/import_po.py`
* <input type="checkbox"> `scripts/update-bower.sh`
* <input type="checkbox"> `scripts/generate_symlinked_list.sh`
* <input type="checkbox"> `scripts/generate_conf.py > ../nikola-site/listings/conf.py` (if necessary, change the path to reflect where you store your clone of the Nikola website)
* <input type="checkbox"> Check if there are any new languages that **have translations** (edit the files for translations marked as not found manually) and add them, using `scripts/langstatus.py`

## Preparation

* <input type="checkbox"> Pick a reasonable version number. Increase the last number (patch) or, if the changes *really* are significant, increase the second number (minor).

## Writing announcements
Expand All @@ -30,26 +20,15 @@ You may also add a *Key Changes since last release* block after *What is Nikola?
* <input type="checkbox"> Write an announcement for e-mail. It should use reST-esque syntax, with word wrap at 70 columns.
* <input type="checkbox"> Write an announcement for the Nikola blog. Use `nikola new_post -et "Nikola v$VERSION is out"'!' -i path/to/blog.rst --tags 'nikola, planet, python, programming, release'` to import the announcement template (which you should then edit). Make sure to set the author name to your real name.

## Versioning and tagging
## Release!

Run all the commands in your terminal:
Run the release script and hope everything works fine:

* <input type="checkbox"> `VERSION=X.Y.Z` (without `v`!)
* <input type="checkbox"> `scripts/set_version.py`
* <input type="checkbox"> `git add .`
* <input type="checkbox"> `git commit -S -asm "Version $VERSION"`
* <input type="checkbox"> `git tag -sm "Version $VERSION" "v$VERSION"`
* <input type="checkbox"> `git push --follow-tags origin master`
* <input type="checkbox"> `rm -rf build Nikola.egg-info`
* <input type="checkbox"> `./setup.py bdist_wheel`
* <input type="checkbox"> `twine upload -s dist/Nikola-$VERSION-py2.py3-none-any.whl`
* <input type="checkbox"> `scripts/release`

## GitHub Releases

* <input type="checkbox"> Create a GitHub release for this version by running `scripts/github-release.py`
* <input type="checkbox"> Download the source `.tar.gz` file generated by GitHub (open link from the release script and click the download button)
* <input type="checkbox"> Sign the file with `gpg -a --detach-sign nikola-$VERSION.tar.gz`
* <input type="checkbox"> Upload the tarball and the `.asc` file to PyPI
* <input type="checkbox"> Create a GitHub release for this version by running `scripts/github-release.py` (pass announcement filename and ``v$VERSION`` as arguments)

## GitHub Issues

Expand All @@ -59,12 +38,10 @@ Run all the commands in your terminal:

## Local update

* <input type="checkbox"> Use `pip install -e` to reinstall Nikola from Git in your virtualenv (if applicable)
* <input type="checkbox"> Use `pip install -e .` to reinstall Nikola from Git in your virtualenv (if applicable)

## Website update

* <input type="checkbox"> Copy all documentation, `AUTHORS.txt` and `CHANGES.txt` from your Nikola copy to `stories/`
* <input type="checkbox"> Modify the version numbers in `stories/conf.txt` (it’s used TWICE!)
* <input type="checkbox"> Optionally regenerate the `cerulean` theme: `nikola bootswatch_theme -s cerulean -n cerulean`
* <input type="checkbox"> Build and deploy the site
* <input type="checkbox"> Commit and push your changes to GitHub
Expand Down

0 comments on commit 2673a71

Please sign in to comment.