diff --git a/pkg/runner/run_context.go b/pkg/runner/run_context.go index 5abe348..2bde1bc 100644 --- a/pkg/runner/run_context.go +++ b/pkg/runner/run_context.go @@ -177,15 +177,15 @@ func (rc *RunContext) startJobContainer() common.Executor { rc.JobContainer.UpdateFromEnv("/etc/environment", &rc.Env), rc.JobContainer.Copy(ActPath+"/", &container.FileEntry{ Name: "workflow/event.json", - Mode: 0644, + Mode: 0o644, Body: rc.EventJSON, }, &container.FileEntry{ Name: "workflow/envs.txt", - Mode: 0666, + Mode: 0o666, Body: "", }, &container.FileEntry{ Name: "workflow/paths.txt", - Mode: 0666, + Mode: 0o666, Body: "", }), )(ctx) @@ -588,9 +588,16 @@ func (rc *RunContext) withGithubEnv(ctx context.Context, github *model.GithubCon env["RUNNER_PERFLOG"] = github.RunnerPerflog env["RUNNER_TRACKING_ID"] = github.RunnerTrackingID if rc.Config.GitHubInstance != "github.com" { - env["GITHUB_SERVER_URL"] = fmt.Sprintf("https://%s", rc.Config.GitHubInstance) - env["GITHUB_API_URL"] = fmt.Sprintf("https://%s/api/v3", rc.Config.GitHubInstance) - env["GITHUB_GRAPHQL_URL"] = fmt.Sprintf("https://%s/api/graphql", rc.Config.GitHubInstance) + hasProtocol := strings.HasPrefix(rc.Config.GitHubInstance, "http://") || strings.HasPrefix(rc.Config.GitHubInstance, "https://") + if hasProtocol { + env["GITHUB_SERVER_URL"] = rc.Config.GitHubInstance + env["GITHUB_API_URL"] = fmt.Sprintf("%s/api/v3", rc.Config.GitHubInstance) // FIXME: gitea is v1 not v3 + env["GITHUB_GRAPHQL_URL"] = fmt.Sprintf("%s/api/graphql", rc.Config.GitHubInstance) + } else { + env["GITHUB_SERVER_URL"] = fmt.Sprintf("https://%s", rc.Config.GitHubInstance) + env["GITHUB_API_URL"] = fmt.Sprintf("https://%s/api/v3", rc.Config.GitHubInstance) + env["GITHUB_GRAPHQL_URL"] = fmt.Sprintf("https://%s/api/graphql", rc.Config.GitHubInstance) + } } if rc.Config.ArtifactServerPath != "" { diff --git a/pkg/runner/runner.go b/pkg/runner/runner.go index f92d376..b0b74ad 100644 --- a/pkg/runner/runner.go +++ b/pkg/runner/runner.go @@ -56,9 +56,10 @@ type Config struct { ReplaceGheActionWithGithubCom []string // Use actions from GitHub Enterprise instance to GitHub ReplaceGheActionTokenWithGithubCom string // Token of private action repo on GitHub. - PresetGitHubContext *model.GithubContext // the preset github context, overrides some fields like DefaultBranch, Env, Secrets etc. - EventJSON string // the content of JSON file to use for event.json in containers, overrides EventPath - ContainerNamePrefix string // the prefix of container name + PresetGitHubContext *model.GithubContext // the preset github context, overrides some fields like DefaultBranch, Env, Secrets etc. + EventJSON string // the content of JSON file to use for event.json in containers, overrides EventPath + ContainerNamePrefix string // the prefix of container name + DefaultActionInstance string // the default actions web site } // Resolves the equivalent host path inside the container diff --git a/pkg/runner/step_action_remote.go b/pkg/runner/step_action_remote.go index 8afbe31..78b4d73 100644 --- a/pkg/runner/step_action_remote.go +++ b/pkg/runner/step_action_remote.go @@ -30,9 +30,7 @@ type stepActionRemote struct { remoteAction *remoteAction } -var ( - stepActionRemoteNewCloneExecutor = git.NewGitCloneExecutor -) +var stepActionRemoteNewCloneExecutor = git.NewGitCloneExecutor func (sar *stepActionRemote) prepareActionExecutor() common.Executor { return func(ctx context.Context) error { @@ -46,7 +44,7 @@ func (sar *stepActionRemote) prepareActionExecutor() common.Executor { return fmt.Errorf("Expected format {org}/{repo}[/path]@ref. Actual '%s' Input string was not in a correct format", sar.Step.Uses) } - sar.remoteAction.URL = sar.RunContext.Config.GitHubInstance + sar.remoteAction.URL = sar.RunContext.Config.DefaultActionInstance github := sar.getGithubContext(ctx) if sar.remoteAction.IsCheckout() && isLocalCheckout(github, sar.Step) && !sar.RunContext.Config.NoSkipCheckout { @@ -54,7 +52,6 @@ func (sar *stepActionRemote) prepareActionExecutor() common.Executor { return nil } - sar.remoteAction.URL = sar.RunContext.Config.GitHubInstance for _, action := range sar.RunContext.Config.ReplaceGheActionWithGithubCom { if strings.EqualFold(fmt.Sprintf("%s/%s", sar.remoteAction.Org, sar.remoteAction.Repo), action) { sar.remoteAction.URL = "github.com" @@ -213,7 +210,11 @@ type remoteAction struct { } func (ra *remoteAction) CloneURL() string { - return fmt.Sprintf("https://%s/%s/%s", ra.URL, ra.Org, ra.Repo) + u := ra.URL + if !strings.HasPrefix(u, "http://") && !strings.HasPrefix(u, "https://") { + u = "https://" + u + } + return fmt.Sprintf("%s/%s/%s", u, ra.Org, ra.Repo) } func (ra *remoteAction) IsCheckout() bool {