Icinga / puppet-icinga_build

Puppet module for Icinga build jobs
GNU General Public License v2.0
2 stars 3 forks source link

Use-Case: Developer pipeline? #18

Open Crunsher opened 7 years ago

Crunsher commented 7 years ago

Dev A pushes something into branch feature/xyz. They now want to build packages for a random distro-arch combination, the result must not be pushed to the repository but available for download.

A: snapshot pipeline can be configured at start B: A developer pipeline

Thomas-Gelf commented 7 years ago

...the result must not be pushed to the repository but available for download

As tools like Aptly and Pulp allow one to build dynamic repositories at a low cost, having dynamic builds going to dynamic repos would be a fantastic feature. But that's optional. For the developer pipeline itself I could imagine the following workflow:

Short: we shouldn't force a developer to switch context as this distracts and wastes time. GIT is what he uses for it's work, to close tickets and to trigger builds or releases.

Crunsher commented 7 years ago

Here are the notes I took out of my talk with @Thomas-Gelf :

The proposal was to have a pipeline, which would change its publishing behavior based on branch names and create dynamic repos via aptly. This would require us to expand the publish script and either work with Jenkins' conditional steps or an additional developer pipeline (see diagram)

buildserver pipelines

The build could be controlled by the branch name, having Github (or some other solution) start a build whenever a commit is pushed into a 'build/' branch (to use like feature/ and fix/). The following example shows a possible naming scheme: '/build/fix-bug-1234/centos-sles/x86_46' This would trigger a build with the contents of this branch on centos and sles with the architecture x86_46 and push the results to a repo named 'fix-bug-1234'. It'd also be welcome if the git server answers with a link to expected repository to a push into such a branch. A cron job or hook would then upon deletion of the branch delete the corresponding repo with its contents.

TODO