为了账号安全,请及时绑定邮箱和手机立即绑定

如何在 Azure 构建管道中打包 JS 应用程序并保存在单独的 C# 存储库中

如何在 Azure 构建管道中打包 JS 应用程序并保存在单独的 C# 存储库中

人到中年有点甜 2022-01-13 16:50:05
使用两个单独的存储库(因为我就是这样继承它们的)我正在尝试运行一个自定义脚本来构建一个仅限 JS 的应用程序,然后将该应用程序与一个 C# API 应用程序一起复制和部署,该应用程序位于一个第二个存储库。将 Azure DevOps Services(基于云)用于存储库和管道。正如我上面所指出的,我正在通过运行这些脚本的过程来创建一个可以使用我们的 API 部署的单个 .js 文件(JS 应用程序由我们的各种应用程序调用和创建) API)。我的难题是如何使用 Azure 的 Build Pipe 来解决这个问题,因为我可以运行脚本,但是创建的文件然后被存储在哪里(以及在哪里引用它们),然后获取该文件并将这个创建插入到存储库中C# API 应用程序,从而启动第二次构建,然后将 C# 应用程序部署到适当的服务。在另一个 JS 项目中,我已成功复制构建管道中的文件,然后将这些“构建”推送到适当的环境,但我无法复制特定文件,按照npm run build-prod保存然后插入文件的步骤第二个存储库的已知静态位置。注意:两个存储库位于同一个组织中。这是我的 JS 应用程序的粗略 YAML 草案:trigger:- masterpool:  vmImage: 'vs2017-win2016'steps:- task: NodeTool@0  inputs:    versionSpec: '10.x'  displayName: 'Install Node.js'- script: |    npm install    npm run build-prod  displayName: 'npm install and build-prod'- task: CopyFiles@2  inputs:    SourceFolder: '$(agent.builddirectory)/dist/'    Contents: '**'    TargetFolder: '$(build.artifactstagingdirectory)'- task: PublishBuildArtifacts@1  inputs:    PathtoPublish: '$(Build.ArtifactStagingDirectory)/closet-api.js'    ArtifactName: 'closet-api.js'    publishLocation: 'Container'感谢您的帮助!2019 年 12 月 2 日小更新我更新了 YAML 以正确运行我的自定义构建脚本(包含在 JS 文件中)并获取所需的文件。现在的难题是更彻底地了解该文件的确切位置,因此,在单独构建管道中的另一个项目中,我可能会获取 .js 文件并在我的 C# 项目中使用它。trigger:- masterpool:  vmImage: 'vs2017-win2016'steps:- task: NodeTool@0  inputs:    versionSpec: '10.x'  displayName: 'Install Node.js'- script: npm install  displayName: 'npm install'- script: npm run build-prod  displayName: 'Run Build Script for Prod'- task: CopyFiles@2  displayName: 'Copy client-api.js file to: $(Build.ArtifactStagingDirectory)'  inputs:    SourceFolder: '$(Build.SourcesDirectory)'    Contents: '**\dist\closet-api.js'    TargetFolder: '$(Build.ArtifactStagingDirectory)'- task: PublishBuildArtifacts@1  inputs:    pathtoPublish: '$(Build.ArtifactStagingDirectory)'    artifactName: closet-api.js
查看完整描述

2 回答

?
富国沪深

TA贡献1790条经验 获得超9个赞

经过大量的试验和努力,我已经能够找到一个似乎可以完成项目这个阶段的解决方法:


TL;博士


从我在 JS 构建管道中指定的路径下载构建工件(在本例中downloadPath: '$(System.ArtifactsDirectory)')

将文件复制到 C# 项目中的指定文件路径并覆盖现有文件

steps:

#Download JS app from published JS Build Pipe

- task: DownloadBuildArtifacts@0

  inputs:

    buildType: 'specific'

    project: '(project identifier here)'

    pipeline: '7'

    buildVersionToDownload: 'latest'

    downloadType: 'specific'

    downloadPath: '$(System.ArtifactsDirectory)'


- task: CopyFiles@2

  inputs:

    SourceFolder: '$(System.ArtifactsDirectory)\folder-name-where-item-was-saved'

    Contents: '**'

    TargetFolder: '$(Build.SourcesDirectory)\directory\where\I\want\built\file'

    OverWrite: true

现在我必须开始努力从另一个管道触发管道,但那是另一天和另一美元。继续重新设计我们的部署流程。


查看完整回答
反对 回复 2022-01-13
?
慕的地10843

TA贡献1785条经验 获得超8个赞

我认为您需要创建第三个管道,您可以在其中从 C# API 和 JS 应用程序下载工件,然后您可以组织它们并部署到目标服务器。这是一个例子:

//img1.sycdn.imooc.com//61dfe7ed0001c96205550376.jpg


查看完整回答
反对 回复 2022-01-13
  • 2 回答
  • 0 关注
  • 187 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号