tripleo-ui/docs/packaging.rst

74 lines
3.0 KiB
ReStructuredText

TripleO UI packaging
====================
TL;DR
-----
* We need people from the RDO team to approve all changes
* New packages are built on every upstream merge commit
* Use npm shrinkwrap when updating dependencies in ``package.json``
Upstream
--------
For upstream releases, we only provide a source tarball. This is released via
the ``project-config`` machinery just like other TripleO projects. The tarball is
produced by running ``npm pack`` in the root of the project, and excludes the
``node_modules`` directory. The tarballs are available `here`_.
RDO
---
The upstream TripleO CI relies on packages provided by the `RDO project`_.
Therefore, it's important to keep the RDO packages up-to-date, and to prevent
the builds from failing.
The product of RDO packaging is a set of two RPMs:
* `openstack-tripleo-ui-deps`_
* `openstack-tripleo-ui`_
And of course, the second one depends on the first one. The `-deps` package
contains the contents of the `node_modules` directory.
An RPM is created from a `.spec` file. These files can be access via the above
GitHub links. Any changes to the files are subject to review by the RDO team.
This can be a lengthy process because software licenses need to be reviewed.
RDO builds packages in two different streams: trunk and stable. Study the
following graphic to understand how code flows through the pipeline:
.. image:: https://www.rdoproject.org/images/documentation/rdo-full-workflow-high-level-no-buildlogs.png
:alt: RDO diagram
What to do when dependencies change
-----------------------------------
This applies both to adding *new* dependencies, and upgrading *existing* ones.
1. Make the required changes in ``package.json``
2. ``$ rm -rf node_modules``
3. ``$ npm cache clean``
4. ``$ npm install``
5. ``$ npm shrinkwrap``
6. Commit those changes along with your dependency changes in ``tripleo-ui``.
Your patch should only include the necessary changes to update the
dependency. Submit another patch for your feature/bugfix. In the
commit message, add a link to the dependency (GitHub or similar), and
indicate the project's license. We use the "workflow" field on this
patch to indicate whether a packager has reviewed the changes: "-1" means
this has not happened, or there are issues with the new dependency; "+1"
means it's been reviewed, and the change is approved.
7. Update the `openstack-tripleo-ui-deps`_ package. Currently, this is done by
submitting a pull request on GitHub. There are plans in place to move the
workflow for this repository to the gerrit system.
8. Update the `openstack-tripleo-ui`_ spec so that it points to the new version
of `openstack-tripleo-ui-deps`_. This is done by submitting a patch via
`gerrit`_.
.. _here: http://tarballs.openstack.org/tripleo-ui/
.. _openstack-tripleo-ui-deps: https://github.com/rdo-common/openstack-tripleo-ui-deps
.. _openstack-tripleo-ui: https://github.com/rdo-packages/tripleo-ui-distgit/tree/rpm-master
.. _RDO project: https://www.rdoproject.org
.. _gerrit: https://review.rdoproject.org