Merge lp:~bac/juju-quickstart/hacking-brew into lp:juju-quickstart

Proposed by Brad Crittenden
Status: Merged
Merged at revision: 86
Proposed branch: lp:~bac/juju-quickstart/hacking-brew
Merge into: lp:juju-quickstart
Diff against target: 142 lines (+81/-18)
1 file modified
HACKING.rst (+81/-18)
To merge this branch: bzr merge lp:~bac/juju-quickstart/hacking-brew
Reviewer Review Type Date Requested Status
Juju GUI Hackers Pending
Review via email: mp+223601@code.launchpad.net

Description of the change

Add homebrew release instructions.

Also fixed bad coding in HACKING.rst. Used the 'restview'
package from PyPI to verify it. Replaced long embedded
URLs with references. Looks very nice if rendered but
not as good if read as plaintext.

https://codereview.appspot.com/106120043/

To post a comment you must log in.
Revision history for this message
Brad Crittenden (bac) wrote :

Reviewers: mp+223601_code.launchpad.net,

Message:
Please take a look.

Description:
Add homebrew release instructions.

Also fixed bad coding in HACKING.rst. Used the 'restview'
package from PyPI to verify it. Replaced long embedded
URLs with references. Looks very nice if rendered but
not as good if read as plaintext.

https://code.launchpad.net/~bac/juju-quickstart/hacking-brew/+merge/223601

(do not edit description out of merge proposal)

Please review this at https://codereview.appspot.com/106120043/

Affected files (+83, -18 lines):
   M HACKING.rst
   A [revision details]

Revision history for this message
Francesco Banconi (frankban) wrote :

LGTM with minor changes. Thank you!

https://codereview.appspot.com/106120043/diff/1/HACKING.rst
File HACKING.rst (right):

https://codereview.appspot.com/106120043/diff/1/HACKING.rst#newcode215
HACKING.rst:215: #. Compute the SHA1 checksum for the tgz and insert it
as the JujuQuickstart
Juju Quickstart?

https://codereview.appspot.com/106120043/diff/1/HACKING.rst#newcode221
HACKING.rst:221: download failures are acceptable.)::
are acceptable)

https://codereview.appspot.com/106120043/diff/1/HACKING.rst#newcode252
HACKING.rst:252: rebase the branch and squash commits before pushing.
Could you give a hint about how much time passes between Jenkins tests
pass and the updated formula is merged? Is it merged right after the
tests run?

https://codereview.appspot.com/106120043/

Revision history for this message
Brad Crittenden (bac) wrote :

*** Submitted:

Add homebrew release instructions.

Also fixed bad coding in HACKING.rst. Used the 'restview'
package from PyPI to verify it. Replaced long embedded
URLs with references. Looks very nice if rendered but
not as good if read as plaintext.

R=frankban
CC=
https://codereview.appspot.com/106120043

https://codereview.appspot.com/106120043/diff/1/HACKING.rst
File HACKING.rst (right):

https://codereview.appspot.com/106120043/diff/1/HACKING.rst#newcode215
HACKING.rst:215: #. Compute the SHA1 checksum for the tgz and insert it
as the JujuQuickstart
On 2014/06/18 16:17:24, frankban wrote:
> Juju Quickstart?

Actually brew constructs a Ruby class based on the package name, so in
the file it really is JujuQuickstart.

https://codereview.appspot.com/106120043/diff/1/HACKING.rst#newcode221
HACKING.rst:221: download failures are acceptable.)::
On 2014/06/18 16:17:25, frankban wrote:
> are acceptable)

Done.

https://codereview.appspot.com/106120043/diff/1/HACKING.rst#newcode221
HACKING.rst:221: download failures are acceptable.)::
On 2014/06/18 16:17:25, frankban wrote:
> are acceptable)

Done.

https://codereview.appspot.com/106120043/diff/1/HACKING.rst#newcode252
HACKING.rst:252: rebase the branch and squash commits before pushing.
I will. This update was flawless and when Jenkins passed the bot merged
it in. Total time was about two hours.

