mda*_*y77 9 azure-devops azure-pipelines
我在 Azure DevOps 中创建了一个管道,用于构建 Angular 应用程序并对其运行一些测试。我将管道分为两个工作:构建和测试。构建作业成功完成。即使构建作业已经完成,测试作业仍会再次从 Git 中检查代码。测试作业需要在构建作业中创建的文件才能像 npm 包一样成功运行。
这是我的 YAML 文件:
trigger:
- develop
variables:
npm_config_cache: $(Pipeline.Workspace)/.npm
system.debug: false
stages:
- stage: Client
pool:
name: Windows
jobs:
- job: Build
displayName: Build Angular
steps:
- template: templates/angularprodbuild.yml
- job: Test
displayName: Run Unit and Cypress Tests
dependsOn: Build
steps:
- template: templates/angularlinttest.yml
- template: templates/angularunittest.yml
- template: templates/cypresstest.yml
Run Code Online (Sandbox Code Playgroud)
我的代理池是在阶段级别声明的,因此两个作业将使用相同的代理。此外,我还向测试作业添加了 dependentOn,以确保使用相同的代理。检查日志后发现,实际上使用的是同一个代理。
如何让测试作业使用在构建作业中创建的文件而不再次检出代码?如果有帮助的话,我正在使用 Angular 11 和 Azure DevOps Server 2020。
Leo*_*SFT 13
\n\n在 Azure 管道中的另一个作业中使用从上一个作业检出的文件
\n
如果您使用自托管代理,默认情况下,在两个连续作业之间不会清理任何工作区。因此,您可以进行增量构建和部署,前提是实施任务以利用它。
\n因此,我们可以- checkout: none在下一个作业中使用来跳过在构建作业中检查相同的代码:
- job: Test\n displayName: Run Unit and Cypress Tests\n dependsOn: Build\n steps:\n - checkout: none\n - template: templates/angularlinttest.yml\nRun Code Online (Sandbox Code Playgroud)\n但正如 Bo S\xc3\xb8borg Petersen 所说,DependsOn 并不能确保使用相同的代理。您需要向该特定构建代理添加用户功能,然后在构建定义中将该功能作为需求:
\n pool:\n name: string\n demands: string | [ string ]\nRun Code Online (Sandbox Code Playgroud)\n请查看此文档如何将 TFS 构建发送到特定代理或服务器以获取更多信息。
\n在测试作业中,我们可以使用预定义的变量,例如$(System.DefaultWorkingDirectory)访问 Node 和 npm 的文件。
另一方面,如果您使用Hosted Agent,我们需要使用PublishBuildArtifacts任务将 Artifact 发布到 azure 工件,以便我们可以DownloadBuildArtifacts在下一个作业中使用该任务下载工件:
jobs:\n- job: Build\n pool:\n vmImage: \'ubuntu-16.04\'\n steps:\n - script: npm test\n - task: PublishBuildArtifacts@1\n inputs:\n pathtoPublish: \'$(System.DefaultWorkingDirectory)\'\n artifactName: WebSite\n\n# download the artifact and deploy it only if the build job succeeded\n- job: Deploy\n pool:\n vmImage: \'ubuntu-16.04\'\n steps:\n - checkout: none #skip checking out the default repository resource\n - task: DownloadBuildArtifacts@0\n displayName: \'Download Build Artifacts\'\n inputs:\n artifactName: WebSite\n downloadPath: $(System.DefaultWorkingDirectory) \nRun Code Online (Sandbox Code Playgroud)\n您可以查看官方文档和示例以了解更多详细信息。
\n假设在作业之间清理代理,因此要访问文件,您需要在构建作业期间创建一个工件,然后在测试作业期间下载它。
此外,DependsOn 不确保使用相同的代理,仅确保第二个作业在第一个作业之后运行。
您还可以将第二个作业设置为不使用“-checkout: none”检出代码
| 归档时间: |
|
| 查看次数: |
8208 次 |
| 最近记录: |