mirror of
https://gitea.com/gitea/act_runner.git
synced 2024-11-06 10:47:22 +01:00
f24e0721dc
User can get the name of the runner that executed the specified job. ![image](/attachments/61328f68-7223-4345-85c7-ac08781e81db) Co-authored-by: Zettat123 <zettat123@gmail.com> Reviewed-on: https://gitea.com/gitea/act_runner/pulls/37 Reviewed-by: Jason Song <i@wolfogre.com> Reviewed-by: Lunny Xiao <xiaolunwen@gmail.com> Co-authored-by: Zettat123 <zettat123@noreply.gitea.io> Co-committed-by: Zettat123 <zettat123@noreply.gitea.io>
121 lines
2.7 KiB
Go
121 lines
2.7 KiB
Go
// Copyright 2022 The Gitea Authors. All rights reserved.
|
|
// SPDX-License-Identifier: MIT
|
|
|
|
package config
|
|
|
|
import (
|
|
"encoding/json"
|
|
"io"
|
|
"os"
|
|
"runtime"
|
|
"strconv"
|
|
|
|
"gitea.com/gitea/act_runner/core"
|
|
|
|
"github.com/joho/godotenv"
|
|
"github.com/kelseyhightower/envconfig"
|
|
)
|
|
|
|
type (
|
|
// Config provides the system configuration.
|
|
Config struct {
|
|
Debug bool `envconfig:"GITEA_DEBUG"`
|
|
Trace bool `envconfig:"GITEA_TRACE"`
|
|
Client Client
|
|
Runner Runner
|
|
Platform Platform
|
|
}
|
|
|
|
Client struct {
|
|
Address string `ignored:"true"`
|
|
Insecure bool
|
|
}
|
|
|
|
Runner struct {
|
|
UUID string `ignored:"true"`
|
|
Name string `envconfig:"GITEA_RUNNER_NAME"`
|
|
Token string `ignored:"true"`
|
|
Capacity int `envconfig:"GITEA_RUNNER_CAPACITY" default:"1"`
|
|
File string `envconfig:"GITEA_RUNNER_FILE" default:".runner"`
|
|
Environ map[string]string `envconfig:"GITEA_RUNNER_ENVIRON"`
|
|
EnvFile string `envconfig:"GITEA_RUNNER_ENV_FILE"`
|
|
Labels []string `envconfig:"GITEA_RUNNER_LABELS"`
|
|
}
|
|
|
|
Platform struct {
|
|
OS string `envconfig:"GITEA_PLATFORM_OS"`
|
|
Arch string `envconfig:"GITEA_PLATFORM_ARCH"`
|
|
}
|
|
)
|
|
|
|
// FromEnviron returns the settings from the environment.
|
|
func FromEnviron() (Config, error) {
|
|
cfg := Config{}
|
|
if err := envconfig.Process("", &cfg); err != nil {
|
|
return cfg, err
|
|
}
|
|
|
|
// check runner config exist
|
|
f, err := os.Stat(cfg.Runner.File)
|
|
if err == nil && !f.IsDir() {
|
|
jsonFile, _ := os.Open(cfg.Runner.File)
|
|
defer jsonFile.Close()
|
|
byteValue, _ := io.ReadAll(jsonFile)
|
|
var runner core.Runner
|
|
if err := json.Unmarshal(byteValue, &runner); err != nil {
|
|
return cfg, err
|
|
}
|
|
if runner.UUID != "" {
|
|
cfg.Runner.UUID = runner.UUID
|
|
}
|
|
if runner.Name != "" {
|
|
cfg.Runner.Name = runner.Name
|
|
}
|
|
if runner.Token != "" {
|
|
cfg.Runner.Token = runner.Token
|
|
}
|
|
if len(runner.Labels) != 0 {
|
|
cfg.Runner.Labels = runner.Labels
|
|
}
|
|
if runner.Address != "" {
|
|
cfg.Client.Address = runner.Address
|
|
}
|
|
if runner.Insecure != "" {
|
|
cfg.Client.Insecure, _ = strconv.ParseBool(runner.Insecure)
|
|
}
|
|
} else if err != nil {
|
|
return cfg, err
|
|
}
|
|
|
|
// runner config
|
|
if cfg.Runner.Environ == nil {
|
|
cfg.Runner.Environ = map[string]string{
|
|
"GITHUB_API_URL": cfg.Client.Address + "/api/v1",
|
|
"GITHUB_SERVER_URL": cfg.Client.Address,
|
|
}
|
|
}
|
|
if cfg.Runner.Name == "" {
|
|
cfg.Runner.Name, _ = os.Hostname()
|
|
}
|
|
|
|
// platform config
|
|
if cfg.Platform.OS == "" {
|
|
cfg.Platform.OS = runtime.GOOS
|
|
}
|
|
if cfg.Platform.Arch == "" {
|
|
cfg.Platform.Arch = runtime.GOARCH
|
|
}
|
|
|
|
if file := cfg.Runner.EnvFile; file != "" {
|
|
envs, err := godotenv.Read(file)
|
|
if err != nil {
|
|
return cfg, err
|
|
}
|
|
for k, v := range envs {
|
|
cfg.Runner.Environ[k] = v
|
|
}
|
|
}
|
|
|
|
return cfg, nil
|
|
}
|