Как сделать так, чтобы моя сборка Azure DevOps Pipeline не работала, когда мой скрипт linting возвращает ошибку? - PullRequest
2 голосов
/ 16 марта 2019

Я использую надстройку Azure Pipelines GitHub, чтобы гарантировать, что запросы по запросу проходят мою обработку. Тем не менее, я только что сделал запрос на пробный пул, который не удается выполнить мою привязку, но конвейер Azure завершается успешно.

Вот мой azure-pipelines.yml

# Node.js with React
# Build a Node.js project that uses React.
# Add steps that analyze code, save build artifacts, deploy, and more:
# https://docs.microsoft.com/azure/devops/pipelines/languages/javascript

trigger:
- master

pool:
  vmImage: 'Ubuntu-16.04'

steps:
- task: NodeTool@0
  inputs:
    versionSpec: '8.x'
  displayName: 'Install Node.js'

- script: |
    npm install
    npm run lint # Mapped to `eslint src` in package.json
    npm run slint # `stylelint src` in package.json
    npm run build
  displayName: 'npm install and build'

А вот (часть) вывод на ветке, о которой я знаю, терпит неудачу на npm run lint

> geograph-me@0.1.0 lint /home/vsts/work/1/s
> eslint src


/home/vsts/work/1/s/src/js/components/CountryInput.js
  26:45  error  'onSubmit' is missing in props validation  react/prop-types
  27:71  error  'onSubmit' is missing in props validation  react/prop-types

✖ 2 problems (2 errors, 0 warnings)

npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! geograph-me@0.1.0 lint: `eslint src`
npm ERR! Exit status 1 # Exit status 1, yet the build succeeds?
npm ERR! 
npm ERR! Failed at the geograph-me@0.1.0 lint script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.

npm ERR! A complete log of this run can be found in:
npm ERR!     /home/vsts/.npm/_logs/2019-03-16T05_30_52_226Z-debug.log

> geograph-me@0.1.0 slint /home/vsts/work/1/s
> stylelint src


> geograph-me@0.1.0 build /home/vsts/work/1/s
> react-scripts build

Creating an optimized production build...
Compiled successfully.

# Truncated...

Как вы можете видеть, Линтер работает нормально и ловит мою преднамеренную ошибку (я удалил проверку типа пропа) и завершает работу с кодом 1.

Однако сборка просто продолжает свой веселый путь.

Что мне нужно сделать, чтобы такая задерживающаяся ошибка остановила мою сборку и не вернула успех?

Заранее спасибо.

1 Ответ

4 голосов
/ 16 марта 2019

это означает, что ваш скрипт «проглатывает» код выхода и завершает работу в обычном режиме.вам нужно добавить в ваш скрипт проверку, которая будет перехватывать код выхода вашего npm run lint и выходить с тем же кодом выхода, что-то вроде:

- script: |
    npm install
    npm run lint # Mapped to `eslint src` in package.json
    if [ $? -ne 0 ]; then
        exit 1
    fi
    npm run slint # `stylelint src` in package.json
    npm run build
...