Пропустите этап Jenkins для «теста ng», если нет .spe c изменений файла, извлеченных из GIT - PullRequest
0 голосов
/ 13 марта 2020

У меня Angular приложение отлично работает с Jenkins со всеми определенными этапами. Он имеет почти 600 модульных тестовых сценариев, работающих без этапа chrome в качестве этапа Jenkins перед этапом сборки. Все работает, как и ожидалось.

Теперь этап тестирования, занимающий 6-10 минут, зависит от нагрузки на сервер, даже если в файлах spe c нет изменений. Прямо сейчас тест является обязательным в синтаксисе конвейера. Я хочу сделать его условным.

Я просто хочу добавить условие на этапе тестирования, а не на этапе сборки. Условие будет следующим: если в файле .spe c нет изменений, Дженкинс должен пропустить этап и выполнить этап сборки.

stage('Test') {
            steps {
                sh 'npm run test:headless'
            }
        }

Затем этап сборки:

stage('Build') {
            steps {
                sh 'npm run build:dev'
            }
        }

Заранее спасибо за помощь.

1 Ответ

1 голос
/ 13 марта 2020

Вы можете go через все коммиты, сделанные с момента последнего коммитта слияния (который должен быть там, где вы разветвились), и искать файлы, измененные с spec.ts в их пути:

lastMerge() {
    git rev-list origin..HEAD --max-parents=1 --max-count=1
}

changes() {
  git diff --name-only --diff-filter=AMR --cached $(lastMerge)..HEAD | grep spec.ts
}

if [ changes ] 
    then
        echo "start expensive operation"
fi

Кредит : Определить, изменен ли какой-либо файл в каталоге для последних Git Фиксация и Как найти последний git коммит перед слиянием

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...