From 96cf907c5e1f4761ef6d91bb8e22487747a77f6b Mon Sep 17 00:00:00 2001 From: Ryan Date: Fri, 19 Nov 2021 18:36:50 +0100 Subject: [PATCH] Fix regex for GITHUB_ENV parsing (#893) * fix: correct env pattern regex GitHub Actions allows for envvars to contain Signed-off-by: hackercat * format: format and typo fix Signed-off-by: hackercat Co-authored-by: mergify[bot] <37929162+mergify[bot]@users.noreply.github.com> --- pkg/container/docker_run.go | 5 ++++- pkg/runner/testdata/env-and-path/push.yaml | 15 +++++++++++---- 2 files changed, 15 insertions(+), 5 deletions(-) diff --git a/pkg/container/docker_run.go b/pkg/container/docker_run.go index f3677c45..bf6d6f37 100644 --- a/pkg/container/docker_run.go +++ b/pkg/container/docker_run.go @@ -369,7 +369,10 @@ var singleLineEnvPattern, mulitiLineEnvPattern *regexp.Regexp func (cr *containerReference) extractEnv(srcPath string, env *map[string]string) common.Executor { if singleLineEnvPattern == nil { - singleLineEnvPattern = regexp.MustCompile("^([^=]+)=([^=]+)$") + // Single line pattern matches: + // SOME_VAR=data=moredata + // SOME_VAR=datamoredata + singleLineEnvPattern = regexp.MustCompile(`^([^=]*)\=(.*)$`) mulitiLineEnvPattern = regexp.MustCompile(`^([^<]+)<<(\w+)$`) } diff --git a/pkg/runner/testdata/env-and-path/push.yaml b/pkg/runner/testdata/env-and-path/push.yaml index e1928cba..8773afc7 100644 --- a/pkg/runner/testdata/env-and-path/push.yaml +++ b/pkg/runner/testdata/env-and-path/push.yaml @@ -43,7 +43,16 @@ jobs: - name: "Check single line env" run: | if [[ "${KEY}" != "value" ]]; then - echo "${KEY} dosen't == 'value'" + echo "${KEY} doesn't == 'value'" + exit 1 + fi + - name: "Write single line env with more than one 'equals' signs to $GITHUB_ENV" + run: | + echo "KEY=value=anothervalue" >> $GITHUB_ENV + - name: "Check single line env" + run: | + if [[ "${KEY}" != "value=anothervalue" ]]; then + echo "${KEY} doesn't == 'value=anothervalue'" exit 1 fi - name: "Write multiline env to $GITHUB_ENV" @@ -54,8 +63,6 @@ jobs: - name: "Check multiline line env" run: | if [[ "${KEY2}" != "value2" ]]; then - echo "${KEY2} dosen't == 'value'" + echo "${KEY2} doesn't == 'value'" exit 1 fi - -