2017-06-02 76 views
7

Chcę uruchomić polecenie bash w jenkins rurociągu zamiast polecenia powłoki, wewnątrz groovy skryptu:Run polecenie bash na jenkins rurociągu

Próbowałem już stosowanie "#!/Bin/bash!":

stage('Setting the variables values') { 
    steps { 
     sh ''' 
      #!/bin/bash 
      echo "hello world" 
     ''' 
    } 
} 

A także próbował użyć 'bash' zamiast 'sh'

stage('Setting the variables values') { 
    steps { 
     bash ''' 
      #!/bin/bash 
      echo "hello world" 
     ''' 
    } 
} 

Oczywiście moja komenda jest skomplikowana niż 'echo Hello world'.

+0

Jakie jest twoje pytanie? Proszę jasno sformułować swoje pytanie i podać szczegóły problemów, z którymi się borykasz. – deimus

+0

Myślę, że mamy ten sam problem. Nawet z drugim przykładem nadal działa z sh zamiast bash. Czy to właśnie widzisz? – Jake

+0

Tak, jest! Utwórz rozwiązanie, dodając plik .bash do mojego repozytorium git, więc rozmawiam z Jenkinsem, uruchamiając go na określonej ścieżce wewnątrz mojego projektu. –

Odpowiedz

7

Groovy skrypt pod warunkiem, że formatujesz pierwszy wiersz jako pustą linię w wynikowym skrypcie. The shebang, nakazujący skryptowi uruchomienie z/bin/bash zamiast/bin/sh, musi znajdować się w pierwszym wierszu pliku lub zostanie zignorowany.

Zamiast więc należy sformatować Groovy tak:

stage('Setting the variables values') { 
    steps { 
     bash '''#!/bin/bash 
       echo "hello world" 
     ''' 
    } 
} 

I będzie wykonywał z/bin/bash.

+0

Czy to testujesz? Zrobiłem w sposób, który ustawiłem, aby uruchomić plik wewnątrz mojego repozytorium git, z tym mam pewność, że kod będzie exec jako kod bash, a zamiast tego kod powłoki. –

+0

Tak, udało się to dla mnie. Miałem skrypt, który używał specyficznej dla bash składni, która zawodziła, dopóki nie sformatowałem jej, więc pierwsza linia nie była pusta. – Jake

+0

@Jake Jakiś pomysł, w jaki sposób gen używasz skryptu specyficznego dla basha na etapie? Ta część działa również dla mnie, ale kiedy próbuję uruchomić skrypt basha, to nie działa dla mnie. – DenCowboy

-3

spróbować nietoperza "" linia EX: bat 'del C: \ hello.txt'

+0

Wywołanie java.io.IOException: Skrypty wsadowe można uruchamiać tylko w węzłach systemu Windows. –

+0

Twoje urządzenie slave jest typu linux? – Emile

+0

Tak, to jest niewolnik linuxa. –

3

Według this document, powinieneś być w stanie to zrobić tak:

node { 
    sh "#!/bin/bash \n" + 
     "echo \"Hello from \$SHELL\"" 
} 
+0

Logo zwraca błąd dla "+" WorkflowScript: 9: niedozwolony ciąg znaków po znaku dolara; Roztwór : albo uciec z literalnego znaku dolara "\ 5 $", albo zamień wyrażenie wartości "$ {5}" @ wiersz 9, kolumna 68. 2c-437a-b8a2-db013fe42f62 \ "" + –

+0

Czy możesz opublikować scenariusz ? Z tego, co wkleiłeś, wygląda na to, że przed "+" są dwie cytaty, co jest błędne. – Jacob