https://codereview.appspot.com/106120043/

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'HACKING.rst'
2--- HACKING.rst 2014-06-11 14:51:38 +0000
3+++ HACKING.rst 2014-06-18 16:03:57 +0000
4@@ -162,17 +162,18 @@
5 The procedure is analogous for pre-trusty series releases, just using the
6 other packaging branch.
7
8-The recipe for creating packages for trusty and beyond is in:
9-<https://code.launchpad.net/~juju-gui-charmers/+recipe/juju-quickstart-trunk-daily>.
10-
11-The pre-trusty recipe is at:
12-<https://code.launchpad.net/~juju-gui-charmers/+recipe/juju-quickstart-pre-trusty-daily>.
13-
14-We currently publish beta releases on the Juju Quickstart Beta PPA: see
15-<https://launchpad.net/~juju-gui/+archive/quickstart-beta/+packages>.
16+The recipe for creating packages for trusty and beyond is at
17+`juju-quickstart-trunk-daily
18+<https://code.launchpad.net/~juju-gui-charmers/+recipe/juju-quickstart-trunk-daily>`_.
19+
20+The pre-trusty recipe is `juju-quickstart-pre-trusty-daily
21+<https://code.launchpad.net/~juju-gui-charmers/+recipe/juju-quickstart-pre-trusty-daily>`_.
22+
23+We currently publish beta releases on the `Juju Quickstart Beta PPA
24+<https://launchpad.net/~juju-gui/+archive/quickstart-beta/+packages>`_.
25 When a beta release is ready to be published, we move over the packages from
26-the Juju Quickstart Beta PPA to the juju stable packages PPA in
27-<https://launchpad.net/~juju/+archive/stable>.
28+the Juju Quickstart Beta PPA to the `Juju stable PPA
29+<https://launchpad.net/~juju/+archive/stable>`_.
30
31 Packages depend on `python-jujuclient` and `python-websocket-client` to be
32 available. They are available in trusty and later, and they are also stored in
33@@ -182,12 +183,74 @@
34 Creating PyPI releases
35 ~~~~~~~~~~~~~~~~~~~~~~
36
37-Juju Quickstart is present on PyPI: see
38-<https://pypi.python.org/pypi/juju-quickstart>.
39+Juju Quickstart is present on `PyPI
40+<https://pypi.python.org/pypi/juju-quickstart>`_.
41 It is possible to register and upload a new release on PyPI by just running
42 ``make release`` and providing your PyPI credentials. Note there are no
43 series-specific changes required for publishing to PyPI.
44
45+Creating a Homebrew release
46+~~~~~~~~~~~~~~~~~~~~~~~~~~~
47+
48+The brew formula fetches its source from PyPI, so it must be done after the PyPI
49+release.
50+
51+1. Start with a fresh brew::
52+
53+ $ brew update
54+
55+#. Go to PyPI (https://pypi.python.org/pypi/juju-quickstart) and download the
56+ new tgz file.
57+
58+#. Verify the md5 checksum matches that on the PyPI site via, e.g. ::
59+
60+ $ md5 ~/Downloads/juju-quickstart-1.4.0.tar.gz
61+
62+#. Use brew to edit the juju-quickstart formula::
63+
64+ $ brew edit juju-quickstart
65+
66+#. Update the URL to point to the new release tar.gz file.
67+
68+#. Compute the SHA1 checksum for the tgz and insert it as the JujuQuickstart
69+ sha1 value::
70+
71+ $ shasum ~/Downloads/juju-quickstart-1.4.0.tar.gz
72+
73+#. Test the new formula by upgrading juju-quickstart (errors about bottle
74+ download failures are acceptable.)::
75+
76+ $ brew upgrade juju-quickstart
77+
78+#. Run the formula test::
79+
80+ $ brew test juju-quickstart
81+
82+#. Perform full QA as above.
83+
84+After successful QA, follow the procedure outlined in the Homebrew
85+`Formula-Cookbook
86+<https://github.com/Homebrew/homebrew/wiki/Formula-Cookbook#commit>`_. The
87+project is adamant about having one file and one commit per pull request.
88+Rebase and squash commits if required.
89+
90+1. Move to the brew git directory::
91+
92+ $ cd `brew repository`
93+
94+#. Create a new branch, add the changed file, and commit::
95+
96+ $ git checkout -b juju-quickstart-1.4.0
97+ $ git add Library/Formula/juju-quickstart.rb
98+ $ git commit -a -m "juju-quickstart 1.4.0"
99+ $ git push git@github.com:juju/homebrew.git juju-quickstart-1.4.0
100+
101+#. Go to https://github.com/juju/homebrew to create a pull request.
102+#. Copy the debian/changelog from the lp:juju-quickstart/packaging as the pull
103+ request comment. Keep the name simple, e.g. 'juju-quickstart 1.4.0'.
104+#. Watch the pull request and ensure it passes Jenkins. If changes must be made,
105+ rebase the branch and squash commits before pushing.
106+
107 Updating application and test dependencies
108 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
109
110@@ -196,13 +259,13 @@
111 includes the latter, so any updates to the application requirements will also
112 update the test dependencies and therefore the testing virtual environment.
113 Note that, since the source requirements are dynamically generated parsing
114-``requirements.pip``, that file must only include PACKAGE==VERSION formatted
115+``requirements.pip``, that file must only include ``PACKAGE==VERSION`` formatted
116 dependencies, and not other pip specific requirement specifications.
117
118 Also ensure, before updating the application dependencies, that those packages
119 are available in the main Ubuntu repositories for the series we support (from
120-precise to saucy), or in the Juju Quickstart Beta PPA: see
121-<https://launchpad.net/~juju-gui/+archive/quickstart-beta/+packages>.
122+precise to saucy), or in the `Juju Quickstart Beta PPA
123+<https://launchpad.net/~juju-gui/+archive/quickstart-beta/+packages>`_.
124
125 Please also keep up to date the possible values for the environments.yaml
126 default-series field (see ``quickstart.settings.JUJU_DEFAULT_SERIES``) and the
127@@ -224,12 +287,12 @@
128 information about what is going on. The GUI builtin server exposes some bundle
129 information in two places:
130
131-- https://<juju-gui-url>/gui-server-info displays in JSON format the current
132+- ``https://<juju-gui-url>/gui-server-info`` displays in JSON format the current
133 status of all scheduled/started/completed bundle deployments;
134-- /var/log/upstart/guiserver.log is the builtin server log file, which includes
135+- ``/var/log/upstart/guiserver.log`` is the builtin server log file, which includes
136 logs output from the juju-deployer library.
137
138-Moreover, setting `builtin-server-logging=debug` gives more debugging
139+Moreover, setting ``builtin-server-logging=debug`` gives more debugging
140 information, e.g. it prints to the log the contents of the WebSocket messages
141 sent by the client (usually the Juju GUI) and by the Juju API server.
142 As mentioned, juju-deployer works on its own sandbox and uses its own API

Subscribers

People subscribed via source and target branches