mirror of
https://gitea.com/gitea/act_runner.git
synced 2026-02-04 04:14:48 +00:00
Compare commits
2 Commits
f0b5aff3bb
...
5302c25feb
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
5302c25feb | ||
|
|
a616ed1a10 |
@@ -52,7 +52,7 @@ func runRegister(ctx context.Context, regArgs *registerArgs, configFile *string)
|
|||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
go func() {
|
go func() {
|
||||||
if err := registerInteractive(ctx, *configFile); err != nil {
|
if err := registerInteractive(ctx, *configFile, regArgs); err != nil {
|
||||||
log.Fatal(err)
|
log.Fatal(err)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
@@ -127,6 +127,22 @@ func validateLabels(ls []string) error {
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (r *registerInputs) stageValue(stage registerStage) string {
|
||||||
|
switch stage {
|
||||||
|
case StageInputInstance:
|
||||||
|
return r.InstanceAddr
|
||||||
|
case StageInputToken:
|
||||||
|
return r.Token
|
||||||
|
case StageInputRunnerName:
|
||||||
|
return r.RunnerName
|
||||||
|
case StageInputLabels:
|
||||||
|
if len(r.Labels) > 0 {
|
||||||
|
return strings.Join(r.Labels, ",")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return ""
|
||||||
|
}
|
||||||
|
|
||||||
func (r *registerInputs) assignToNext(stage registerStage, value string, cfg *config.Config) registerStage {
|
func (r *registerInputs) assignToNext(stage registerStage, value string, cfg *config.Config) registerStage {
|
||||||
// must set instance address and token.
|
// must set instance address and token.
|
||||||
// if empty, keep current stage.
|
// if empty, keep current stage.
|
||||||
@@ -181,6 +197,7 @@ func (r *registerInputs) assignToNext(stage registerStage, value string, cfg *co
|
|||||||
|
|
||||||
if validateLabels(r.Labels) != nil {
|
if validateLabels(r.Labels) != nil {
|
||||||
log.Infoln("Invalid labels, please input again, leave blank to use the default labels (for example, ubuntu-latest:docker://docker.gitea.com/runner-images:ubuntu-latest)")
|
log.Infoln("Invalid labels, please input again, leave blank to use the default labels (for example, ubuntu-latest:docker://docker.gitea.com/runner-images:ubuntu-latest)")
|
||||||
|
r.Labels = nil
|
||||||
return StageInputLabels
|
return StageInputLabels
|
||||||
}
|
}
|
||||||
return StageWaitingForRegistration
|
return StageWaitingForRegistration
|
||||||
@@ -188,11 +205,25 @@ func (r *registerInputs) assignToNext(stage registerStage, value string, cfg *co
|
|||||||
return StageUnknown
|
return StageUnknown
|
||||||
}
|
}
|
||||||
|
|
||||||
func registerInteractive(ctx context.Context, configFile string) error {
|
func initInputs(regArgs *registerArgs) *registerInputs {
|
||||||
|
inputs := ®isterInputs{
|
||||||
|
InstanceAddr: regArgs.InstanceAddr,
|
||||||
|
Token: regArgs.Token,
|
||||||
|
RunnerName: regArgs.RunnerName,
|
||||||
|
Ephemeral: regArgs.Ephemeral,
|
||||||
|
}
|
||||||
|
regArgs.Labels = strings.TrimSpace(regArgs.Labels)
|
||||||
|
// command line flag.
|
||||||
|
if regArgs.Labels != "" {
|
||||||
|
inputs.Labels = strings.Split(regArgs.Labels, ",")
|
||||||
|
}
|
||||||
|
return inputs
|
||||||
|
}
|
||||||
|
|
||||||
|
func registerInteractive(ctx context.Context, configFile string, regArgs *registerArgs) error {
|
||||||
var (
|
var (
|
||||||
reader = bufio.NewReader(os.Stdin)
|
reader = bufio.NewReader(os.Stdin)
|
||||||
stage = StageInputInstance
|
stage = StageInputInstance
|
||||||
inputs = new(registerInputs)
|
|
||||||
)
|
)
|
||||||
|
|
||||||
cfg, err := config.LoadDefault(configFile)
|
cfg, err := config.LoadDefault(configFile)
|
||||||
@@ -202,13 +233,17 @@ func registerInteractive(ctx context.Context, configFile string) error {
|
|||||||
if f, err := os.Stat(cfg.Runner.File); err == nil && !f.IsDir() {
|
if f, err := os.Stat(cfg.Runner.File); err == nil && !f.IsDir() {
|
||||||
stage = StageOverwriteLocalConfig
|
stage = StageOverwriteLocalConfig
|
||||||
}
|
}
|
||||||
|
inputs := initInputs(regArgs)
|
||||||
|
|
||||||
for {
|
for {
|
||||||
printStageHelp(stage)
|
cmdString := inputs.stageValue(stage)
|
||||||
|
if cmdString == "" {
|
||||||
cmdString, err := reader.ReadString('\n')
|
printStageHelp(stage)
|
||||||
if err != nil {
|
var err error
|
||||||
return err
|
cmdString, err = reader.ReadString('\n')
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
}
|
}
|
||||||
stage = inputs.assignToNext(stage, strings.TrimSpace(cmdString), cfg)
|
stage = inputs.assignToNext(stage, strings.TrimSpace(cmdString), cfg)
|
||||||
|
|
||||||
@@ -255,18 +290,7 @@ func registerNoInteractive(ctx context.Context, configFile string, regArgs *regi
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
inputs := ®isterInputs{
|
inputs := initInputs(regArgs)
|
||||||
InstanceAddr: regArgs.InstanceAddr,
|
|
||||||
Token: regArgs.Token,
|
|
||||||
RunnerName: regArgs.RunnerName,
|
|
||||||
Labels: defaultLabels,
|
|
||||||
Ephemeral: regArgs.Ephemeral,
|
|
||||||
}
|
|
||||||
regArgs.Labels = strings.TrimSpace(regArgs.Labels)
|
|
||||||
// command line flag.
|
|
||||||
if regArgs.Labels != "" {
|
|
||||||
inputs.Labels = strings.Split(regArgs.Labels, ",")
|
|
||||||
}
|
|
||||||
// specify labels in config file.
|
// specify labels in config file.
|
||||||
if len(cfg.Runner.Labels) > 0 {
|
if len(cfg.Runner.Labels) > 0 {
|
||||||
if regArgs.Labels != "" {
|
if regArgs.Labels != "" {
|
||||||
@@ -274,6 +298,9 @@ func registerNoInteractive(ctx context.Context, configFile string, regArgs *regi
|
|||||||
}
|
}
|
||||||
inputs.Labels = cfg.Runner.Labels
|
inputs.Labels = cfg.Runner.Labels
|
||||||
}
|
}
|
||||||
|
if len(inputs.Labels) == 0 {
|
||||||
|
inputs.Labels = defaultLabels
|
||||||
|
}
|
||||||
|
|
||||||
if inputs.RunnerName == "" {
|
if inputs.RunnerName == "" {
|
||||||
inputs.RunnerName, _ = os.Hostname()
|
inputs.RunnerName, _ = os.Hostname()
|
||||||
|
|||||||
@@ -163,6 +163,12 @@ func (r *Runner) run(ctx context.Context, task *runnerv1.Task, reporter *report.
|
|||||||
preset.Token = t
|
preset.Token = t
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if actionsIdTokenRequestUrl := taskContext["actions_id_token_request_url"].GetStringValue(); actionsIdTokenRequestUrl != "" {
|
||||||
|
r.envs["ACTIONS_ID_TOKEN_REQUEST_URL"] = actionsIdTokenRequestUrl
|
||||||
|
r.envs["ACTIONS_ID_TOKEN_REQUEST_TOKEN"] = taskContext["actions_id_token_request_token"].GetStringValue()
|
||||||
|
task.Secrets["ACTIONS_ID_TOKEN_REQUEST_TOKEN"] = r.envs["ACTIONS_ID_TOKEN_REQUEST_TOKEN"]
|
||||||
|
}
|
||||||
|
|
||||||
giteaRuntimeToken := taskContext["gitea_runtime_token"].GetStringValue()
|
giteaRuntimeToken := taskContext["gitea_runtime_token"].GetStringValue()
|
||||||
if giteaRuntimeToken == "" {
|
if giteaRuntimeToken == "" {
|
||||||
// use task token to action api token for previous Gitea Server Versions
|
// use task token to action api token for previous Gitea Server Versions
|
||||||
|
|||||||
Reference in New Issue
Block a user