Package JavaScript modules as RPM (DEB)
Change-Id: I931ceb0e9a5b50b423a4fea0c58e70ab58b3dbac
This commit is contained in:
parent
f9d6d5f31d
commit
0e345e11ff
172
specs/7.0/package-javascript.rst
Normal file
172
specs/7.0/package-javascript.rst
Normal file
@ -0,0 +1,172 @@
|
|||||||
|
..
|
||||||
|
This work is licensed under a Creative Commons Attribution 3.0 Unported
|
||||||
|
License.
|
||||||
|
|
||||||
|
http://creativecommons.org/licenses/by/3.0/legalcode
|
||||||
|
|
||||||
|
=====================================
|
||||||
|
Package javascript modules in rpm/deb
|
||||||
|
=====================================
|
||||||
|
|
||||||
|
https://blueprints.launchpad.net/fuel/+spec/package-js.spec
|
||||||
|
|
||||||
|
This blueprint describes a way to package npm and bower modules as RPM (DEB)
|
||||||
|
|
||||||
|
Problem description
|
||||||
|
===================
|
||||||
|
|
||||||
|
* Now we download javascript modules for nailgun during
|
||||||
|
ISO build from NPM registry and bower. This operation could fail and
|
||||||
|
we end with broken ISO build jobs
|
||||||
|
|
||||||
|
* Some users may have limited internet connection or no connection at all.
|
||||||
|
We must have an ability to build ISO only from repositories provided.
|
||||||
|
|
||||||
|
Proposed change
|
||||||
|
===============
|
||||||
|
|
||||||
|
Package every used NPM module in RPM (DEB) so we could patch it
|
||||||
|
and reuse as Fuel dependency.
|
||||||
|
Eg: all necessary modules are described in package.json and bower.json
|
||||||
|
for nailgun as follows:
|
||||||
|
|
||||||
|
https://github.com/stackforge/fuel-web/blob/master/nailgun/package.json
|
||||||
|
https://github.com/stackforge/fuel-web/blob/master/nailgun/bower.json
|
||||||
|
|
||||||
|
All built node packages must be installed prior to Fuel UI build.
|
||||||
|
Specs must be changed to obtain modules from local cache
|
||||||
|
instead of the internet.
|
||||||
|
|
||||||
|
Alternatives
|
||||||
|
------------
|
||||||
|
|
||||||
|
- internet mirrors of NPM registry or bower
|
||||||
|
- local mirror of NPM registry or bower.
|
||||||
|
- upstream packages
|
||||||
|
|
||||||
|
Business impact
|
||||||
|
-----------------
|
||||||
|
|
||||||
|
- enable patching of JavaScript modules used in Fuel UI
|
||||||
|
- prevent a class of regression in ISO build process
|
||||||
|
- make it possible to package Fuel UI according to OS policies
|
||||||
|
|
||||||
|
REST API impact
|
||||||
|
---------------
|
||||||
|
|
||||||
|
None
|
||||||
|
|
||||||
|
Upgrade impact
|
||||||
|
--------------
|
||||||
|
|
||||||
|
None
|
||||||
|
|
||||||
|
Data model impact
|
||||||
|
-----------------
|
||||||
|
|
||||||
|
None
|
||||||
|
|
||||||
|
Other end user impact
|
||||||
|
---------------------
|
||||||
|
|
||||||
|
None
|
||||||
|
|
||||||
|
Security impact
|
||||||
|
---------------
|
||||||
|
|
||||||
|
None
|
||||||
|
|
||||||
|
Notifications impact
|
||||||
|
--------------------
|
||||||
|
|
||||||
|
None
|
||||||
|
|
||||||
|
Other impact
|
||||||
|
---------------------
|
||||||
|
|
||||||
|
Operating system has nodejs modules already built. But they are outdated.
|
||||||
|
Every packaged module must obsolete or correctly replace upstream version.
|
||||||
|
|
||||||
|
|
||||||
|
Performance Impact
|
||||||
|
------------------
|
||||||
|
|
||||||
|
None
|
||||||
|
|
||||||
|
Plugin impact
|
||||||
|
-------------
|
||||||
|
|
||||||
|
None
|
||||||
|
|
||||||
|
Other deployer impact
|
||||||
|
---------------------
|
||||||
|
|
||||||
|
Package names must be explicitly written in all necessary specs and
|
||||||
|
in requirements files.
|
||||||
|
|
||||||
|
Developer impact
|
||||||
|
----------------
|
||||||
|
|
||||||
|
* Developer should adapt spec file or config file to obtain modules
|
||||||
|
from local cache instead of the internet.
|
||||||
|
|
||||||
|
Implementation
|
||||||
|
==============
|
||||||
|
|
||||||
|
* Use script for generating spec files. It could be used automatically
|
||||||
|
by Jenkins or ondemand in any need.
|
||||||
|
Script could parse package.json or bower.json for any sensitive
|
||||||
|
information like module name and version.
|
||||||
|
|
||||||
|
* (Optionally) Jenkins job which is able to automatically check NPM or bower
|
||||||
|
upstream versus our repository and compile new version if any.
|
||||||
|
|
||||||
|
* Repository must contain every version we built to maintain compatibility.
|
||||||
|
|
||||||
|
* We must complaint packaging policies for Debian or Centos if any.
|
||||||
|
Every spec must pass lintian. Every our package must not ruine existing
|
||||||
|
upstream package tree.
|
||||||
|
|
||||||
|
Assignee(s)
|
||||||
|
-----------
|
||||||
|
|
||||||
|
Primary assignee:
|
||||||
|
Artem Silenkov <asilenkov@mirantis.com>
|
||||||
|
|
||||||
|
Work Items
|
||||||
|
----------
|
||||||
|
|
||||||
|
- Prepare specs for every used JS module for RPM and DEB
|
||||||
|
- Package and place at repository every used JS module
|
||||||
|
|
||||||
|
Acceptance criteria
|
||||||
|
-------------------
|
||||||
|
|
||||||
|
- Packages are ready and placed in base repository
|
||||||
|
- Packages version are the same as described in package.json and bower.json
|
||||||
|
- Packages are installable and removeable inside OS
|
||||||
|
- There are no conflicts in existing upstream package tree
|
||||||
|
- Fuel UI build is successful without internet access
|
||||||
|
just using our packages like local cache
|
||||||
|
|
||||||
|
Dependencies
|
||||||
|
============
|
||||||
|
|
||||||
|
None
|
||||||
|
|
||||||
|
Testing
|
||||||
|
=======
|
||||||
|
|
||||||
|
None
|
||||||
|
|
||||||
|
Documentation Impact
|
||||||
|
====================
|
||||||
|
|
||||||
|
None
|
||||||
|
|
||||||
|
References
|
||||||
|
==========
|
||||||
|
|
||||||
|
- https://blueprints.launchpad.net/fuel/+spec/
|
||||||
|
- https://wiki.debian.org/Javascript/Nodejs/Manual
|
||||||
|
- https://fedoraproject.org/wiki/Packaging:Node.js?rd=Node.js/Packagers
|
Loading…
Reference in New Issue
Block a user