Merge pull request #41 from gabriel-samfira/do-not-remove-foreign-runners

Don't remove foreign runners
This commit is contained in:
Gabriel 2022-10-18 08:46:15 +03:00 committed by GitHub
commit 8db1f05d09
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -63,6 +63,16 @@ type basePool struct {
mux sync.Mutex
}
func controllerIDFromLabels(labels []*github.RunnerLabels) string {
for _, lbl := range labels {
if lbl.Name != nil && strings.HasPrefix(*lbl.Name, controllerLabelPrefix) {
labelName := *lbl.Name
return labelName[len(controllerLabelPrefix):]
}
}
return ""
}
// cleanupOrphanedProviderRunners compares runners in github with local runners and removes
// any local runners that are not present in Github. Runners that are "idle" in our
// provider, but do not exist in github, will be removed. This can happen if the
@ -143,6 +153,12 @@ func (r *basePool) reapTimedOutRunners(runners []*github.Runner) error {
// first remove the instance from github, and then from our database.
func (r *basePool) cleanupOrphanedGithubRunners(runners []*github.Runner) error {
for _, runner := range runners {
runnerControllerID := controllerIDFromLabels(runner.Labels)
if runnerControllerID != r.controllerID {
// Not a runner we manage. Do not remove foreign runner.
continue
}
status := runner.GetStatus()
if status != "offline" {
// Runner is online. Ignore it.