Azure DevOps存储库备份副本

时间:2020-05-21 18:14:41

标签: azure azure-devops continuous-integration azure-devops-rest-api azure-devops-extensions

我们已经在https://dev.azure.com/上创建了存储库 一切正常。 现在,我的经理希望定期获得此存储库的备份副本。 我向经理解释说https://dev.azure.com/由MS作为SAAS管理,因此回购协议始终是安全的。 但是他想要自己的副本。是什么呀!

我想到了几个选择: a)在任何开发人员机器上获取最新信息并将备份备份到磁带设备中 b)使用某些Azure DevOps保持备份在Azure存储上

选项b可行吗?

过去的所有签入历史记录都可以备份Azure DevOps吗?

我可以与Azure存储链接的Azure DevOps上的任何备份服务吗?

在Azure DevOps上使用某些xyz服务是否可以进行增量备份?

1 个答案:

答案 0 :(得分:2)

选项b可行吗?

在Azure Devops Service中可能。您需要一个Yaml pipelinetriggers all branches

您可以使用command line task将存储库备份到{RepoName}.git文件夹中,然后使用Azure File Copy task将此文件夹复制到Azure存储中。与此类似:

trigger:
  branches:
    include:
    - '*'

pool:
  vmImage: 'windows-latest'

steps:
  - task: CmdLine@2
    inputs:
      script: 'git clone --mirror https://{Your PAT}@dev.azure.com/{OrgName}/{ProjectName}/_git/{RepoName}'

  - task: ArchiveFiles@2
    inputs:
      rootFolderOrFile: '$(System.DefaultWorkingDirectory)/{RepoName}.git'
      includeRootFolder: true
      archiveType: 'zip'
      archiveFile: '$(Build.ArtifactStagingDirectory)/Backup.zip'
      replaceExistingArchive: true

  - task: AzureFileCopy@4
    displayName: 'AzureBlob File Copy'
    inputs:
      SourcePath: '$(Build.ArtifactStagingDirectory)/Backup.zip'
      azureSubscription: xxxx
      Destination: AzureBlob
      storage: xxxxxxxx
      ContainerName: arm
      BlobPrefix: test

详细信息:

1.CI带通配符(*)的触发器可以监视您的所有分支。因此,如果您的仓库有任何更新,管道将被触发运行。

2。cmd任务调用git clone --mirror来制作git repo的副本。若要在具有PAT的cmd任务中复制Azure Git存储库,您可以遵循here格式:

git clone https://{yourPAT}@dev.azure.com/yourOrgName/yourProjectName/_git/yourRepoName

此命令将创建一个RepoName.git文件夹,其中包含您在以下路径中的存储库副本:$(System.DefaultWorkingDirectory)。要create PAT,您只需要创建一个具有“代码读取”访问范围的计算机:

enter image description here

3。逻辑是:如果您的源repo有任何更改=>将触发管道=>它将在DefaultWorkingDirectory(CMD任务)中创建最新副本=>将该副本存档到Backup.zip文件中({Archive file task =>“ Azure文件复制”任务会将此Backup.zip复制到Azure存储Blob)