-
Notifications
You must be signed in to change notification settings - Fork 2
/
checklist.html
150 lines (148 loc) · 7.44 KB
/
checklist.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Nikola Release Checklist</title>
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.4/css/bootstrap.min.css">
<style>
ul {
list-style: none;
padding-left: 0; }
code { /* using kbd styles instead */
padding: 2px 4px;
font-size: 90%;
color: #fff;
background-color: #333;
border-radius: 3px;
-webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, .25);
box-shadow: inset 0 -1px 0 rgba(0, 0, 0, .25);
}
#counter {
position: fixed;
top: 5px;
right: 5px;
padding: 5px;
border: 1px solid #ddd;
font-size: 2em;
transition: all 1s;
}
#counter.complete {
color: green;
border-color: #bdb;
background: #dfd;
}
</style>
<!--[if lt IE 9]>
<script src="https://oss.maxcdn.com/html5shiv/3.7.2/html5shiv.min.js"></script>
<script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script>
<![endif]-->
</head>
<body>
<div class="container">
<div id="counter"><span id="current">?</span>/<span id="total">?</span></div>
<h1>Nikola Release Checklist (v9/2015-10-08)</h1>
<h2>Requirements</h2>
<p>In order to create a release, you need a bit of free time and a GPG setup. You could technically do without them (<code>git tag -am</code> + <code>twine upload</code> without <code>-s</code>), but it’s nicer if we have some confirmation it’s really you.</p>
<h2>Housekeeping</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 > 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 > ../nikola-site/listings/conf.py</code> (if necessary, change the path to reflect where you store your clone of the Nikola website)</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>
<p>All announcements must include the <em>Greeting</em>, <em>What is Nikola?</em>, <em>Downloads</em>, and <em>Changes</em> blocks, in that order. Use the announcements in the Release Engineering repo as a template.</p>
<p>You may also add a <em>Key Changes since last release</em> block after <em>What is Nikola?</em>.</p>
<ul>
<li><input type="checkbox"> Write an announcement for GitHub Releases. It should use Markdown syntax and no word wrap.</li>
<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 "Nikola v$VERSION is out"'!' -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>
<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 -asm "Version $VERSION"</code></li>
<li><input type="checkbox"> <code>git tag -sm "Version $VERSION" "v$VERSION"</code></li>
<li><input type="checkbox"> <code>git push --follow-tags origin master</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>
</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>
</ul>
<h2>GitHub Issues</h2>
<ul>
<li><input type="checkbox"> Create milestone for next release</li>
<li><input type="checkbox"> Move outstanding issues to milestone for next release</li>
<li><input type="checkbox"> Close milestone for this release</li>
</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>
</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></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>
</ul>
<h2>E-mails</h2>
<ul>
<li><input type="checkbox"> Send the e-mail announcement to <a href="mailto:nikola-discuss@googlegroups.com">nikola-discuss@googlegroups.com</a> and <a href="mailto:python-announce-list@python.org">python-announce-list@python.org</a>. You should sign it with GPG if possible.</li>
<li><input type="checkbox"> (OPTIONAL) Report a bug to Debian, notifying them of the update. (<a href="mailto:submit@bugs.debian.org">submit@bugs.debian.org</a> + Package/Version/Severity “header” lines at top of message)</li>
</ul>
<h2>Finishing up</h2>
<ul>
<li><input type="checkbox"> Give yourself a pat on the back!</li>
<li><input type="checkbox"> If you have access to the AUR packages, update them (if not, wait for Chris to handle this)</li>
</ul>
</div>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.2/jquery.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.4/js/bootstrap.min.js"></script>
<script>
// Completed task counter
// by Chris Warrick -- JS code in public domain
var max = 0;
var inp;
$(document).ready(function() {
inp = $('input');
max = inp.length;
$('#total').text(max);
});
$('input').click(function() {
inp = $('input');
var count = 0;
for (var i = 0; i < inp.length; i++) {
if (inp[i].checked) {
count += 1;
}
}
$('#current').text(count);
if (count == max) {
$('#counter').addClass('complete');
} else {
$('#counter').removeClass('complete');
}
});
</script>
</body>
</html>