Jenkins(1.638)의 실행 셸에 간단한 If 문을 작성하려고 합니다. 내가 봤다유제 하지만 여전히 작동하지 않습니다(아래 결과 출력 참조). [[ 및 [ 및 관련 공백을 시도했는데 Jenkins가 일반 bash와 다르게 처리하는 것 같습니다. 나는 심지어 if와 ;와 같은 줄에서 then을 시도했습니다. 어떤 아이디어가 있나요?
if [[ "${BRANCH_NAME}" == "master" ]] || [[ "${BRANCH_NAME}" == "master_dev" ]]
then
./runUnitTests.sh ${REPOSITORY_NAME} ${BASE_BUILD_CORE} ${BRANCH_NAME} ${BUILD_NUMBER} || echo "The npm may fail but the report exists"
fi
Jenkins의 결과는 다음과 같습니다.
- [[업그레이드==마스터]] /tmp/hudson11669113852432623.sh: 2: /tmp/hudson11669113852432623.sh: [[: 찾을 수 없음
- [[ 업그레이드 == master_dev ]] /tmp/hudson11669113852432623.sh: 2: /tmp/hudson11669113852432623.sh: [[: [core] 찾을 수 없음 $ /bin/sh -xe /tmp/hudson7252947297480815560.sh
답변1
쉘에 bash shebang을 포함시키는 것을 고려해 보셨나요?
#!/bin/bash -xe
if [[ "${BRANCH_NAME}" == "master" ]] || [[ "${BRANCH_NAME}" == "master_dev" ]]
....
이렇게 하면 Jenkins가 로컬 bash 인터프리터를 사용하게 됩니다.