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.
Victor Seva bf25944003
MT#62949 build README
7 months ago
..
fixtures MT#61223 repoapi: fix views for trunk-next 1 year ago
management MT#57906 build: allow uuid optional parameter on command 2 years ago
migrations MT#61875 build: support failed BuildRelease 11 months ago
test MT#61223 repoapi: fix views for trunk-next 1 year ago
README.md MT#62949 build README 7 months ago
__init__.py TT#15305 build release REST API 9 years ago
admin.py MT#62714 build: allow to change pool_size via admin panel 8 months ago
apps.py TT#121955 import conf from AppConfig.ready() 4 years ago
conf.py TT#43813 build: split settings per application 6 years ago
exceptions.py MT#61223 [build] improve validation of release configs 1 year ago
models.py MT#61875 build: support failed BuildRelease 11 months ago
serializers.py TT#43813 build: improvements 6 years ago
signals.py MT#33006 repoapi: upgrade structlog config (3.0+) 3 years ago
tasks.py MT#61223 build: fix release parameter for trunk-next on builds 1 year ago
urls.py TT#15305 build: provide end point to delete latest build of release-trunk-{distribution} 3 years ago
utils.py MT#61223 build: fix trunk-next builds 1 year ago
views.py MT#61875 build: support failed BuildRelease 11 months ago

README.md

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.

REPOS_SCRIPTS_CONFIG_DIR = "/usr/share/sipwise-repos-scripts/config"

The release yaml 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:

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 JenkinsBuildInfo