Skip to content

Commit

Permalink
Modify user agent format with subsystem and is proxy configured infor…
Browse files Browse the repository at this point in the history
…mation (#3116)
  • Loading branch information
nikola-jokic authored Dec 8, 2023
1 parent b08d533 commit 202a97a
Show file tree
Hide file tree
Showing 4 changed files with 50 additions and 9 deletions.
7 changes: 7 additions & 0 deletions cmd/githubrunnerscalesetlistener/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -176,6 +176,8 @@ func run(ctx context.Context, rc config.Config, logger logr.Logger, opts runOpti
Version: build.Version,
CommitSHA: build.CommitSHA,
ScaleSetID: rc.RunnerScaleSetId,
HasProxy: hasProxy(),
Subsystem: "githubrunnerscalesetlistener",
})
if err != nil {
return fmt.Errorf("failed to create an Actions Service client: %w", err)
Expand Down Expand Up @@ -235,3 +237,8 @@ func newActionsClientFromConfig(config config.Config, creds *actions.ActionsAuth

return actions.NewClient(config.ConfigureUrl, creds, options...)
}

func hasProxy() bool {
proxyFunc := httpproxy.FromEnvironment().ProxyFunc()
return proxyFunc != nil
}
Original file line number Diff line number Diff line change
Expand Up @@ -466,6 +466,8 @@ func (r *AutoscalingRunnerSetReconciler) createRunnerScaleSet(ctx context.Contex
Version: build.Version,
CommitSHA: build.CommitSHA,
ScaleSetID: runnerScaleSet.Id,
HasProxy: autoscalingRunnerSet.Spec.Proxy != nil,
Subsystem: "controller",
})

logger.Info("Created/Reused a runner scale set", "id", runnerScaleSet.Id, "runnerGroupName", runnerScaleSet.RunnerGroupName)
Expand Down
26 changes: 17 additions & 9 deletions github/actions/client.go
Original file line number Diff line number Diff line change
Expand Up @@ -109,23 +109,31 @@ type ProxyFunc func(req *http.Request) (*url.URL, error)
type ClientOption func(*Client)

type UserAgentInfo struct {
Version string
CommitSHA string
// Version is the version of the controller
Version string
// CommitSHA is the git commit SHA of the controller
CommitSHA string
// ScaleSetID is the ID of the scale set
ScaleSetID int
// HasProxy is true if the controller is running behind a proxy
HasProxy bool
// Subsystem is the subsystem such as listener, controller, etc.
// Each system may pick its own subsystem name.
Subsystem string
}

func (u UserAgentInfo) String() string {
var scaleSetID = "NA"
scaleSetID := "NA"
if u.ScaleSetID > 0 {
scaleSetID = strconv.Itoa(u.ScaleSetID)
}

return fmt.Sprintf(
"actions-runner-controller/%s CommitSHA/%s ScaleSetID/%s",
u.Version,
u.CommitSHA,
scaleSetID,
)
proxy := "Proxy/disabled"
if u.HasProxy {
proxy = "Proxy/enabled"
}

return fmt.Sprintf("actions-runner-controller/%s (%s; %s) ScaleSetID/%s (%s)", u.Version, u.CommitSHA, u.Subsystem, scaleSetID, proxy)
}

func WithLogger(logger logr.Logger) ClientOption {
Expand Down
24 changes: 24 additions & 0 deletions github/actions/user_agent_test.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
package actions_test

import (
"testing"

"github.com/actions/actions-runner-controller/github/actions"
"github.com/stretchr/testify/assert"
)

func TestUserAgentInfoString(t *testing.T) {
userAgentInfo := actions.UserAgentInfo{
Version: "0.1.0",
CommitSHA: "1234567890abcdef",
ScaleSetID: 10,
HasProxy: true,
Subsystem: "test",
}

userAgent := userAgentInfo.String()
expectedProduct := "actions-runner-controller/0.1.0 (1234567890abcdef; test)"
assert.Contains(t, userAgent, expectedProduct)
expectedScaleSet := "ScaleSetID/10 (Proxy/enabled)"
assert.Contains(t, userAgent, expectedScaleSet)
}

0 comments on commit 202a97a

Please sign in to comment.