问题描述
我目前正在完成创建 CI 开发管道并参考以下文档
- https://www.andreasnesheim.no/using-vsts-and-github-to-set-up-cicd-for-your-node-js-grunt-application/
- https://www.c-sharpcorner.com/blogs/creating-cicd-pipeline-for-angular-and-hosting-in-azure-app-service
- https://azuredevopslabs.com/labs/vsts/nodejs/
- https://morioh.com/p/0d80bfd8ea27
参考资料都表明,工件首先被压缩,发布,然后部署。
但是,项目开发人员告诉我,在 .NET 构建之后,他只是将生成的 AngularOutput 工件复制/部署到 Azure 应用服务。
我使用存档任务以这种方式对其进行了测试,然后发布,并且 CI 管道运行良好。但是,我也测试了直接发布而不事先存档,并将路径更改为 \Bundles\AngularOutput
,并且发布步骤成功并显示发布的工件
那么问题是,如果发布没有先压缩/存档就可以工作,那么我可以在工件发布后直接部署吗?如果是,需要为 Azure App Service Deploy task: Package/Folder
指定什么?
如果需要/推荐归档任务,那没问题,但这是否意味着 Azure 应用服务部署会自动提取压缩后的工件?
解决方法
首先,是的,您可以发布您的工件,而无需将它们作为工件实际发布到管道上。但是,如果您在管道上发布它们并且构建和发布管道是分开的,您可以重新部署而无需重新构建您的应用。
此外,如果需要,您可以随时下载工件并手动发布。 (例如某些开发/调试目的)。
和Zip deploy
方法
这里使用的是
创建所选包或文件夹的 .zip 部署包,并将文件内容部署到 Azure 中应用服务名称函数应用的 wwwroot 文件夹。此选项会覆盖 wwwroot 文件夹中的所有现有内容。有关详细信息,请参阅 Azure Functions 的 Zip 部署。
因此,如果您需要从构建管道中部署它,您只需将路径放置到您的 zip 文件或内容所在的文件夹文件中。
并且请考虑在 multi stage pipeline 中您可以在各个阶段之间分离构建和部署阶段。但是,在这种情况下,您需要将工件发布为管道工件。此管道工件将在 deployment
job 自动下载。