shells/proxy_exec.go (33 lines of code) (raw):
package shells
import (
"fmt"
"gitlab.com/gitlab-org/gitlab-runner/common"
)
func WrapShell(shell common.Shell) common.Shell {
return &ProxyExecShell{shell}
}
type ProxyExecShell struct {
common.Shell
}
func (s *ProxyExecShell) GetEntrypointCommand(info common.ShellScriptInfo, probeFile string) []string {
entrypoint := s.Shell.GetEntrypointCommand(info, probeFile)
if len(entrypoint) == 0 || info.Build == nil || !info.Build.Runner.IsProxyExec() {
return entrypoint
}
return append([]string{info.Build.TmpProjectDir() + "/gitlab-runner-helper", "proxy-exec"}, entrypoint...)
}
func (s *ProxyExecShell) GetConfiguration(info common.ShellScriptInfo) (*common.ShellConfiguration, error) {
base, err := s.Shell.GetConfiguration(info)
if err != nil || info.Build == nil || !info.Build.Runner.IsProxyExec() {
return base, err
}
tempDir := fmt.Sprintf("%q", info.Build.TmpProjectDir())
return &common.ShellConfiguration{
Command: info.RunnerCommand,
Arguments: append([]string{"proxy-exec", "--temp-dir", info.Build.TmpProjectDir(), base.Command}, base.Arguments...),
CmdLine: info.RunnerCommand + " proxy-exec --temp-dir " + tempDir + " " + base.CmdLine,
DockerCommand: append([]string{info.Build.TmpProjectDir() + "/gitlab-runner-helper", "proxy-exec"}, base.DockerCommand...),
PassFile: base.PassFile,
Extension: base.Extension,
}, nil
}