使用Azure管道和Docker运行Mocha测试
我对CICD非常陌生。
我有一个Azure Web应用程序,运行从Express Node.js映像构建的Docker容器。
我的当前流程非常简单。我有一个类似于
的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 .'
和一个看起来像的dockerfile
FROM node:10
WORKDIR /poc/microservices
COPY package*.json ./
RUN npm install
COPY . .
EXPOSE 3000
CMD [ "node", "server.js" ]
现在,我添加了一些可以用npm test
运行的摩卡测试,并且这些测试在本地运行良好。
现在,我想将它们添加到管道中,以便在测试失败时不构建映像。
我有一个mocha.opts文件,其中定义了--reporter mocha-junit-reporter
,并且测试使用的是process.env.ENDPOINT
变量。
所以我的问题是如何将命令添加到管道中?
我是否简单地添加
- script: npm install
- script: npm test
到azure-pipelines.yml,然后在azure devOps门户中的构建变量中配置ENDPOINT变量?
如果是这样,那么我运行两次npm install
没问题吗?一次在Azure中,一次在Docker中?
运行两次NPM安装只会减慢部署速度,并且如果不将node_modules复制到Docker容器中,也不会引起任何其他问题。
确保仅将源代码复制到Docker容器,并保留node_modules。您可以为此添加一个[[.dockerignore文件:
node_modules
npm-debug.log
Dockerfile
.dockerignore
这将确保将软件包正确安装在Docker容器中。
使用Azure管道和Docker运行Mocha测试
我对CICD非常陌生。
我有一个Azure Web应用程序,运行从Express Node.js映像构建的Docker容器。
我的当前流程非常简单。我有一个类似于
的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 .'
和一个看起来像的dockerfile
FROM node:10
WORKDIR /poc/microservices
COPY package*.json ./
RUN npm install
COPY . .
EXPOSE 3000
CMD [ "node", "server.js" ]
现在,我添加了一些可以用npm test
运行的摩卡测试,并且这些测试在本地运行良好。
现在,我想将它们添加到管道中,以便在测试失败时不构建映像。
我有一个mocha.opts文件,其中定义了--reporter mocha-junit-reporter
,并且测试使用的是process.env.ENDPOINT
变量。
所以我的问题是如何将命令添加到管道中?
我是否简单地添加
- script: npm install
- script: npm test
到azure-pipelines.yml,然后在azure devOps门户中的构建变量中配置ENDPOINT变量?
如果是这样,那么我运行两次npm install
没问题吗?一次在Azure中,一次在Docker中?
运行两次NPM安装只会减慢部署速度,并且如果不将node_modules复制到Docker容器中,也不会引起任何其他问题。
确保仅将源代码复制到Docker容器,并保留node_modules。您可以为此添加一个[[.dockerignore文件:
node_modules
npm-debug.log
Dockerfile
.dockerignore
这将确保将软件包正确安装在Docker容器中。