Fix a regression in webhook-based autoscaler (#1596)
The regression resulted in the webhook-based autoscaler be unable to find visible runner groups and therefore unable to scale up and down the target RunnerDeployment/RunnerSet at all when the webhook-based autoscaler was provided GitHub API credentials to enable the runner groups support. This fixes that. The regression was introduced via #1578 which is not released yet. Users of existing ARC releases are therefore not affected.
This commit is contained in:
parent
5a9e8545aa
commit
bfc5ea4727
|
|
@ -524,6 +524,7 @@ func (autoscaler *HorizontalRunnerAutoscalerGitHubWebhook) getScaleUpTargetWithF
|
||||||
if autoscaler.GitHubClient != nil {
|
if autoscaler.GitHubClient != nil {
|
||||||
simu := &simulator.Simulator{
|
simu := &simulator.Simulator{
|
||||||
Client: autoscaler.GitHubClient,
|
Client: autoscaler.GitHubClient,
|
||||||
|
Log: log,
|
||||||
}
|
}
|
||||||
// Get available organization runner groups and enterprise runner groups for a repository
|
// Get available organization runner groups and enterprise runner groups for a repository
|
||||||
// These are the sum of runner groups with repository access = All repositories and runner groups
|
// These are the sum of runner groups with repository access = All repositories and runner groups
|
||||||
|
|
|
||||||
|
|
@ -273,8 +273,17 @@ func (c *Client) ListOrganizationRunnerGroupsForRepository(ctx context.Context,
|
||||||
var runnerGroups []*github.RunnerGroup
|
var runnerGroups []*github.RunnerGroup
|
||||||
|
|
||||||
var opts github.ListOrgRunnerGroupOptions
|
var opts github.ListOrgRunnerGroupOptions
|
||||||
|
|
||||||
opts.PerPage = 100
|
opts.PerPage = 100
|
||||||
opts.VisibleToRepository = repo
|
|
||||||
|
repoName := repo
|
||||||
|
parts := strings.Split(repo, "/")
|
||||||
|
if len(parts) == 2 {
|
||||||
|
repoName = parts[1]
|
||||||
|
}
|
||||||
|
// This must be the repo name without the owner part, so in case the repo is "myorg/myrepo" the repo name
|
||||||
|
// passed to visible_to_repository must be "myrepo".
|
||||||
|
opts.VisibleToRepository = repoName
|
||||||
|
|
||||||
for {
|
for {
|
||||||
list, res, err := c.Actions.ListOrganizationRunnerGroups(ctx, org, &opts)
|
list, res, err := c.Actions.ListOrganizationRunnerGroups(ctx, org, &opts)
|
||||||
|
|
|
||||||
|
|
@ -5,10 +5,12 @@ import (
|
||||||
"fmt"
|
"fmt"
|
||||||
|
|
||||||
"github.com/actions-runner-controller/actions-runner-controller/github"
|
"github.com/actions-runner-controller/actions-runner-controller/github"
|
||||||
|
"github.com/go-logr/logr"
|
||||||
)
|
)
|
||||||
|
|
||||||
type Simulator struct {
|
type Simulator struct {
|
||||||
Client *github.Client
|
Client *github.Client
|
||||||
|
Log logr.Logger
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c *Simulator) GetRunnerGroupsVisibleToRepository(ctx context.Context, org, repo string, managed *VisibleRunnerGroups) (*VisibleRunnerGroups, error) {
|
func (c *Simulator) GetRunnerGroupsVisibleToRepository(ctx context.Context, org, repo string, managed *VisibleRunnerGroups) (*VisibleRunnerGroups, error) {
|
||||||
|
|
@ -24,6 +26,10 @@ func (c *Simulator) GetRunnerGroupsVisibleToRepository(ctx context.Context, org,
|
||||||
return visible, err
|
return visible, err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if c.Log.V(3).Enabled() {
|
||||||
|
c.Log.V(3).Info("ListOrganizationRunnerGroupsForRepository succeeded", "runerGroups", runnerGroups)
|
||||||
|
}
|
||||||
|
|
||||||
for _, runnerGroup := range runnerGroups {
|
for _, runnerGroup := range runnerGroups {
|
||||||
ref := NewRunnerGroupFromGitHub(runnerGroup)
|
ref := NewRunnerGroupFromGitHub(runnerGroup)
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue