Add 0.2.0 spec

Change-Id: I3104a473c2ee914e2c7be3fb114d72a1af901d90
This commit is contained in:
Ivan Bogomazov 2016-03-21 16:53:54 +03:00
parent fc24251028
commit 97478d8243
1 changed files with 182 additions and 0 deletions

View File

@ -0,0 +1,182 @@
..
This work is licensed under a Creative Commons Attribution 3.0 Unported
License.
http://creativecommons.org/licenses/by/3.0/legalcode
==========================================
Build packages from src
==========================================
Include the URL of your launchpad blueprint:
https://blueprints.launchpad.net/packetary/+spec/build-packages
Implement package building module in Packetary to provide single application to
solve full range of tasks of packaging and repositories management.
--------------------
Problem description
--------------------
Repository management and packet building is
held in different interfaces that take a long time.
More convenient to to build packages using the same interface.
----------------
Proposed changes
----------------
We propose to implement building scripts to integrate it in
the Packetary and provide a Python application that wraps the
process to create a rpm and deb packages, relying on Mockbuild to build rpm
packages and Sbuild to build deb packages in isolated environment.
------------
Alternatives
------------
* Koji:
Supports rpm based distributions only
https://fedoraproject.org/wiki/Koji
* Automated build farm (ABF):
Supports rpm based distributions only
http://www.rosalab.ru/products/rosa_abf
https://abf.io/
* Delorean
Supports rpm based distributions only
Supports python packages only
Requires separate docker image for each supported distribution
https://github.com/openstack-packages/delorean
* docker-rpm-builder
Supports rpm based distributions only
Requires separate docker image for each supported distribution
https://github.com/alanfranz/docker-rpm-builder
--------------
Implementation
--------------
* Use standard upstream Linux distro tools to build packages (mock, sbuild)
* Every package should be built in a clean and up-to-date buildroot.
* Package build tool is able to run build stage for different revisions
of the same package in parallel on the same host.
* Packages are built from git repositories with unpacked source
(it's not necessary to commit source tarballs into git).
Packager shoud support followins source layouts:
- Source rpm file (.src.rpm)
- Standard source layout (git project):
./source tarball (.tar.*z)
./rpm specfile (.spec)
./other files related to package (.patch .init etc)
Repo.yaml format:
^^^^^^^^^^^^^^^^^
.. code-block:: python
rpm:
- name: repo-name
mirrorlist: http://mirrors.fedoraproject.org/mirrorlist?repo=epel-5&arch=i386
coast: 2000
- name: another-repo-name
baseurl: ttp://kojipkgs.fedoraproject.org/repos/dist-5E-epel-build/latest/i386/
cost: 2000
deb:
- name: example
type: deb
url: http://site.example.com/debian
distribution: trusty
components:
- main
- restricted
- name: example
type: deb-src
url: http://site.example.com/debian
distribution: trusty
components:
- main
- restricted
Packages YAML format:
^^^^^^^^^^^^^^^^^^^^^
.. code-block:: python
- source: /home/arno/projects/mirantis/mock-sandbox/zeromq
release: centos-7-x86_64
- source: /home/arno/projects/mirantis/mock-sandbox/zeromq
release: centos-7-x86_64
Shell command:
^^^^^^^^^^^^^^
.. code-block:: bash
packetary build --repo-config repos.yaml --packages-config packages.yaml --output ./dest
Assignee(s)
===========
Primary assignee:
Ivan Bogomazov <ibogomazov@mirantis.com>
Other contributors:
None
Mandatory design review:
None
Work Items
==========
* Write rpm-build packetary driver, which wrapping system mock-build
* Write deb-build packetary driver, which wrapping system sbuild
* Write tool to update build chroot package manager configs
* Implement YAML based interface, to be able to mass build packages
Dependencies
============
None
----------
References
----------
None