Jenkinsfile / bash: erro de sintaxe

0

Estou tentando executar este comando Jenkinsfile seguindo para excluir tudo, exceto o foobar pasta :

node {
    stage('Clean') {
        sh 'rm -rf ./path/to/folder/!(foobar)'
    }
}

Mas recebo o seguinte erro:

syntax error near unexpected token `('

Por que estou recebendo esse erro

Balo
fonte

Respostas:

1

!(foobar) trabalha em bash, não em sh; ainda é isso que sh em Jenkins faz:

Executa um script de shell Bourne, geralmente em um nó Unix. […] O shell padrão do sistema será executado, usando o -xe bandeiras

Então usa sh ao invés de bash. O comando permite que você use um shebang embora. Eu acredito que isso fará com que seu comando seja interpretado por Bash (ajuste o shebang se necessário):

sh '''#!/bin/bash
      rm -rf ./path/to/folder/!(foobar)
   '''
Kamil Maciorowski
fonte