You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
repoapi/build/README.md

57 lines
1.6 KiB

build
=====
This app is in charge of the building process of releases.
It reads the yaml files from sipwise-repos-scripts package in order to
find out everything related to a release.
```python
REPOS_SCRIPTS_CONFIG_DIR = "/usr/share/sipwise-repos-scripts/config"
```
The [release yaml](fixtures/config/trunk.yml) file is the one source of truth related
to a release:
* debian_release
* release-mrX.Y[.Z]?: backports to be included in the release repository
* jenkins-jobs: jenkins jobs related info
* release_mirror: steps to do on release process
But for build the most important part of the file is ``jenkins-jobs``.
There are ``projects`` and ``build_deps`` defined.
``build_deps`` is a list of projects that are a build dependency of others. Like:
```yaml
jenkins-jobs:
build_deps:
data-hal:
- ngcp-panel
ngcp-schema:
- ngcp-panel
libinewrate:
- sems-pbx
libswrate:
- kamailio
- sems-pbx
libtcap:
- kamailio
- lnpd
sipwise-base:
- ngcp-panel
- ngcp-schema
check-tools:
- snmp-agent
```
In this example ``data-hal`` needs to be built *before* ``ngcp-panel``. ``sipwise-base`` has
to be built *before* ``ngcp-panel`` and ``ngcp-schema`` and so on.
``build`` app has the logic to resolve this dependency hierarchy so triggering the right project in the right moment.
``build`` triggers jenkins jobs and when the job finishes the next in the queue is triggered.
It keeps the info of what project has been triggered, built or failed.
``build`` depends on [repoapi](../repoapi/models/jbi.py) JenkinsBuildInfo