azure - 如何使用 GitHub Branch 作为 Azure DevOps Pipelines 的参数?

标签 azure github azure-devops azure-pipelines

我有一个测试和生产环境。我使用 GitHub 分支进行部署。开发分支上的工件应部署到开发环境,生产工件应部署到生产环境。

实现此目的的一种方法是在开发和掌握上使用不同的 azure-pipeline.yml 文件。

      - task: AzureFileCopy@4
        displayName: 'copy spark jobs'
        inputs:
          sourcePath: $(workingDirectory)/transformed
          azureSubscription: developSubscription
          destination: azureBlob
          storage: developStorageAccount
          containerName: sourcecode
          blobPrefix: myBlob
          resourceGroup: developmentSourceGroup

我将在 master 分支上替换 azureSubscription、resourceGroup 和 prod 上存储的标识符。但这也意味着每次合并时,我都会冒用开发设置覆盖生产设置的风险。

所以我想知道是否有一种方法可以根据用于部署的分支来定义采用哪种设置?

最佳答案

这不是一个好方法。您应该尝试的是只有一个分支,并为测试和生产环境使用单独的阶段。对于生产阶段,使用过滤器允许仅从主分支进行部署。但在测试中,您也应该从开发和掌握进行部署。这是因为您需要在投入生产之前进行测试。想象一下,您不会注意到将代码合并到主分支时出现的问题,然后您将有另一个机会在测试环境中检测到它。

可能就像这样

stages:
- stage: Test
  displayName: Test
  condition: and(succeeded(), or(eq(variables['build.sourceBranch'], 'refs/heads/master'),eq(variables['build.sourceBranch'], 'refs/heads/develop'), eq(variables['Build.Reason'], 'PullRequest'), eq(variables['Build.Reason'], 'Manual')))
  jobs:
  - deployment: Test
    displayName: Test
    environment: Test
    workspace:
      clean: all
    strategy:
      runOnce:
        deploy:
          steps:
          - task: AzureFileCopy@4
            displayName: 'copy spark jobs'
            inputs:
              sourcePath: $(workingDirectory)/transformed
              azureSubscription: developSubscription
              destination: azureBlob
              storage: developStorageAccount
              containerName: sourcecode
              blobPrefix: myBlob
              resourceGroup: developmentSourceGroup

- stage: Production
  displayName: Production
  condition: and(succeeded(), eq(variables['build.sourceBranch'], 'refs/heads/master'))
  jobs:
  - deployment: Production
    displayName: Production
    environment: Production
    workspace:
      clean: all
    strategy:
      runOnce:
        deploy:
          steps:
          - task: AzureFileCopy@4
            displayName: 'copy spark jobs'
            inputs:
              sourcePath: $(workingDirectory)/transformed
              azureSubscription: productionSubscription
              destination: azureBlob
              storage: productionStorageAccount
              containerName: sourcecode
              blobPrefix: myBlob
              resourceGroup: productionSourceGroup

请注意,我使用了部署作业,如果您配置它们,它将为您提供实例批准。

关于azure - 如何使用 GitHub Branch 作为 Azure DevOps Pipelines 的参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73218940/

相关文章:

android-studio - 版本控制 GIT-Commit 未显示任何更改

azure - 使用变量组和模板的 Azure Pipelines 变量出现意外行为

tfs - tfsonline 和 TeamCity 的 SSL 代理错误

.net - 如何创建可部署到 Azure 的 ZIP 包

azure - 在 Azure 中的何处可以设置电子邮件地址以在应用服务崩溃时接收电子邮件?

github - GitHub Wiki 中的目录或侧边栏

azure devops 管道 CopyFiles@2 任务从代理 A 复制文件,但 DownloadBuildArtifacts@0 将文件下载到代理 B

azure - 自定义登录/注册策略中忘记密码时出错

azure - 执行直到Azure逻辑应用程序中的条件无法按预期工作

azure - 无法在 Azure 应用服务部署中心选择 GitHub 组织