- Aug 26, 2022
-
-
Sjoerd Simons authored
-
Sjoerd Simons authored
Use new Lava throttled API See merge request !5
-
Sjoerd Simons authored
Signed-off-by: Sjoerd Simons <sjoerd@collabora.com>
-
Sjoerd Simons authored
Default to 4 concurrent request at the same time; This is low as some of our request can be heavy on lava and nothing about them is really time-critical from a runner point of view. Hopefully with future lava improvements this can be increased, though if lava handles them faster a small amount of concurrent request isn't a big bottleneck in the first place Signed-off-by: Sjoerd Simons <sjoerd@collabora.com>
-
- Aug 25, 2022
-
-
Edmund Smith authored
These help significantly in debugging the late release of tokens which can cause querying to stall as the request volume grows. A previous iteration of the code held the Jobs endpoint open throughout its main loop, because it performed its work within a loop that only has one iteration. During this loop, the logging endpoint was called, which is also rate limited. Because there can be many jobs active, sharing the same rate limiting, it's possible for all the entire system to deadlock on the inaccessibility of permits, and in fact it appears to be a precondition for successful operation of this system that nothing ever tries to obtain two permits simultaneously. The precondition is difficult to check or track, but fortunately debugging it is relatively straightforward when the --max-concurrent-jobs is set low (which is a more stringent situation that places more demand on permits, in the presence of the same number of clients). This is the rationale for including this code, despite its invasive nature.
-
Edmund Smith authored
We need to avoid saturating a Lava instance with more requests than it can handle when we have many jobs to monitor. To do so, we limit the number of concurrent API endpoints that are active to 20. This could easily be made configurable in future. To achieve this, we wrap the Lava instance in a ThrottledLava shell that requires a permit to allow each API call to be made. The permits are passed on to the return values and need to be held until the API call finishes. The permits themselves are granted by a Throttler, which has an underlying semaphore with limited capacity. Many endpoints are handled with a simple Throttled wrapper type, which is just a smart pointer that holds a Permit. The types that cannot be handled this way are the builders.
-
- Aug 12, 2022
-
-
Sjoerd Simons authored
Adjust the docker image generation to differentiate between tags and normal builds. For normal commmits it generates containers as <branch name>:<sha + pipeline id> as is the case now. For tags it the images will be placed under the lava-gitlab-runner name directly with the image tag matching the repository tag. The tagged images will also be protected from garbage collection to prevent users potentially missing images Signed-off-by: Sjoerd Simons <sjoerd@collabora.com>
-
- Aug 11, 2022
-
-
Sjoerd Simons authored
Initial template transformation See merge request !3
-
Edmund Smith authored
This uses handlebars to substitute for job variables provided by gitlab, with the prefix of `job.`, so to substitute for `CI_JOB_TOKEN` you can use `{{ job.CI_JOB_TOKEN }}`. Note that this is the runner, and template transformations may already have been applied at an earlier generation step for the job (e.g. using jinja) which means the actual substitutions in this phase may need to have been escaped.
-
- Jul 18, 2022
-
-
Sjoerd Simons authored
-
- May 16, 2022
-
-
Sjoerd Simons authored
-
- Apr 13, 2022
-
-
Sjoerd Simons authored
Fix some grammatical issues See merge request !2
-
- Mar 31, 2022
-
-
Sjoerd Simons authored
-
- Mar 22, 2022
-
-
Sjoerd Simons authored
When using a namespace bound service account one cannot create namespaces; So removed that from and assume it has previously been setup
-
- Mar 21, 2022
-
-
Sjoerd Simons authored
The runner isn't expected to interact with the k8s APIs, so there is no need to create a service account
-
- Mar 05, 2022
-
-
Sjoerd Simons authored
Apparently in at least Apertis sometimes the runner was asked to monitor job files without any jobs in it. Which resulted in it actually querying for all jobs as queries had no filter. Adjust things to consider monitoring no jobs a failure Signed-off-by: Sjoerd Simons <sjoerd@collabora.com>
-
Sjoerd Simons authored
-
Sjoerd Simons authored
This starts the port to the latest gitlab runner crate (0.0.2); It also converts the logging to tracing infrastructure which is now also used by gitlab-runner Signed-off-by: Sjoerd Simons <sjoerd@collabora.com>
-
- Oct 23, 2021
-
-
Sjoerd Simons authored
Lava seems to be easily overwelmed when a lot of job queries happen so use a bigger interval one that backs off quickly as a workaround for now. Signed-off-by: Sjoerd Simons <sjoerd@collabora.com>
-
- Oct 15, 2021
-
-
Christopher Obbard authored
The example jobs don't work by default since they include a wildcard. YAML expects wildcards to be inside double-quotes. Signed-off-by: Christopher Obbard <chris.obbard@collabora.com>
-
Christopher Obbard authored
Signed-off-by: Christopher Obbard <chris.obbard@collabora.com>
-
- Oct 02, 2021
-
-
Sjoerd Simons authored
-
- Oct 01, 2021
-
-
Sjoerd Simons authored
Add README See merge request !1
-
Sjoerd Simons authored
-
Sjoerd Simons authored
Signed-off-by: Sjoerd Simons <sjoerd@collabora.com>
-
Sjoerd Simons authored
-
Sjoerd Simons authored
-
Sjoerd Simons authored
-