Я новичок в CICD.
У меня есть веб-приложение Azure, в котором выполняется контейнер Docker, созданный из образа Express Nodejs.
Мой текущий поток минималистичен. У меня есть файл Azure-pipelines.yml, который выглядит как
trigger:
- master
pool:
vmImage: 'ubuntu-latest'
- task: AzureCLI@1
inputs:
azureSubscription: 'xxxxxx'
scriptLocation: 'inlineScript'
inlineScript: 'az acr build --registry registry123 --image image123:latest --file Dockerfile .'
, и файл Docker, который выглядит как
FROM node:10
WORKDIR /poc/microservices
COPY package*.json ./
RUN npm install
COPY . .
EXPOSE 3000
CMD [ "node", "server.js" ]
Теперь я добавил несколько тестов mocha, которые я могу запустить с npm test
, и они работают нормально на местном уровне.
Теперь я хочу добавить их в конвейер, чтобы он не создавал образ, если тесты не пройдены.
У меня есть файл mocha.opts, в котором я определил --reporter mocha-junit-reporter
, и в тестах используется переменная process.env.ENDPOINT
.
Итак, мой вопрос: как добавить команду в конвейер?
Нужно ли просто добавить
- script: npm install
- script: npm test
в azure-pipelines.yml, а затем настроить переменную ENDPOINT в переменных сборки на портале devOps azure?
Если это так, не проблема ли, что я бегу тогда дважды npm install
? один раз в Azure, а другой раз в Docker?