mirror of
https://github.com/woodpecker-ci/woodpecker.git
synced 2026-09-05 20:07:25 +00:00
Fix running multiple cmdlets on windows (#6968)
This commit is contained in:
@@ -23,7 +23,7 @@ import (
|
||||
|
||||
const (
|
||||
// UTF-16LE encoded script, base64 encoded for powershell's -encodedcommand.
|
||||
windowsScriptBase64 = "CgAkAEUAcgByAG8AcgBBAGMAdABpAG8AbgBQAHIAZQBmAGUAcgBlAG4AYwBlACAAPQAgACcAUwB0AG8AcAAnADsACgBpAGYAIAAoAC0AbgBvAHQAIAAoAFQAZQBzAHQALQBQAGEAdABoACAAIgAvAHcAbwBvAGQAcABlAGMAawBlAHIALwBzAG8AbQBlACIAKQApACAAewAgAE4AZQB3AC0ASQB0AGUAbQAgAC0AUABhAHQAaAAgACIALwB3AG8AbwBkAHAAZQBjAGsAZQByAC8AcwBvAG0AZQAiACAALQBJAHQAZQBtAFQAeQBwAGUAIABEAGkAcgBlAGMAdABvAHIAeQAgAC0ARgBvAHIAYwBlACAAfQA7AAoAaQBmACAAKAAtAG4AbwB0ACAAWwBFAG4AdgBpAHIAbwBuAG0AZQBuAHQAXQA6ADoARwBlAHQARQBuAHYAaQByAG8AbgBtAGUAbgB0AFYAYQByAGkAYQBiAGwAZQAoACcASABPAE0ARQAnACkAKQAgAHsAIABbAEUAbgB2AGkAcgBvAG4AbQBlAG4AdABdADoAOgBTAGUAdABFAG4AdgBpAHIAbwBuAG0AZQBuAHQAVgBhAHIAaQBhAGIAbABlACgAJwBIAE8ATQBFACcALAAgACcAYwA6AFwAcgBvAG8AdAAnACkAIAB9ADsACgBpAGYAIAAoAC0AbgBvAHQAIAAoAFQAZQBzAHQALQBQAGEAdABoACAAIgAkAGUAbgB2ADoASABPAE0ARQAiACkAKQAgAHsAIABOAGUAdwAtAEkAdABlAG0AIAAtAFAAYQB0AGgAIAAiACQAZQBuAHYAOgBIAE8ATQBFACIAIAAtAEkAdABlAG0AVAB5AHAAZQAgAEQAaQByAGUAYwB0AG8AcgB5ACAALQBGAG8AcgBjAGUAIAB9ADsACgBpAGYAIAAoACQARQBuAHYAOgBDAEkAXwBOAEUAVABSAEMAXwBNAEEAQwBIAEkATgBFACkAIAB7AAoAJABuAGUAdAByAGMAPQBbAHMAdAByAGkAbgBnAF0AOgA6AEYAbwByAG0AYQB0ACgAIgB7ADAAfQBcAF8AbgBlAHQAcgBjACIALAAkAEUAbgB2ADoASABPAE0ARQApADsACgAiAG0AYQBjAGgAaQBuAGUAIAAkAEUAbgB2ADoAQwBJAF8ATgBFAFQAUgBDAF8ATQBBAEMASABJAE4ARQAiACAAPgA+ACAAJABuAGUAdAByAGMAOwAKACIAbABvAGcAaQBuACAAJABFAG4AdgA6AEMASQBfAE4ARQBUAFIAQwBfAFUAUwBFAFIATgBBAE0ARQAiACAAPgA+ACAAJABuAGUAdAByAGMAOwAKACIAcABhAHMAcwB3AG8AcgBkACAAJABFAG4AdgA6AEMASQBfAE4ARQBUAFIAQwBfAFAAQQBTAFMAVwBPAFIARAAiACAAPgA+ACAAJABuAGUAdAByAGMAOwAKAH0AOwAKAFsARQBuAHYAaQByAG8AbgBtAGUAbgB0AF0AOgA6AFMAZQB0AEUAbgB2AGkAcgBvAG4AbQBlAG4AdABWAGEAcgBpAGEAYgBsAGUAKAAiAEMASQBfAE4ARQBUAFIAQwBfAFAAQQBTAFMAVwBPAFIARAAiACwAJABuAHUAbABsACkAOwAKAFsARQBuAHYAaQByAG8AbgBtAGUAbgB0AF0AOgA6AFMAZQB0AEUAbgB2AGkAcgBvAG4AbQBlAG4AdABWAGEAcgBpAGEAYgBsAGUAKAAiAEMASQBfAFMAQwBSAEkAUABUACIALAAkAG4AdQBsAGwAKQA7AAoAYwBkACAAIgAvAHcAbwBvAGQAcABlAGMAawBlAHIALwBzAG8AbQBlACIAOwAKAAoAVwByAGkAdABlAC0ATwB1AHQAcAB1AHQAIAAoACcAKwAgACIAZQBjAGgAbwAgAGgAZQBsAGwAbwAgAHcAbwByAGwAZAAiACcAKQA7AAoAJgAgAGUAYwBoAG8AIABoAGUAbABsAG8AIAB3AG8AcgBsAGQAOwAgAGkAZgAgACgAJABMAEEAUwBUAEUAWABJAFQAQwBPAEQARQAgAC0AbgBlACAAMAApACAAewBlAHgAaQB0ACAAJABMAEEAUwBUAEUAWABJAFQAQwBPAEQARQB9AAoA"
|
||||
windowsScriptBase64 = "CgAkAEwAQQBTAFQARQBYAEkAVABDAE8ARABFACAAPQAgADAACgAkAEUAcgByAG8AcgBBAGMAdABpAG8AbgBQAHIAZQBmAGUAcgBlAG4AYwBlACAAPQAgACcAUwB0AG8AcAAnADsACgBpAGYAIAAoAC0AbgBvAHQAIAAoAFQAZQBzAHQALQBQAGEAdABoACAAIgAvAHcAbwBvAGQAcABlAGMAawBlAHIALwBzAG8AbQBlACIAKQApACAAewAgAE4AZQB3AC0ASQB0AGUAbQAgAC0AUABhAHQAaAAgACIALwB3AG8AbwBkAHAAZQBjAGsAZQByAC8AcwBvAG0AZQAiACAALQBJAHQAZQBtAFQAeQBwAGUAIABEAGkAcgBlAGMAdABvAHIAeQAgAC0ARgBvAHIAYwBlACAAfQA7AAoAaQBmACAAKAAtAG4AbwB0ACAAWwBFAG4AdgBpAHIAbwBuAG0AZQBuAHQAXQA6ADoARwBlAHQARQBuAHYAaQByAG8AbgBtAGUAbgB0AFYAYQByAGkAYQBiAGwAZQAoACcASABPAE0ARQAnACkAKQAgAHsAIABbAEUAbgB2AGkAcgBvAG4AbQBlAG4AdABdADoAOgBTAGUAdABFAG4AdgBpAHIAbwBuAG0AZQBuAHQAVgBhAHIAaQBhAGIAbABlACgAJwBIAE8ATQBFACcALAAgACcAYwA6AFwAcgBvAG8AdAAnACkAIAB9ADsACgBpAGYAIAAoAC0AbgBvAHQAIAAoAFQAZQBzAHQALQBQAGEAdABoACAAIgAkAGUAbgB2ADoASABPAE0ARQAiACkAKQAgAHsAIABOAGUAdwAtAEkAdABlAG0AIAAtAFAAYQB0AGgAIAAiACQAZQBuAHYAOgBIAE8ATQBFACIAIAAtAEkAdABlAG0AVAB5AHAAZQAgAEQAaQByAGUAYwB0AG8AcgB5ACAALQBGAG8AcgBjAGUAIAB9ADsACgBpAGYAIAAoACQARQBuAHYAOgBDAEkAXwBOAEUAVABSAEMAXwBNAEEAQwBIAEkATgBFACkAIAB7AAoAJABuAGUAdAByAGMAPQBbAHMAdAByAGkAbgBnAF0AOgA6AEYAbwByAG0AYQB0ACgAIgB7ADAAfQBcAF8AbgBlAHQAcgBjACIALAAkAEUAbgB2ADoASABPAE0ARQApADsACgAiAG0AYQBjAGgAaQBuAGUAIAAkAEUAbgB2ADoAQwBJAF8ATgBFAFQAUgBDAF8ATQBBAEMASABJAE4ARQAiACAAPgA+ACAAJABuAGUAdAByAGMAOwAKACIAbABvAGcAaQBuACAAJABFAG4AdgA6AEMASQBfAE4ARQBUAFIAQwBfAFUAUwBFAFIATgBBAE0ARQAiACAAPgA+ACAAJABuAGUAdAByAGMAOwAKACIAcABhAHMAcwB3AG8AcgBkACAAJABFAG4AdgA6AEMASQBfAE4ARQBUAFIAQwBfAFAAQQBTAFMAVwBPAFIARAAiACAAPgA+ACAAJABuAGUAdAByAGMAOwAKAH0AOwAKAFsARQBuAHYAaQByAG8AbgBtAGUAbgB0AF0AOgA6AFMAZQB0AEUAbgB2AGkAcgBvAG4AbQBlAG4AdABWAGEAcgBpAGEAYgBsAGUAKAAiAEMASQBfAE4ARQBUAFIAQwBfAFAAQQBTAFMAVwBPAFIARAAiACwAJABuAHUAbABsACkAOwAKAFsARQBuAHYAaQByAG8AbgBtAGUAbgB0AF0AOgA6AFMAZQB0AEUAbgB2AGkAcgBvAG4AbQBlAG4AdABWAGEAcgBpAGEAYgBsAGUAKAAiAEMASQBfAFMAQwBSAEkAUABUACIALAAkAG4AdQBsAGwAKQA7AAoAYwBkACAAIgAvAHcAbwBvAGQAcABlAGMAawBlAHIALwBzAG8AbQBlACIAOwAKAAoAVwByAGkAdABlAC0ATwB1AHQAcAB1AHQAIAAoACcAKwAgACIAZQBjAGgAbwAgAGgAZQBsAGwAbwAgAHcAbwByAGwAZAAiACcAKQA7AAoAJgAgAGUAYwBoAG8AIABoAGUAbABsAG8AIAB3AG8AcgBsAGQAOwAgAGkAZgAgACgAJABMAEEAUwBUAEUAWABJAFQAQwBPAEQARQAgAC0AbgBlACAAMAApACAAewBlAHgAaQB0ACAAJABMAEEAUwBUAEUAWABJAFQAQwBPAEQARQB9AAoA"
|
||||
posixScriptBase64 = "CmlmIFsgLW4gIiRDSV9ORVRSQ19NQUNISU5FIiBdOyB0aGVuCmNhdCA8PEVPRiA+ICRIT01FLy5uZXRyYwptYWNoaW5lICRDSV9ORVRSQ19NQUNISU5FCmxvZ2luICRDSV9ORVRSQ19VU0VSTkFNRQpwYXNzd29yZCAkQ0lfTkVUUkNfUEFTU1dPUkQKRU9GCmNobW9kIDA2MDAgJEhPTUUvLm5ldHJjCmZpCnVuc2V0IENJX05FVFJDX1VTRVJOQU1FCnVuc2V0IENJX05FVFJDX1BBU1NXT1JECnVuc2V0IENJX1NDUklQVApta2RpciAtcCAiL3dvb2RwZWNrZXIvc29tZSIKY2QgIi93b29kcGVja2VyL3NvbWUiCgplY2hvICsgJ2VjaG8gaGVsbG8gd29ybGQnCmVjaG8gaGVsbG8gd29ybGQK"
|
||||
)
|
||||
|
||||
|
||||
@@ -46,6 +46,7 @@ func generateScriptWindows(commands []string, workDir string) string {
|
||||
}
|
||||
|
||||
const setupScriptWinProto = `
|
||||
$LASTEXITCODE = 0
|
||||
$ErrorActionPreference = 'Stop';
|
||||
if (-not (Test-Path "{{.WorkDir}}")) { New-Item -Path "{{.WorkDir}}" -ItemType Directory -Force };
|
||||
if (-not [Environment]::GetEnvironmentVariable('HOME')) { [Environment]::SetEnvironmentVariable('HOME', 'c:\root') };
|
||||
|
||||
@@ -29,6 +29,7 @@ func TestGenerateScriptWin(t *testing.T) {
|
||||
{
|
||||
from: []string{"echo %PATH%", "go build", "go test"},
|
||||
want: `
|
||||
$LASTEXITCODE = 0
|
||||
$ErrorActionPreference = 'Stop';
|
||||
if (-not (Test-Path "/woodpecker/some")) { New-Item -Path "/woodpecker/some" -ItemType Directory -Force };
|
||||
if (-not [Environment]::GetEnvironmentVariable('HOME')) { [Environment]::SetEnvironmentVariable('HOME', 'c:\root') };
|
||||
|
||||
@@ -279,7 +279,7 @@ func TestToConfigFull(t *testing.T) {
|
||||
}
|
||||
|
||||
// windowsCIScriptBase64 is the UTF-16LE encoded script, base64 encoded for powershell's -encodedcommand.
|
||||
const windowsCIScriptBase64 = "CgAkAEUAcgByAG8AcgBBAGMAdABpAG8AbgBQAHIAZQBmAGUAcgBlAG4AYwBlACAAPQAgACcAUwB0AG8AcAAnADsACgBpAGYAIAAoAC0AbgBvAHQAIAAoAFQAZQBzAHQALQBQAGEAdABoACAAIgBDADoALwBzAHIAYwAvAGEAYgBjACIAKQApACAAewAgAE4AZQB3AC0ASQB0AGUAbQAgAC0AUABhAHQAaAAgACIAQwA6AC8AcwByAGMALwBhAGIAYwAiACAALQBJAHQAZQBtAFQAeQBwAGUAIABEAGkAcgBlAGMAdABvAHIAeQAgAC0ARgBvAHIAYwBlACAAfQA7AAoAaQBmACAAKAAtAG4AbwB0ACAAWwBFAG4AdgBpAHIAbwBuAG0AZQBuAHQAXQA6ADoARwBlAHQARQBuAHYAaQByAG8AbgBtAGUAbgB0AFYAYQByAGkAYQBiAGwAZQAoACcASABPAE0ARQAnACkAKQAgAHsAIABbAEUAbgB2AGkAcgBvAG4AbQBlAG4AdABdADoAOgBTAGUAdABFAG4AdgBpAHIAbwBuAG0AZQBuAHQAVgBhAHIAaQBhAGIAbABlACgAJwBIAE8ATQBFACcALAAgACcAYwA6AFwAcgBvAG8AdAAnACkAIAB9ADsACgBpAGYAIAAoAC0AbgBvAHQAIAAoAFQAZQBzAHQALQBQAGEAdABoACAAIgAkAGUAbgB2ADoASABPAE0ARQAiACkAKQAgAHsAIABOAGUAdwAtAEkAdABlAG0AIAAtAFAAYQB0AGgAIAAiACQAZQBuAHYAOgBIAE8ATQBFACIAIAAtAEkAdABlAG0AVAB5AHAAZQAgAEQAaQByAGUAYwB0AG8AcgB5ACAALQBGAG8AcgBjAGUAIAB9ADsACgBpAGYAIAAoACQARQBuAHYAOgBDAEkAXwBOAEUAVABSAEMAXwBNAEEAQwBIAEkATgBFACkAIAB7AAoAJABuAGUAdAByAGMAPQBbAHMAdAByAGkAbgBnAF0AOgA6AEYAbwByAG0AYQB0ACgAIgB7ADAAfQBcAF8AbgBlAHQAcgBjACIALAAkAEUAbgB2ADoASABPAE0ARQApADsACgAiAG0AYQBjAGgAaQBuAGUAIAAkAEUAbgB2ADoAQwBJAF8ATgBFAFQAUgBDAF8ATQBBAEMASABJAE4ARQAiACAAPgA+ACAAJABuAGUAdAByAGMAOwAKACIAbABvAGcAaQBuACAAJABFAG4AdgA6AEMASQBfAE4ARQBUAFIAQwBfAFUAUwBFAFIATgBBAE0ARQAiACAAPgA+ACAAJABuAGUAdAByAGMAOwAKACIAcABhAHMAcwB3AG8AcgBkACAAJABFAG4AdgA6AEMASQBfAE4ARQBUAFIAQwBfAFAAQQBTAFMAVwBPAFIARAAiACAAPgA+ACAAJABuAGUAdAByAGMAOwAKAH0AOwAKAFsARQBuAHYAaQByAG8AbgBtAGUAbgB0AF0AOgA6AFMAZQB0AEUAbgB2AGkAcgBvAG4AbQBlAG4AdABWAGEAcgBpAGEAYgBsAGUAKAAiAEMASQBfAE4ARQBUAFIAQwBfAFAAQQBTAFMAVwBPAFIARAAiACwAJABuAHUAbABsACkAOwAKAFsARQBuAHYAaQByAG8AbgBtAGUAbgB0AF0AOgA6AFMAZQB0AEUAbgB2AGkAcgBvAG4AbQBlAG4AdABWAGEAcgBpAGEAYgBsAGUAKAAiAEMASQBfAFMAQwBSAEkAUABUACIALAAkAG4AdQBsAGwAKQA7AAoAYwBkACAAIgBDADoALwBzAHIAYwAvAGEAYgBjACIAOwAKAAoAVwByAGkAdABlAC0ATwB1AHQAcAB1AHQAIAAoACcAKwAgACIAZwBvACAAdABlAHMAdAAiACcAKQA7AAoAJgAgAGcAbwAgAHQAZQBzAHQAOwAgAGkAZgAgACgAJABMAEEAUwBUAEUAWABJAFQAQwBPAEQARQAgAC0AbgBlACAAMAApACAAewBlAHgAaQB0ACAAJABMAEEAUwBUAEUAWABJAFQAQwBPAEQARQB9AAoACgBXAHIAaQB0AGUALQBPAHUAdABwAHUAdAAgACgAJwArACAAIgBnAG8AIAB2AGUAdAAgAC4ALwAuAC4ALgAiACcAKQA7AAoAJgAgAGcAbwAgAHYAZQB0ACAALgAvAC4ALgAuADsAIABpAGYAIAAoACQATABBAFMAVABFAFgASQBUAEMATwBEAEUAIAAtAG4AZQAgADAAKQAgAHsAZQB4AGkAdAAgACQATABBAFMAVABFAFgASQBUAEMATwBEAEUAfQAKAA=="
|
||||
const windowsCIScriptBase64 = "CgAkAEwAQQBTAFQARQBYAEkAVABDAE8ARABFACAAPQAgADAACgAkAEUAcgByAG8AcgBBAGMAdABpAG8AbgBQAHIAZQBmAGUAcgBlAG4AYwBlACAAPQAgACcAUwB0AG8AcAAnADsACgBpAGYAIAAoAC0AbgBvAHQAIAAoAFQAZQBzAHQALQBQAGEAdABoACAAIgBDADoALwBzAHIAYwAvAGEAYgBjACIAKQApACAAewAgAE4AZQB3AC0ASQB0AGUAbQAgAC0AUABhAHQAaAAgACIAQwA6AC8AcwByAGMALwBhAGIAYwAiACAALQBJAHQAZQBtAFQAeQBwAGUAIABEAGkAcgBlAGMAdABvAHIAeQAgAC0ARgBvAHIAYwBlACAAfQA7AAoAaQBmACAAKAAtAG4AbwB0ACAAWwBFAG4AdgBpAHIAbwBuAG0AZQBuAHQAXQA6ADoARwBlAHQARQBuAHYAaQByAG8AbgBtAGUAbgB0AFYAYQByAGkAYQBiAGwAZQAoACcASABPAE0ARQAnACkAKQAgAHsAIABbAEUAbgB2AGkAcgBvAG4AbQBlAG4AdABdADoAOgBTAGUAdABFAG4AdgBpAHIAbwBuAG0AZQBuAHQAVgBhAHIAaQBhAGIAbABlACgAJwBIAE8ATQBFACcALAAgACcAYwA6AFwAcgBvAG8AdAAnACkAIAB9ADsACgBpAGYAIAAoAC0AbgBvAHQAIAAoAFQAZQBzAHQALQBQAGEAdABoACAAIgAkAGUAbgB2ADoASABPAE0ARQAiACkAKQAgAHsAIABOAGUAdwAtAEkAdABlAG0AIAAtAFAAYQB0AGgAIAAiACQAZQBuAHYAOgBIAE8ATQBFACIAIAAtAEkAdABlAG0AVAB5AHAAZQAgAEQAaQByAGUAYwB0AG8AcgB5ACAALQBGAG8AcgBjAGUAIAB9ADsACgBpAGYAIAAoACQARQBuAHYAOgBDAEkAXwBOAEUAVABSAEMAXwBNAEEAQwBIAEkATgBFACkAIAB7AAoAJABuAGUAdAByAGMAPQBbAHMAdAByAGkAbgBnAF0AOgA6AEYAbwByAG0AYQB0ACgAIgB7ADAAfQBcAF8AbgBlAHQAcgBjACIALAAkAEUAbgB2ADoASABPAE0ARQApADsACgAiAG0AYQBjAGgAaQBuAGUAIAAkAEUAbgB2ADoAQwBJAF8ATgBFAFQAUgBDAF8ATQBBAEMASABJAE4ARQAiACAAPgA+ACAAJABuAGUAdAByAGMAOwAKACIAbABvAGcAaQBuACAAJABFAG4AdgA6AEMASQBfAE4ARQBUAFIAQwBfAFUAUwBFAFIATgBBAE0ARQAiACAAPgA+ACAAJABuAGUAdAByAGMAOwAKACIAcABhAHMAcwB3AG8AcgBkACAAJABFAG4AdgA6AEMASQBfAE4ARQBUAFIAQwBfAFAAQQBTAFMAVwBPAFIARAAiACAAPgA+ACAAJABuAGUAdAByAGMAOwAKAH0AOwAKAFsARQBuAHYAaQByAG8AbgBtAGUAbgB0AF0AOgA6AFMAZQB0AEUAbgB2AGkAcgBvAG4AbQBlAG4AdABWAGEAcgBpAGEAYgBsAGUAKAAiAEMASQBfAE4ARQBUAFIAQwBfAFAAQQBTAFMAVwBPAFIARAAiACwAJABuAHUAbABsACkAOwAKAFsARQBuAHYAaQByAG8AbgBtAGUAbgB0AF0AOgA6AFMAZQB0AEUAbgB2AGkAcgBvAG4AbQBlAG4AdABWAGEAcgBpAGEAYgBsAGUAKAAiAEMASQBfAFMAQwBSAEkAUABUACIALAAkAG4AdQBsAGwAKQA7AAoAYwBkACAAIgBDADoALwBzAHIAYwAvAGEAYgBjACIAOwAKAAoAVwByAGkAdABlAC0ATwB1AHQAcAB1AHQAIAAoACcAKwAgACIAZwBvACAAdABlAHMAdAAiACcAKQA7AAoAJgAgAGcAbwAgAHQAZQBzAHQAOwAgAGkAZgAgACgAJABMAEEAUwBUAEUAWABJAFQAQwBPAEQARQAgAC0AbgBlACAAMAApACAAewBlAHgAaQB0ACAAJABMAEEAUwBUAEUAWABJAFQAQwBPAEQARQB9AAoACgBXAHIAaQB0AGUALQBPAHUAdABwAHUAdAAgACgAJwArACAAIgBnAG8AIAB2AGUAdAAgAC4ALwAuAC4ALgAiACcAKQA7AAoAJgAgAGcAbwAgAHYAZQB0ACAALgAvAC4ALgAuADsAIABpAGYAIAAoACQATABBAFMAVABFAFgASQBUAEMATwBEAEUAIAAtAG4AZQAgADAAKQAgAHsAZQB4AGkAdAAgACQATABBAFMAVABFAFgASQBUAEMATwBEAEUAfQAKAA=="
|
||||
|
||||
func TestToWindowsConfig(t *testing.T) {
|
||||
engine := docker{
|
||||
@@ -342,6 +342,7 @@ func TestToWindowsConfig(t *testing.T) {
|
||||
ciScript, err := unicode.UTF16(unicode.LittleEndian, unicode.IgnoreBOM).NewDecoder().Bytes(utf16leScript)
|
||||
if assert.NoError(t, err) {
|
||||
assert.EqualValues(t, `
|
||||
$LASTEXITCODE = 0
|
||||
$ErrorActionPreference = 'Stop';
|
||||
if (-not (Test-Path "C:/src/abc")) { New-Item -Path "C:/src/abc" -ItemType Directory -Force };
|
||||
if (-not [Environment]::GetEnvironmentVariable('HOME')) { [Environment]::SetEnvironmentVariable('HOME', 'c:\root') };
|
||||
|
||||
Reference in New Issue
Block a user