Skip to content

Commit 401d546

Browse files
committed
feat(cli): add flag --register for runner
1 parent e8d33dc commit 401d546

File tree

3 files changed

+44
-14
lines changed

3 files changed

+44
-14
lines changed

cli/cmd/runner_register.go

Lines changed: 18 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -18,22 +18,28 @@ func init() {
1818
runnerCmd.AddCommand(runnerRegisterCmd)
1919
}
2020

21-
func registerRunner() {
21+
func initRunnerRegistrationToken() {
22+
if !runnerRegisterArgs.stdinRegistrationToken {
23+
return
24+
}
2225

23-
configFile := util.ConfigInit(persistentFlags.configPath, persistentFlags.noConfig)
26+
tokenBytes, err := io.ReadAll(os.Stdin)
27+
if err != nil {
28+
panic(err)
29+
}
2430

25-
if runnerRegisterArgs.stdinRegistrationToken {
26-
tokenBytes, err := io.ReadAll(os.Stdin)
27-
if err != nil {
28-
panic(err)
29-
}
31+
if len(tokenBytes) == 0 {
32+
panic("Empty token")
33+
}
3034

31-
if len(tokenBytes) == 0 {
32-
panic("Empty token")
33-
}
35+
util.Config.Runner.RegistrationToken = strings.TrimSpace(string(tokenBytes))
36+
}
3437

35-
util.Config.Runner.RegistrationToken = strings.TrimSpace(string(tokenBytes))
36-
}
38+
func registerRunner() {
39+
40+
configFile := util.ConfigInit(persistentFlags.configPath, persistentFlags.noConfig)
41+
42+
initRunnerRegistrationToken()
3743

3844
taskPool := createRunnerJobPool()
3945

cli/cmd/runner_start.go

Lines changed: 21 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,15 +5,35 @@ import (
55
"github.com/spf13/cobra"
66
)
77

8+
var runnerStartArgs struct {
9+
register bool
10+
}
11+
812
func init() {
13+
runnerRegisterCmd.PersistentFlags().BoolVar(&runnerStartArgs.register, "register", false, "Register new runner if not registered")
914
runnerCmd.AddCommand(runnerStartCmd)
1015
}
1116

1217
func runRunner() {
13-
util.ConfigInit(persistentFlags.configPath, persistentFlags.noConfig)
18+
19+
configFile := util.ConfigInit(persistentFlags.configPath, persistentFlags.noConfig)
1420

1521
taskPool := createRunnerJobPool()
1622

23+
if runnerStartArgs.register {
24+
25+
initRunnerRegistrationToken()
26+
27+
if util.Config.Runner.Token == "" {
28+
29+
err := taskPool.Register(configFile)
30+
31+
if err != nil {
32+
panic(err)
33+
}
34+
}
35+
}
36+
1737
taskPool.Run()
1838
}
1939

deployment/docker/runner/runner-wrapper

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,11 @@ fi
1515

1616
echoerr "Starting semaphore runner"
1717
if test "$#" -ne 1; then
18-
exec /usr/local/bin/semaphore runner start --no-config
18+
if [ -n "${SEMAPHORE_RUNNER_REGISTRATION_TOKEN:-}" ]; then
19+
exec /usr/local/bin/semaphore runner start --no-config --register
20+
else
21+
exec /usr/local/bin/semaphore runner start --no-config
22+
fi
1923
else
2024
exec "$@"
2125
fi

0 commit comments

Comments
 (0)