tree 5455e910b312d6d6c26b3651050c503c2b891bf9
parent f93c2fb5f1751a69f8a73c2626a4638a5c0ed734
author Monty Taylor <mordred@inaugust.com> 1500982084 -0400
committer Monty Taylor <mordred@inaugust.com> 1520169640 -0600
gpgsig -----BEGIN PGP SIGNATURE-----
 
 iQIyBAABCAAcBQJam/KoFRxtb3JkcmVkQGluYXVndXN0LmNvbQAKCRB7rpS8cUGl
 lJ2UD/9ax3qZ+M5YrdiRYhOm/DgPvXbmSuYtIPRuJ7wXexXkNzNTPhVgUHsMwAtp
 piXs+nMrQaRJYfJtZAPoh4wWKzhiC34lJKOvaoGobdE1An5AavYXS1etqgPq/irq
 i4vHWyUzSvaJjnwTxqV/CnCBBrXnF4rGGrTd+Bedg9CLvIrvGgveEMeV3U3hfK+3
 2px+8z5FpEGeGlKTvxfg2kSdnMvRfe/0pTIcknof/cSqcQiIYFB9nAE57xP2840S
 FF5jXMI0dexTC9Q3piPw1+Hh/g57HBL71BMDPk3RZvUVauWPtj53EkGL4Q5A6NhE
 1EcpjraJdfNYnFavgkE3R7zrxYSb4P3gqKGqC+zcSHnjnD5R4QawJ+31HGNJlhhr
 pEicmz/6FeQMoE2lkocUlzvwUNjmHuBZg9X667pIRc/Yeyy5Pn37PQT+6/qipe0K
 dToDDejqvX16cO19B+GcZBWtK792YokMYxRtj0n0RAyKnetYBy+7b2YCLbke8a6d
 MOtouGUHalfBxL15n1l8NXbZ8mvyS8vLswS2QAHqx/s5CEkE0i7b1AFbJpM3hwHZ
 6tqaBrdVUxqV0DcrhG3eQtticj0yDOgNBIm5+lbIyVhJCkx6bJLFifRBko6HA2Ni
 zA24ExhjIimg59TxZJHzmBCN0n6cDPjod+kDz41zWV8UBkPKgw==
 =c3zf
 -----END PGP SIGNATURE-----

Use yarn and webpack to manage zuul-web javascript

yarn drives package and dependency management. webpack handles
bundling, minification and transpiling down to browser-acceptable
javascript but allows for more modern javascript like import statements.

There are some really neat things in the webpack dev server. CSS
changes, for instance, get applied immediately without a refresh. Other
things, like the jquery plugin do need a refresh, but it's handled just
on a file changing.

As a followup, we can also consider turning the majority of the status page
into a webpack library that other people can depend on as a mechanism
for direct use. Things like that haven't been touched because allowing
folks to poke at the existing known status page without too many changes
using the tools seems like a good way for people to learn/understand the
stack.

Move things so that the built content gets put
into zuul/web/static so that the built-in static serving from zuul-web
will/can serve the files.

Update MANIFEST.in so that if npm run build:dist is run before the
python setup.py sdist, the built html/javascript content will be
included in the source tarball.

Add a pbr hook so that if yarn is installed, javascript content will be
built before the tarball.

Add a zuul job with a success url that contains a source_url
pointing to the live v3 data.

This adds a framework for verifying that we can serve the web app
urls and their dependencies for all of the various ways we want to
support folks hosting zuul-web.

It includes a very simple reverse proxy server for approximating
what we do in openstack to "white label" the Zuul service -- that
is, hide the multitenancy aspect and present the single tenant
at the site root.

We can run similar tests without the proxy to ensure the default,
multi-tenant view works as well.

Add babel transpiling enabling use of ES6 features

ECMAScript6 has a bunch of nice things, like block scoped variables,
const, template strings and classes. Babel is a javascript transpiler
which webpack can use to allow us to write using modern javascript but
the resulting code to still work on older browsers.

Use the babel-plugin-angularjs-annotate so that angular's dependency
injection doesn't get borked by babel's transpiling things (which causes
variables to otherwise be renamed in a way that causes angular to not
find them)

While we're at it, replace our use of var with let (let is the new
block-scoped version of var) and toss in some use of const and template
strings for good measure.

Add StandardJS eslint config for linting

JavaScript Standard Style is a code style similar to pep8/flake8. It's
being added here not because of the pep8 part, but because the pyflakes
equivalent can catch real errors. This uses the babel-eslint parser
since we're using Babel to transpile already.

This auto-formats the existing code with:

  npm run format

Rather than using StandardJS directly through the 'standard' package,
use the standardjs eslint plugin so that we can ignore the camelCase
rule (and any other rule that might emerge in the future)

Many of under_score/camelCase were fixed in a previous version of the patch.
Since the prevailing zuul style is camelCase methods anyway, those fixes
were left. That warning has now been disabled.

Other things, such as == vs. === and ensuring template
strings are in backticks are fixed.

Ignore indentation errors for now - we'll fix them at the end of this
stack and then remove the exclusion.

Add a 'format' npm run target that will run the eslint command with
--fix for ease of fixing reported issues.

Add a 'lint' npm run target and a 'lint' environment that runs with
linting turned to errors. The next patch makes the lint environment more
broadly useful.

When we run lint, also run the BundleAnalyzerPlugin and set the
success-url to the report.

Add an angular controller for status and stream page

Wrap the status and stream page construction with an angular controller
so that all the javascripts can be bundled in a single file.

Building the files locally is wonderful and all, but what we really want
is to make a tarball that has the built code so that it can be deployed.

Put it in the root source dir so that it can be used with the zuul
fetch-javascript-tarball role.

Also, replace the custom npm job with the new build-javascript-content
job which naturally grabs the content we want.

Make a 'main.js' file that imports the other three so that we just have
a single bundle. Then, add a 'vendor' entry in the common webpack file
and use the CommonsChunkPlugin to extract dependencies into their own
bundle. A second CommonsChunkPlugin entry pulls out a little bit of
metadata that would otherwise cause the main and vendor chunks to change
even with no source change. Then add chunkhash into the filename. This
way the files themselves can be aggressively cached.

This all follows recommendations from https://webpack.js.org/guides/caching/
https://webpack.js.org/guides/code-splitting/ and
https://webpack.js.org/guides/output-management/

Change-Id: I2e1230783fe57f1bc3b7818460463df1e659936b
Co-Authored-By: Tristan Cacqueray <tdecacqu@redhat.com>
Co-Authored-By: James E. Blair <jeblair@redhat.com>
