mirror of
https://gitea.com/gitea/runner.git
synced 2026-11-07 15:50:28 +00:00
Adds `container.volumes`, mounted into every Docker job, service and action container. Sources are paths on the Docker daemon's host and need no `valid_volumes` entry, and workflow volumes may use them only with the same access. Adds `runner.ca_file`, a private CA trusted for the Gitea instance besides the system's by the runner's connections and its artifact proxy. Runner-side git and `builtin:checkout` use it as their CA bundle for the instance, persisted with the checkout's credentials. Jobs get it at `/var/run/act/ca.crt` with `NODE_EXTRA_CA_CERTS` pointing there unless the job or its image sets it. Git in jobs, as run by `actions/checkout`, needs the CA in the image's bundle, for example through `container.volumes`. Fixes: https://gitea.com/gitea/runner/issues/568 Fixes: https://gitea.com/gitea/runner/issues/671 Co-authored-by: silverwind <[email protected]> Co-authored-by: silverwind <[email protected]> Reviewed-on: https://gitea.com/gitea/runner/pulls/1366 Reviewed-by: silverwind <[email protected]> Co-authored-by: bircni <[email protected]>
69 lines
2.0 KiB
Go
69 lines
2.0 KiB
Go
// Copyright 2026 The Gitea Authors. All rights reserved.
|
|
// SPDX-License-Identifier: MIT
|
|
|
|
package runner
|
|
|
|
import (
|
|
"context"
|
|
|
|
"gitea.com/gitea/runner/act/common"
|
|
"gitea.com/gitea/runner/internal/pkg/action"
|
|
"gitea.com/gitea/runner/internal/pkg/action/checkout"
|
|
|
|
"gitea.dev/actionslib/pkg/model"
|
|
)
|
|
|
|
var builtinActions = map[string]func(context.Context, *action.Context) error{
|
|
"checkout": checkout.Main,
|
|
}
|
|
|
|
type stepActionBuiltin struct {
|
|
Step *model.Step
|
|
RunContext *RunContext
|
|
run func(context.Context, *action.Context) error
|
|
env map[string]string
|
|
}
|
|
|
|
func (sab *stepActionBuiltin) pre() common.Executor { return common.NewPipelineExecutor() }
|
|
|
|
func (sab *stepActionBuiltin) main() common.Executor {
|
|
sab.env = map[string]string{}
|
|
return runStepExecutor(sab, stepStageMain, func(ctx context.Context) error {
|
|
if common.Dryrun(ctx) {
|
|
return nil
|
|
}
|
|
|
|
printRunActionHeader(ctx, sab.Step, nil, sab.env, sab.RunContext)
|
|
|
|
rc := sab.RunContext
|
|
rc.ApplyExtraPath(ctx, &sab.env)
|
|
return sab.run(ctx, &action.Context{
|
|
Container: rc.JobContainer,
|
|
Github: getStepGithubContext(ctx, sab),
|
|
Inputs: sab.Step.With,
|
|
HostWorkdir: rc.Config.Workdir,
|
|
Workspace: rc.JobContainer.ToContainerPath(rc.Config.Workdir),
|
|
BindWorkdir: rc.Config.BindWorkdir,
|
|
NoSkipCheckout: rc.Config.NoSkipCheckout,
|
|
UseGitIgnore: rc.Config.UseGitIgnore,
|
|
InsecureSkipTLS: rc.Config.InsecureSkipTLS,
|
|
ClientCertFile: rc.Config.ClientCertFile,
|
|
ClientKeyFile: rc.Config.ClientKeyFile,
|
|
CAFile: rc.jobCAFile(),
|
|
Env: sab.env,
|
|
})
|
|
})
|
|
}
|
|
|
|
func (sab *stepActionBuiltin) post() common.Executor { return common.NewPipelineExecutor() }
|
|
|
|
func (sab *stepActionBuiltin) getRunContext() *RunContext { return sab.RunContext }
|
|
|
|
func (sab *stepActionBuiltin) getStepModel() *model.Step { return sab.Step }
|
|
|
|
func (sab *stepActionBuiltin) getEnv() *map[string]string { return &sab.env }
|
|
|
|
func (sab *stepActionBuiltin) getIfExpression(_ context.Context, _ stepStage) string {
|
|
return sab.Step.If.Value
|
|
}
|