【问题标题】:Is it possible to copy build artifact from pipeline into repo是否可以将构建工件从管道复制到 repo
【发布时间】:2021-09-21 13:48:44
【问题描述】:

我正在尝试将我发布的 zip 版本复制到我的 azure 存储库中以便于访问。我有以下 YML 代码。请参阅我的问题的内联评论:

- task: ArchiveFiles@2
  inputs:
    rootFolderOrFile: '$(build.artifactstagingdirectory)\MyFolder'
    includeRootFolder: true
    archiveType: 'zip'
    archiveFile: '$(Build.ArtifactStagingDirectory)\zipfolder/$(Build.BuildId).zip'
    replaceExistingArchive: true

- task: PublishBuildArtifacts@1    
  displayName: 'Publish Artifact: drop'
  inputs:
    PathtoPublish: '$(Build.ArtifactStagingDirectory)\zipfolder'
    TargetPath: '$(Build.SourcesDirectory)\MyFolder' // Here I would expect the code to copy the zip into my repo.

【问题讨论】:

  • 您为什么要这样做?一般来说,源代码存储库是用于……嗯……源代码 - 不是构建工件等。
  • 我们有这样的想法,即在 repo 中访问构建工件比以正常方式导航到构建工件更容易。在我们实施 CD 之前,这是一个临时解决方案。我们知道这可能不是最佳做法。

标签: azure azure-devops build


【解决方案1】:

您可以下载工件并在命令行任务中使用 git 命令将其推送到 repo,参考下面的示例,它适用于我。

# 'Allow scripts to access the OAuth token' was selected in pipeline.  Add the following YAML to any steps requiring access:
#       env:
#           MY_ACCESS_TOKEN: $(System.AccessToken)
# Variable Group 'vargroup1' was defined in the Variables tab
resources:
  repositories:
  - repository: self
    type: git
    ref: refs/heads/testb2
jobs:
- job: Job_1
  displayName: Agent job 1
  pool:
    vmImage: ubuntu-20.04
  steps:
  - checkout: self
    persistCredentials: True
  - task: ArchiveFiles@2
    displayName: Archive README.md
    inputs:
      rootFolderOrFile: README.md
      archiveFile: $(Build.ArtifactStagingDirectory)\zipfolder/$(Build.BuildId).zip
  - task: PublishBuildArtifacts@1
    displayName: 'Publish Artifact: drop'
    inputs:
      PathtoPublish: $(Build.ArtifactStagingDirectory)\zipfolder
  - task: DownloadBuildArtifacts@1
    displayName: Download Build Artifacts
    inputs:
      artifactName: drop
  - task: CmdLine@2
    displayName: Command Line Script
    inputs:
      script: >-
        cd $(System.ArtifactsDirectory)\zipfolder

        git config --global user.email "xxxxx"

        git config --global user.name "xxxxx"

        git init

        git add .

        git commit -m "123"

        git remote add origin https://$(System.AccessToken)@dev.azure.com/orgname/testpro1/_git/testpro4

        git push https://$(System.AccessToken)@dev.azure.com/orgname/testpro1/_git/testpro4
...

【讨论】:

    【解决方案2】:

    另一种方法是推送到 repo,然后从远程 git/ 同步 - 基本上是一种自动提取文件的方式。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-31
      • 2021-12-19
      • 1970-01-01
      • 2021-07-22
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多