Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 4 additions & 3 deletions cli/cmd/runner_register.go
Original file line number Diff line number Diff line change
Expand Up @@ -83,9 +83,10 @@ func applyRunnerRegisterFlags(cmd *cobra.Command) {
if cmd.PersistentFlags().Changed("tags") {
util.Config.Runner.Tags = runnerRegisterArgs.tags
}
if cmd.PersistentFlags().Changed("enabled") {
util.Config.Runner.Enabled = runnerRegisterArgs.enabled
}
// Always apply enabled: the flag defaults to true, but util.Config.Runner.Enabled
// stays false (zero value) unless we copy it. Without this, registration creates
// an inactive runner that never receives tasks.
util.Config.Runner.Enabled = runnerRegisterArgs.enabled

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Preserve runner.enabled from config/env

When --enabled is omitted, this unconditional assignment overwrites any value loaded by ConfigInit from runner.enabled or SEMAPHORE_RUNNER_ENABLED; for example, a runner configured with SEMAPHORE_RUNNER_ENABLED=false will still be registered as active because Cobra initialized runnerRegisterArgs.enabled to the flag default true. This removes the existing config/env control for creating an inactive runner unless the operator also passes --enabled=false on this invocation; the same pattern is also introduced for runner start --register in runner_start.go.

Useful? React with 👍 / 👎.

}

func registerRunner(cmd *cobra.Command) {
Expand Down
27 changes: 27 additions & 0 deletions cli/cmd/runner_register_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ import (
"testing"

"github.com/semaphoreui/semaphore/util"
"github.com/spf13/cobra"
"github.com/stretchr/testify/assert"
)

Expand Down Expand Up @@ -109,3 +110,29 @@ func TestInitRunnerRegistrationToken_FlagFileTakesPriority(t *testing.T) {

assert.Equal(t, "flag-token", util.Config.Runner.RegistrationToken)
}

func TestApplyRunnerRegisterFlags_EnabledDefaultsTrue(t *testing.T) {
setupRunnerConfig()
util.Config.Runner.Enabled = false
runnerRegisterArgs.enabled = true

cmd := &cobra.Command{}
cmd.PersistentFlags().BoolVar(&runnerRegisterArgs.enabled, "enabled", true, "")
applyRunnerRegisterFlags(cmd)

assert.True(t, util.Config.Runner.Enabled)
}

func TestApplyRunnerRegisterFlags_EnabledFalseWhenFlagSet(t *testing.T) {
setupRunnerConfig()
util.Config.Runner.Enabled = true
runnerRegisterArgs.enabled = false

cmd := &cobra.Command{}
cmd.PersistentFlags().BoolVar(&runnerRegisterArgs.enabled, "enabled", true, "")
err := cmd.PersistentFlags().Set("enabled", "false")
assert.NoError(t, err)
applyRunnerRegisterFlags(cmd)

assert.False(t, util.Config.Runner.Enabled)
}
2 changes: 2 additions & 0 deletions cli/cmd/runner_start.go
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,8 @@ func runRunner() {
if runnerStartArgs.register {

initRunnerRegistrationToken()
// runner start has no --enabled flag; new registrations should be active.
util.Config.Runner.Enabled = true

if util.Config.Runner.Token == "" {

Expand Down
1 change: 1 addition & 0 deletions web/src/components/RunnerForm.vue
Original file line number Diff line number Diff line change
Expand Up @@ -138,6 +138,7 @@ export default {
// itself later using a one-time registration token.
return {
registered: true,
active: true,
is_default: this.projectId == null,
};
},
Expand Down
Loading