Proposal: Explode Runner Release Pipeline
In the 17.8.0
and 17.8.1
releases we had a handful of issues with the packages and images. Fixing them required on the one hand re-running the entire runner release pipeline just to recreate those release artifacts, and on the other a lot of manual testing to ensure changes fixed the issue. This sucked; we'd like to avoid it in the future. Specifically, we'd like to separate the bulk of the runner release pipeline (unit/integration tests, lint, building binaries), from building and publishing of downstream artifacts like OS packages and docker images. One complication is that the docker images produced in the pipeline are uses later in the pipeline in integration tests (specifically the helper image).
To deal with all this we propose to investigate exploding the current runner release pipeline, possibly into separate projects, to allow building and publishing release artifacts independently of the main runner release pipeline. This might require moving some test out of the runner project. Something like this:
---
title: Current Runner Release Process
---
flowchart LR
subgraph independent release cycles
A(docker+machine)
B(base images)
end
subgraph gitlab-runner
C(create binaries, images) --> D(unit, integration tests) --> E(create packages) --> F(publish binaries, packages, images)
end
A --> B --> gitlab-runner
gitlab-runner --> Y(Chart)
gitlab-runner --> Z(Operator)
---
title: Proposed Runner Release Process
---
flowchart LR
subgraph independent release cycles
A(docker+machine)
B(base images)
end
subgraph gitlab-runner
C(create binaries ) --> D(unit tests) --> E(publish binaries)
end
subgraph gitlab-runner-images
F(Create) --> G(integration-tests) --> H(Publish)
end
subgraph gitlab-runner-packages
I(Create) --> J(Test) --> K(Publish)
end
A --> B --> gitlab-runner
gitlab-runner --> gitlab-runner-images
gitlab-runner --> gitlab-runner-packages
gitlab-runner --> Y(Chart)
gitlab-runner --> Z(Operator)
This way, if there are errors with the packages or images, they can be addressed without involving the main runner release process.
Related: