summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMax Rees <maxcrees@me.com>2020-06-15 01:10:53 -0500
committerMax Rees <maxcrees@me.com>2020-06-15 01:10:53 -0500
commit7205748706663099aa36c06aa0c243cb1632db3d (patch)
treed4417c3cf1634d8b90b11c7deda25335745e5344
parent4e53c51f591cbd62817c797c10d240c008182ab3 (diff)
downloadpackages-7205748706663099aa36c06aa0c243cb1632db3d.tar.gz
packages-7205748706663099aa36c06aa0c243cb1632db3d.tar.bz2
packages-7205748706663099aa36c06aa0c243cb1632db3d.tar.xz
packages-7205748706663099aa36c06aa0c243cb1632db3d.zip
user/gitlab-runner: new package
-rw-r--r--user/gitlab-runner/APKBUILD87
-rw-r--r--user/gitlab-runner/clean-tmpdirs.patch21
-rw-r--r--user/gitlab-runner/disable-crap.patch21
-rw-r--r--user/gitlab-runner/gccgo.patch67
-rw-r--r--user/gitlab-runner/gitlab-runner.confd17
-rw-r--r--user/gitlab-runner/gitlab-runner.initd45
-rw-r--r--user/gitlab-runner/gitlab-runner.pre-install7
-rw-r--r--user/gitlab-runner/posix-shell-escape.patch139
-rw-r--r--user/gitlab-runner/posix-shell.patch30
-rw-r--r--user/gitlab-runner/tests.patch63
10 files changed, 497 insertions, 0 deletions
diff --git a/user/gitlab-runner/APKBUILD b/user/gitlab-runner/APKBUILD
new file mode 100644
index 000000000..e2912e150
--- /dev/null
+++ b/user/gitlab-runner/APKBUILD
@@ -0,0 +1,87 @@
+# Maintainer: Max Rees <maxcrees@me.com>
+pkgname=gitlab-runner
+pkgver=12.1.0
+pkgrel=0
+_testver=91956efe
+_branch="${pkgver%.*}"
+_branch="${pkgver%%.*}-${_branch#*.}-stable"
+pkgdesc="GitLab runner for CI/CD jobs"
+url="https://docs.gitlab.com/runner/"
+arch="all"
+pkgusers="gitlab-runner"
+pkggroups="gitlab-runner"
+options="!check" # Tests require network (git cloning)
+license="MIT"
+depends=""
+makedepends="gcc-go"
+subpackages="$pkgname-openrc"
+install="$pkgname.pre-install"
+source="https://gitlab.com/gitlab-org/gitlab-runner/-/archive/v$pkgver/gitlab-runner-v$pkgver.tar.gz
+ https://dev.sick.bike/dist/gitlab-test-$_testver.tar.gz
+ $pkgname.confd
+ $pkgname.initd
+ clean-tmpdirs.patch
+ disable-crap.patch
+ gccgo.patch
+ posix-shell.patch
+ posix-shell-escape.patch
+ tests.patch
+ "
+builddir="$srcdir/$pkgname-v$pkgver"
+
+unpack() {
+ default_unpack
+ mkdir "$builddir"/tmp
+ mv gitlab-test "$builddir"/tmp
+}
+
+_make() {
+ make "$@" VERSION="$pkgver" REVISION="v$pkgver" BRANCH="$_branch"
+}
+
+build() {
+ _make build_simple
+}
+
+check() {
+ # Even with network access and a clean chroot, there are some
+ # tests that fail:
+ #
+ # gitlab.com/gitlab-org/gitlab-runner/commands/helpers :
+ # TestCacheArchiverAddingUntrackedFiles
+ # TestCacheArchiverAddingUntrackedUnicodeFiles
+
+ # gitlab.com/gitlab-org/gitlab-runner/executors/shell :
+ # TestBuildWithGitStrategyFetchWithLFS
+ # TestBuildWithGitStrategyCloneWithLFS
+ # TestBuildWithSubmoduleLFSPullsLFSObject
+ #
+ # gitlab.com/gitlab-org/gitlab-runner/network (error: use of
+ # undefined type ‘RegisterRunnerParameters’)
+ _make test
+}
+
+package() {
+ install -Dm755 out/binaries/gitlab-runner \
+ "$pkgdir"/usr/bin/gitlab-runner
+ install -dm750 -g gitlab-runner \
+ "$pkgdir"/etc/gitlab-runner
+ install -dm750 -o gitlab-runner -g gitlab-runner \
+ "$pkgdir"/var/lib/gitlab-runner
+
+ install -Dm644 "$srcdir"/$pkgname.confd \
+ "$pkgdir"/etc/conf.d/$pkgname
+ install -Dm755 "$srcdir"/$pkgname.initd \
+ "$pkgdir"/etc/init.d/$pkgname
+}
+
+sha512sums="1b3f06b7000252631bec04a58474dda826b0fb8d28c4144051a231fba5ef0c5c4b6e0f9ca6bdf9bf9b16b9117cbcf6385eb7bac85bda7b9f99de4300cbcc2066 gitlab-runner-v12.1.0.tar.gz
+7bccab81aa1cb88c6a0f83a6d3dfc509e6f9ecb4d0168a5b30cc4e8fdd823294b95fe3633e09757905466f83bb3bf73b1d28fac475dff2dc3164604db4b5b995 gitlab-test-91956efe.tar.gz
+f8a0c7e77cd563d7e5b4fb2319181ceab8de44c555cefa4803e985ad3ac6a9fea7bca469d80b28974edcfb65f2095d019bfdf0abd8a3221464276a8d89debc0d gitlab-runner.confd
+fccb17aec519c1167126b84b987b0d42a3cb6b220d7fffe7ba2cf35a158bd63eb170bbe5cb2584a361da2d086b0b131b6a56e7be62d7f3570db234492f1f4e3c gitlab-runner.initd
+f17a6b5053933d83d90272be7e98d4abf8d63e8a9c5ad30bbb61a29dbfa1e1b55421ba14be9f7db17cae30b2ff04efcb5da68543a2fa3d0e3e1882bc128cac06 clean-tmpdirs.patch
+a32b7a6fa28c7f5bcb505308e615f17de179c15ce8c2ef73078143204195e36d99b18489114ce694c3d821378c1e9ccb26a999a50372b97df163e2512080f07e disable-crap.patch
+1dd1d541c7bcae4b45c5bdd8dc2b179afe502ffff6350d6d22d483749bc43a59da2ddffb8bc18d02fa31169c0f6a48d86670905a6a112498e873b38e7dca44a5 gccgo.patch
+444adec507c5eebcfae268f2f475d29316119f30750f06877a91dff56942d0e4d34ed3011b774b0d7acd59acfe2ddbe75082b3cd5aebd72ddb4703fd083ad301 posix-shell.patch
+05d12046448c79a12bf92974089ff97781304083f7bf35abb0b0c0f990c536bd6ff51652e16035a38e4ba5620dcad6e051ecdf4a80eb62039a15371073e525b5 posix-shell-escape.patch
+dae9c3f86fdf21bd41202fc2c0bc7dd764078ea9215d7ddbac1f7bc47b0943f7a912250a3006122f74ed50052378ed2c946eefe5c1ce8400cd682b183221025a tests.patch"
diff --git a/user/gitlab-runner/clean-tmpdirs.patch b/user/gitlab-runner/clean-tmpdirs.patch
new file mode 100644
index 000000000..89efd7a22
--- /dev/null
+++ b/user/gitlab-runner/clean-tmpdirs.patch
@@ -0,0 +1,21 @@
+Backport of: https://gitlab.com/gitlab-org/gitlab-runner/-/merge_requests/1978
+
+--- gitlab-runner-v12.1.0/executors/custom/executor.go 2019-07-19 12:13:32.000000000 +0000
++++ gitlab-runner-v12.1.0/executors/custom/executor.go 2020-04-27 00:19:46.613372635 +0000
+@@ -7,6 +7,7 @@ import (
+ "fmt"
+ "io"
+ "io/ioutil"
++ "os"
+ "path/filepath"
+
+ "github.com/sirupsen/logrus"
+@@ -216,6 +217,8 @@ func (e *executor) Cleanup() {
+ return
+ }
+
++ defer os.RemoveAll(e.tempDir)
++
+ // nothing to do, as there's no cleanup_script
+ if e.config.CleanupExec == "" {
+ return
diff --git a/user/gitlab-runner/disable-crap.patch b/user/gitlab-runner/disable-crap.patch
new file mode 100644
index 000000000..b375934fc
--- /dev/null
+++ b/user/gitlab-runner/disable-crap.patch
@@ -0,0 +1,21 @@
+--- gitlab-runner-v12.1.0/main.go 2019-07-19 12:13:32.000000000 +0000
++++ gitlab-runner-v12.1.0/main.go 2020-03-04 22:28:31.741878923 +0000
+@@ -11,18 +11,11 @@ import (
+ "gitlab.com/gitlab-org/gitlab-runner/helpers/cli"
+ "gitlab.com/gitlab-org/gitlab-runner/log"
+
+- _ "gitlab.com/gitlab-org/gitlab-runner/cache/gcs"
+- _ "gitlab.com/gitlab-org/gitlab-runner/cache/s3"
+ _ "gitlab.com/gitlab-org/gitlab-runner/commands"
+ _ "gitlab.com/gitlab-org/gitlab-runner/commands/helpers"
+ _ "gitlab.com/gitlab-org/gitlab-runner/executors/custom"
+- _ "gitlab.com/gitlab-org/gitlab-runner/executors/docker"
+- _ "gitlab.com/gitlab-org/gitlab-runner/executors/docker/machine"
+- _ "gitlab.com/gitlab-org/gitlab-runner/executors/kubernetes"
+- _ "gitlab.com/gitlab-org/gitlab-runner/executors/parallels"
+ _ "gitlab.com/gitlab-org/gitlab-runner/executors/shell"
+ _ "gitlab.com/gitlab-org/gitlab-runner/executors/ssh"
+- _ "gitlab.com/gitlab-org/gitlab-runner/executors/virtualbox"
+ _ "gitlab.com/gitlab-org/gitlab-runner/shells"
+ )
+
diff --git a/user/gitlab-runner/gccgo.patch b/user/gitlab-runner/gccgo.patch
new file mode 100644
index 000000000..217fb8331
--- /dev/null
+++ b/user/gitlab-runner/gccgo.patch
@@ -0,0 +1,67 @@
+* does not support -X ldflag: https://github.com/golang/go/issues/25183
+* does not support -cover testflag
+* needs CGO to be enabled to build syscall module
+* wants -gccgoflags, not -ldflags
+* don't test stuff we've disabled
+
+--- gitlab-runner-v12.1.0/Makefile 2019-07-19 12:13:32.000000000 +0000
++++ gitlab-runner-v12.1.0/Makefile 2020-04-26 23:58:20.823352305 +0000
+@@ -4,7 +4,6 @@ export VERSION := $(shell ./ci/version)
+ REVISION := $(shell git rev-parse --short=8 HEAD || echo unknown)
+ BRANCH := $(shell git show-ref | grep "$(REVISION)" | grep -v HEAD | awk '{print $$2}' | sed 's|refs/remotes/origin/||' | sed 's|refs/heads/||' | sort | head -n 1)
+ BUILT := $(shell date -u +%Y-%m-%dT%H:%M:%S%z)
+-export TESTFLAGS ?= -cover
+
+ LATEST_STABLE_TAG := $(shell git -c versionsort.prereleaseSuffix="-rc" -c versionsort.prereleaseSuffix="-RC" tag -l "v*.*.*" --sort=-v:refname | awk '!/rc/' | head -n 1)
+ export IS_LATEST :=
+@@ -45,14 +44,11 @@ export PATH := $(GOPATH_BIN):$(PATH)
+
+ # Packages in vendor/ are included in ./...
+ # https://github.com/golang/go/issues/11659
+-export OUR_PACKAGES ?= $(subst _$(BUILD_DIR),$(PKG),$(shell go list ./... | grep -v '/vendor/'))
++export OUR_PACKAGES ?= $(subst _$(BUILD_DIR),$(PKG),$(shell go list ./... | grep -ve '/vendor/' -e '/cache/gcs' -e '/cache/s3' -e '/docker' -e '/kubernetes' -e '/parallels' -e '/virtualbox'))
+
+-GO_LDFLAGS ?= -X $(COMMON_PACKAGE_NAMESPACE).NAME=$(PACKAGE_NAME) -X $(COMMON_PACKAGE_NAMESPACE).VERSION=$(VERSION) \
+- -X $(COMMON_PACKAGE_NAMESPACE).REVISION=$(REVISION) -X $(COMMON_PACKAGE_NAMESPACE).BUILT=$(BUILT) \
+- -X $(COMMON_PACKAGE_NAMESPACE).BRANCH=$(BRANCH) \
+- -s -w
++GO_LDFLAGS ?= -s -w
+ GO_FILES ?= $(shell find . -name '*.go' | grep -v './.gopath/')
+-export CGO_ENABLED ?= 0
++export CGO_ENABLED ?= 1
+
+
+ # Development Tools
+@@ -114,7 +110,7 @@ build: $(GOX)
+ build_simple: $(GOPATH_SETUP)
+ # Building $(NAME) in version $(VERSION) for current platform
+ go build \
+- -ldflags "$(GO_LDFLAGS)" \
++ -gccgoflags "$(GO_LDFLAGS)" \
+ -o "out/binaries/$(NAME)" \
+ $(PKG)
+
+@@ -123,7 +119,7 @@ build_current: helper-docker build_simpl
+ check_race_conditions:
+ @./scripts/check_race_conditions $(OUR_PACKAGES)
+
+-test: $(PKG_BUILD_DIR) helper-docker
++test: $(PKG_BUILD_DIR)
+ go test $(OUR_PACKAGES) $(TESTFLAGS)
+
+ parallel_test_prepare: $(GOPATH_SETUP)
+--- gitlab-runner-v12.1.0/common/version.go 2019-07-19 12:13:32.000000000 +0000
++++ gitlab-runner-v12.1.0/common/version.go 2020-04-27 00:57:04.923408027 +0000
+@@ -9,9 +9,9 @@ import (
+ )
+
+ var NAME = "gitlab-runner"
+-var VERSION = "development version"
+-var REVISION = "HEAD"
+-var BRANCH = "HEAD"
++var VERSION = "12.1.0"
++var REVISION = "v12.1.0"
++var BRANCH = "12-1-stable"
+ var BUILT = "unknown"
+
+ var AppVersion AppVersionInfo
diff --git a/user/gitlab-runner/gitlab-runner.confd b/user/gitlab-runner/gitlab-runner.confd
new file mode 100644
index 000000000..05a3ac1bb
--- /dev/null
+++ b/user/gitlab-runner/gitlab-runner.confd
@@ -0,0 +1,17 @@
+#export CONFIG_FILE="/etc/gitlab-runner/config.toml"
+#command_args="--working-directory /var/lib/gitlab-runner"
+#logfile="/var/log/gitlab-runner.log"
+
+# Time to wait (in seconds) when gracefully stopping before forcefully
+# stopping.
+#timeout="300"
+
+# Time to wait (in seconds) when forcefully stopping the server before
+# giving up. The runner can be a little slower than the OpenRC default
+# of 5 seconds to stop when jobs are running.
+#retry="60"
+
+# Run user service (default):
+#command_user="gitlab-runner:gitlab-runner"
+# Run system service:
+#command_user="root:root"
diff --git a/user/gitlab-runner/gitlab-runner.initd b/user/gitlab-runner/gitlab-runner.initd
new file mode 100644
index 000000000..1fc47410c
--- /dev/null
+++ b/user/gitlab-runner/gitlab-runner.initd
@@ -0,0 +1,45 @@
+#!/sbin/openrc-run
+
+: "${CONFIG_FILE:=/etc/gitlab-runner/config.toml}"
+: "${logfile:=/var/log/gitlab-runner.log}"
+: "${timeout:=300}"
+: "${retry:=60}"
+: "${command_user:=gitlab-runner:gitlab-runner}"
+export CONFIG_FILE
+
+command="/usr/bin/gitlab-runner"
+command_args="run --service ${RC_SVCNAME} ${command_args}"
+command_background="true"
+start_stop_daemon_args="--stdout ${logfile} --stderr ${logfile}"
+pidfile="/run/${RC_SVCNAME}.pid"
+
+extra_started_commands="reload gracefulstop"
+description_reload="Reload configuration"
+description_gracefulstop="Finish current jobs, then stop"
+
+start_pre() {
+ checkpath -f -m 640 -o "${command_user}" "${logfile}"
+}
+
+reload() {
+ ebegin "Reloading ${RC_SVCNAME} configuration"
+ start-stop-daemon --quiet --signal HUP --pidfile "${pidfile}"
+ eend $?
+}
+
+gracefulstop() {
+ ebegin "Gracefully stopping ${RC_SVCNAME}"
+ mark_service_stopping "${RC_SERVICE}"
+ start-stop-daemon --quiet --progress --stop --pidfile "${pidfile}" \
+ --signal QUIT --retry "${timeout}"
+ if eend $?; then
+ mark_service_stopped "${RC_SVCNAME}"
+ else
+ eerror "${RC_SVCNAME} timed out, forcefully stopping"
+ if stop; then
+ mark_service_stopped "${RC_SVCNAME}"
+ else
+ return 1
+ fi
+ fi
+}
diff --git a/user/gitlab-runner/gitlab-runner.pre-install b/user/gitlab-runner/gitlab-runner.pre-install
new file mode 100644
index 000000000..9ef046f29
--- /dev/null
+++ b/user/gitlab-runner/gitlab-runner.pre-install
@@ -0,0 +1,7 @@
+#!/bin/sh
+
+groupadd -r gitlab-runner 2>/dev/null
+useradd -c gitlab-runner -s /sbin/nologin -g gitlab-runner \
+ -d /var/lib/gitlab-runner -r gitlab-runner 2>/dev/null
+
+exit 0
diff --git a/user/gitlab-runner/posix-shell-escape.patch b/user/gitlab-runner/posix-shell-escape.patch
new file mode 100644
index 000000000..b454141ed
--- /dev/null
+++ b/user/gitlab-runner/posix-shell-escape.patch
@@ -0,0 +1,139 @@
+--- gitlab-runner-v12.1.0/helpers/shell_escape.go 2019-07-19 12:13:32.000000000 +0000
++++ gitlab-runner-v12.1.0/helpers/shell_escape.go 2020-04-26 23:12:59.813309281 +0000
+@@ -4,7 +4,6 @@ package helpers
+
+ import (
+ "bytes"
+- "encoding/hex"
+ "strings"
+ )
+
+@@ -13,35 +12,10 @@ import (
+ */
+
+ const (
+- ACK = 6
+- TAB = 9
+- LF = 10
+- CR = 13
+- US = 31
+- SPACE = 32
+- AMPERSTAND = 38
+ SINGLE_QUOTE = 39
+- PLUS = 43
+- NINE = 57
+- QUESTION = 63
+- LOWERCASE_Z = 90
+- OPEN_BRACKET = 91
+ BACKSLASH = 92
+- UNDERSCORE = 95
+- CLOSE_BRACKET = 93
+- BACKTICK = 96
+- TILDA = 126
+- DEL = 127
+ )
+
+-// ShellEscape is taken from https://github.com/solidsnack/shell-escape/blob/master/Text/ShellEscape/Bash.hs
+-/*
+-A Bash escaped string. The strings are wrapped in @$\'...\'@ if any
+-bytes within them must be escaped; otherwise, they are left as is.
+-Newlines and other control characters are represented as ANSI escape
+-sequences. High bytes are represented as hex codes. Thus Bash escaped
+-strings will always fit on one line and never contain non-ASCII bytes.
+-*/
+ func ShellEscape(str string) string {
+ if str == "" {
+ return "''"
+@@ -50,85 +24,20 @@ func ShellEscape(str string) string {
+ out := bytes.NewBuffer(make([]byte, 0, len(str)*2))
+ i := 0
+ l := len(in)
+- escape := false
+-
+- hex := func(char byte) {
+- escape = true
+-
+- data := []byte{BACKSLASH, 'x', 0, 0}
+- hex.Encode(data[2:], []byte{char})
+- out.Write(data)
+- }
+-
+- backslash := func(char byte) {
+- escape = true
+- out.Write([]byte{BACKSLASH, char})
+- }
+-
+- escaped := func(str string) {
+- escape = true
+- out.WriteString(str)
+- }
+-
+- quoted := func(char byte) {
+- escape = true
+- out.WriteByte(char)
+- }
+-
+- literal := func(char byte) {
+- out.WriteByte(char)
+- }
+
++ out.WriteByte(SINGLE_QUOTE)
+ for i < l {
+ char := in[i]
+- switch {
+- case char == TAB:
+- escaped(`\t`)
+- case char == LF:
+- escaped(`\n`)
+- case char == CR:
+- escaped(`\r`)
+- case char <= US:
+- hex(char)
+- case char <= AMPERSTAND:
+- quoted(char)
+- case char == SINGLE_QUOTE:
+- backslash(char)
+- case char <= PLUS:
+- quoted(char)
+- case char <= NINE:
+- literal(char)
+- case char <= QUESTION:
+- quoted(char)
+- case char <= LOWERCASE_Z:
+- literal(char)
+- case char == OPEN_BRACKET:
+- quoted(char)
+- case char == BACKSLASH:
+- backslash(char)
+- case char <= CLOSE_BRACKET:
+- quoted(char)
+- case char == UNDERSCORE:
+- literal(char)
+- case char <= BACKTICK:
+- quoted(char)
+- case char <= TILDA:
+- quoted(char)
+- case char == DEL:
+- hex(char)
+- default:
+- hex(char)
++ if (char == SINGLE_QUOTE) {
++ out.Write([]byte{SINGLE_QUOTE, BACKSLASH, SINGLE_QUOTE, SINGLE_QUOTE})
++ } else {
++ out.WriteByte(char)
+ }
+ i++
+ }
++ out.WriteByte(SINGLE_QUOTE)
+
+- outStr := out.String()
+-
+- if escape {
+- outStr = "$'" + outStr + "'"
+- }
+-
+- return outStr
++ return out.String()
+ }
+
+ func ToBackslash(path string) string {
diff --git a/user/gitlab-runner/posix-shell.patch b/user/gitlab-runner/posix-shell.patch
new file mode 100644
index 000000000..6169c3ecc
--- /dev/null
+++ b/user/gitlab-runner/posix-shell.patch
@@ -0,0 +1,30 @@
+--- gitlab-runner-v12.1.0/shells/bash.go 2019-07-19 12:13:32.000000000 +0000
++++ gitlab-runner-v12.1.0/shells/bash.go 2020-04-26 23:07:57.303304498 +0000
+@@ -102,12 +102,12 @@ func (b *BashWriter) Variable(variable c
+ }
+
+ func (b *BashWriter) IfDirectory(path string) {
+- b.Line(fmt.Sprintf("if [[ -d %q ]]; then", path))
++ b.Line(fmt.Sprintf("if [ -d %q ]; then", path))
+ b.Indent()
+ }
+
+ func (b *BashWriter) IfFile(path string) {
+- b.Line(fmt.Sprintf("if [[ -e %q ]]; then", path))
++ b.Line(fmt.Sprintf("if [ -e %q ]; then", path))
+ b.Indent()
+ }
+
+@@ -200,9 +200,10 @@ func (b *BashWriter) Finish(trace bool)
+ io.WriteString(w, "set -o xtrace\n")
+ }
+
+- io.WriteString(w, "set -eo pipefail\n")
++ io.WriteString(w, "set -e\n")
+ io.WriteString(w, "set +o noclobber\n")
+- io.WriteString(w, ": | eval "+helpers.ShellEscape(b.String())+"\n")
++ io.WriteString(w, "(\nexec </dev/null\n")
++ io.WriteString(w, b.String() + "\n)\n")
+ io.WriteString(w, "exit 0\n")
+ w.Flush()
+ return buffer.String()
diff --git a/user/gitlab-runner/tests.patch b/user/gitlab-runner/tests.patch
new file mode 100644
index 000000000..1aff6c653
--- /dev/null
+++ b/user/gitlab-runner/tests.patch
@@ -0,0 +1,63 @@
+--- gitlab-runner-v12.1.0/shells/bash_test.go 2019-07-19 12:13:32.000000000 +0000
++++ gitlab-runner-v12.1.0/shells/bash_test.go 2020-04-27 00:07:06.763360621 +0000
+@@ -10,12 +10,12 @@ func TestBash_CommandShellEscapes(t *tes
+ writer := &BashWriter{}
+ writer.Command("foo", "x&(y)")
+
+- assert.Equal(t, `$'foo' "x&(y)"`+"\n", writer.String())
++ assert.Equal(t, `'foo' "x&(y)"`+"\n", writer.String())
+ }
+
+ func TestBash_IfCmdShellEscapes(t *testing.T) {
+ writer := &BashWriter{}
+ writer.IfCmd("foo", "x&(y)")
+
+- assert.Equal(t, `if $'foo' "x&(y)" >/dev/null 2>/dev/null; then`+"\n", writer.String())
++ assert.Equal(t, `if 'foo' "x&(y)" >/dev/null 2>/dev/null; then`+"\n", writer.String())
+ }
+--- gitlab-runner-v12.1.0/executors/shell/executor_shell_test.go 2019-07-19 12:13:32.000000000 +0000
++++ gitlab-runner-v12.1.0/executors/shell/executor_shell_test.go 2020-04-27 00:01:12.813355024 +0000
+@@ -166,7 +166,7 @@ func TestBuildAbort(t *testing.T) {
+ defer abortTimer.Stop()
+
+ err = runBuild(t, build)
+- assert.EqualError(t, err, "aborted: interrupt")
++ assert.EqualError(t, err, "aborted: Interrupt")
+ })
+ }
+
+--- gitlab-runner-v12.1.0/executors/custom/executor_integration_test.go 2019-07-19 12:13:32.000000000 +0000
++++ gitlab-runner-v12.1.0/executors/custom/executor_integration_test.go 2020-04-27 00:00:42.493354545 +0000
+@@ -234,7 +234,7 @@ func TestBuildAbort(t *testing.T) {
+ defer abortTimer.Stop()
+
+ err = runBuild(t, build)
+- assert.EqualError(t, err, "aborted: interrupt")
++ assert.EqualError(t, err, "aborted: Interrupt")
+ })
+ }
+
+--- gitlab-runner-v12.1.0/helpers/shell_escape_test.go 2019-07-19 12:13:32.000000000 +0000
++++ gitlab-runner-v12.1.0/helpers/shell_escape_test.go 2020-04-27 00:02:36.213356343 +0000
+@@ -24,8 +24,8 @@ func TestShellEscape(t *testing.T) {
+ in string
+ out string
+ }{
+- {"standard string", "$'standard string'"},
+- {"+\t\n\r&", "$'+\\t\\n\\r&'"},
++ {"standard string", "'standard string'"},
++ {"+\t\n\r&", "'+\t\n\r&'"},
+ {"", "''"},
+ }
+
+--- gitlab-runner-v12.1.0/common/build_test.go 2019-07-19 12:13:32.000000000 +0000
++++ gitlab-runner-v12.1.0/common/build_test.go 2020-04-27 00:23:35.173376249 +0000
+@@ -1133,7 +1133,7 @@ func TestWaitForTerminal(t *testing.T) {
+ },
+ jobTimeout: 3600,
+ waitForTerminalTimeout: time.Hour,
+- expectedErr: "terminal disconnected by system signal: interrupt",
++ expectedErr: "terminal disconnected by system signal: Interrupt",
+ },
+ {
+ name: "Terminal Disconnect",