Выполнение теста мокко с помощью конвейеров Azure и Docker - PullRequest
4 голосов
/ 03 октября 2019

Я новичок в 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?

1 Ответ

0 голосов
/ 08 октября 2019

Двойная установка NPM только замедлит ваше развертывание и не вызовет никаких других проблем, если вы не скопируете node_modules в ваш контейнер Docker.

Убедитесь, что вы копируете только исходный кодвведите код в Docker-контейнер и оставьте node_modules вне. Для этого вы можете добавить файл .dockerignore :

node_modules
npm-debug.log
Dockerfile
.dockerignore

Это обеспечит правильную установку пакетов в контейнере Docker.

...