Krok w moim potoku przesyła .tar do sztucznego serwera. Podczas przejścia w env.BUILD_NUMBER pojawia się błąd Bad substitution, ale te same polecenia działają, gdy numer jest zakodowany. Scenariusz jest napisany w groovy przez jenkins i działa w przestrzeni roboczej Jenkins.Jenkins Pipeline sh bad substitution
sh 'curl -v --user user:password --data-binary ${buildDir}package${env.BUILD_NUMBER}.tar -X PUT "http://artifactory.mydomain.com/artifactory/release-packages/package${env.BUILD_NUMBER}.tar"'
zwraca błędy:
[Pipeline] sh
[Package_Deploy_Pipeline] Running shell script
/var/lib/jenkins/workspace/[email protected]/durable-4c8b7958/script.sh: 2:
/var/lib/jenkins/workspace/[email protected]/durable-4c8b7958/script.sh: Bad substitution
[Pipeline] } //node
[Pipeline] Allocate node : End
[Pipeline] End of Pipeline
ERROR: script returned exit code 2
Jeśli ciężko kod w wielu kompilacji i swap ${env.BUILD_NUMBER}
otrzymuję żadnych błędów i kod przebiega pomyślnie.
sh 'curl -v --user user:password --data-binary ${buildDir}package113.tar -X PUT "http://artifactory.mydomain.com/artifactory/release-packages/package113.tar"'
Używam $ {env.BUILD_NUMBER} ramach innych sh poleceń w tym samym skrypcie i nie mają problemów w innych miejscach.
Zgaduję, że '$ {env.BUILD_NUMBER} 'jest zastępowane przez etap przetwarzania wstępnego, zanim zostanie faktycznie wyświetlony przez powłokę w innych przypadkach. 'sh' samo słusznie traktuje to jako błąd. – chepner
w tej samej funkcji, tuż przed tą linią, używając $ {env.BUILD_NUMBER} w taki sam sposób, aby przesłać do Google Storage i to nie daje żadnych problemów. EDYCJA: Zrobiłem również zmienną obojętną i ustawiłem ją na liczbę, a następnie przekazałem w zmiennej i otrzymałem ten sam problem. –
Możliwe, że używasz niewłaściwych cytatów w całej sprawie http://mrhaki.blogspot.com.au/2009/08/groovy-goodness-string-strings-strings.html. Nie musisz też podawać adresu URL do zawijania. Więc może używanie podwójnych cudzysłowów wokół całego dzieła będzie działało bez pojedynczych cudzysłowów. – KeepCalmAndCarryOn