func (b *CmdShell) GenerateScript(info common.ShellScriptInfo) (*common.ShellScript, error) { var buffer bytes.Buffer w := bufio.NewWriter(&buffer) build := info.Build projectDir := build.FullProjectDir() projectDir = helpers.ToBackslash(projectDir) b.writeCommand(w, "@echo off") b.writeCommand(w, "echo.") b.writeCommand(w, "setlocal enableextensions") if len(build.Hostname) != 0 { b.writeCommand(w, "echo Running on %s via %s...", "%COMPUTERNAME%", helpers.ShellEscape(build.Hostname)) } else { b.writeCommand(w, "echo Running on %s...", "%COMPUTERNAME%") } if build.AllowGitFetch { b.writeFetchCmd(w, build, projectDir) } else { b.writeCloneCmd(w, build, projectDir) } b.writeCheckoutCmd(w, build) for _, command := range strings.Split(build.Commands, "\n") { command = strings.TrimRight(command, " \t\r\n") if strings.TrimSpace(command) == "" { b.writeCommand(w, "echo.") continue } if !helpers.BoolOrDefault(build.Runner.DisableVerbose, false) { b.writeCommand(w, "echo %s", command) } b.writeCommandChecked(w, "%s", command) } w.Flush() script := common.ShellScript{ Environment: b.GetVariables(build, projectDir, info.Environment), Script: buffer.String(), Command: "cmd", Arguments: []string{"/Q", "/C"}, PassFile: true, Extension: "cmd", } return &script, nil }
func (b *PowerShell) GenerateScript(info common.ShellScriptInfo) (*common.ShellScript, error) { var buffer bytes.Buffer w := bufio.NewWriter(&buffer) build := info.Build projectDir := build.FullProjectDir() projectDir = helpers.ToBackslash(projectDir) b.writeCommand(w, "$ErrorActionPreference = \"Stop\"") if len(build.Hostname) != 0 { b.writeCommand(w, "echo \"Running on $env:computername via %s...\"", helpers.ShellEscape(build.Hostname)) } else { b.writeCommand(w, "echo \"Running on $env:computername...\"") } b.writeCommand(w, "") if build.AllowGitFetch { b.writeFetchCmd(w, build, projectDir) } else { b.writeCloneCmd(w, build, projectDir) } b.writeCheckoutCmd(w, build) b.writeCommand(w, "") for _, command := range strings.Split(build.Commands, "\n") { command = strings.TrimRight(command, " \t\r\n") if strings.TrimSpace(command) == "" { b.writeCommand(w, "echo \"\"") continue } if !helpers.BoolOrDefault(build.Runner.DisableVerbose, false) { b.writeCommand(w, "echo \"%s\"", strings.Replace(command, "\"", "`\"", -1)) } b.writeCommandChecked(w, "%s", command) } w.Flush() script := common.ShellScript{ Environment: b.GetVariables(build, projectDir, info.Environment), BuildScript: buffer.String(), Command: "powershell", Arguments: []string{"-noprofile", "-noninteractive", "-executionpolicy", "Bypass", "-command"}, PassFile: true, Extension: "ps1", } return &script, nil }
func (b *PowerShell) GenerateScript(build *common.Build, shellType common.ShellType) (*common.ShellScript, error) { var buffer bytes.Buffer w := bufio.NewWriter(&buffer) projectDir := build.FullProjectDir() projectDir = helpers.ToBackslash(projectDir) b.writeCommand(w, "$ErrorActionPreference = \"Stop\"") if len(build.Hostname) != 0 { b.writeCommand(w, "echo \"Running on $env:computername via %s...\"", helpers.ShellEscape(build.Hostname)) } else { b.writeCommand(w, "echo \"Running on $env:computername...\"") } b.writeCommand(w, "") if build.AllowGitFetch { b.writeFetchCmd(w, build, projectDir) } else { b.writeCloneCmd(w, build, projectDir) } b.writeCheckoutCmd(w, build) b.writeCommand(w, "") for _, command := range strings.Split(build.Commands, "\n") { command = strings.TrimRight(command, " \t\r\n") if strings.TrimSpace(command) == "" { b.writeCommand(w, "echo \"\"") continue } if !helpers.BoolOrDefault(build.Runner.DisableVerbose, false) { b.writeCommand(w, "echo \"%s\"", command) } b.writeCommandChecked(w, "%s", command) } w.Flush() env := []string{ fmt.Sprintf("CI_BUILD_REF=%s", build.Sha), fmt.Sprintf("CI_BUILD_BEFORE_SHA=%s", build.BeforeSha), fmt.Sprintf("CI_BUILD_REF_NAME=%s", build.RefName), fmt.Sprintf("CI_BUILD_ID=%d", build.ID), fmt.Sprintf("CI_BUILD_REPO=%s", build.RepoURL), fmt.Sprintf("CI_PROJECT_ID=%d", build.ProjectID), fmt.Sprintf("CI_PROJECT_DIR=%s", projectDir), "CI=true", "CI_SERVER=yes", "CI_SERVER_NAME=GitLab CI", "CI_SERVER_VERSION=", "CI_SERVER_REVISION=", "GITLAB_CI=true", } script := common.ShellScript{ Environment: env, Script: buffer.Bytes(), Command: "powershell", Arguments: []string{"-noprofile", "-noninteractive", "-executionpolicy", "Bypass", "-command"}, PassFile: true, Extension: "ps1", } return &script, nil }
func (b *CmdShell) GenerateScript(build *common.Build, shellType common.ShellType) (*common.ShellScript, error) { var buffer bytes.Buffer w := bufio.NewWriter(&buffer) projectDir := build.FullProjectDir() projectDir = helpers.ToBackslash(projectDir) b.writeCommand(w, "@echo off") b.writeCommand(w, "echo.") b.writeCommand(w, "setlocal enableextensions") if len(build.Hostname) != 0 { b.writeCommand(w, "echo Running on %s via %s...", "%COMPUTERNAME%", helpers.ShellEscape(build.Hostname)) } else { b.writeCommand(w, "echo Running on %s...", "%COMPUTERNAME%") } if build.AllowGitFetch { b.writeFetchCmd(w, build, projectDir) } else { b.writeCloneCmd(w, build, projectDir) } b.writeCheckoutCmd(w, build) for _, command := range strings.Split(build.Commands, "\n") { command = strings.TrimRight(command, " \t\r\n") if strings.TrimSpace(command) == "" { b.writeCommand(w, "echo.") continue } if !helpers.BoolOrDefault(build.Runner.DisableVerbose, false) { b.writeCommand(w, "echo %s", command) } b.writeCommandChecked(w, "%s", command) } w.Flush() env := []string{ fmt.Sprintf("CI_BUILD_REF=%s", build.Sha), fmt.Sprintf("CI_BUILD_BEFORE_SHA=%s", build.BeforeSha), fmt.Sprintf("CI_BUILD_REF_NAME=%s", build.RefName), fmt.Sprintf("CI_BUILD_ID=%d", build.ID), fmt.Sprintf("CI_BUILD_REPO=%s", build.RepoURL), fmt.Sprintf("CI_PROJECT_ID=%d", build.ProjectID), fmt.Sprintf("CI_PROJECT_DIR=%s", projectDir), "CI=true", "CI_SERVER=yes", "CI_SERVER_NAME=GitLab CI", "CI_SERVER_VERSION=", "CI_SERVER_REVISION=", "GITLAB_CI=true", } script := common.ShellScript{ Environment: env, Script: buffer.Bytes(), Command: "cmd", Arguments: []string{"/Q", "/C"}, PassFile: true, Extension: "cmd", } return &script, nil }