【问题标题】:GitHub Environments deploying staging on tag push failsGitHub 环境在标签推送上部署暂存失败
【发布时间】:2022-10-02 04:16:03
【问题描述】:

我正在尝试在具有 GitHub 环境的多个环境中将基础架构部署为来自 main 分支的代码。我想在开发环境中有合并/推送到 main 时进行部署,但是当提交上有一个标签时,如 r2022-09-07 将代码部署在暂存环境中。但由于保护规则,它每次都失败。

这是我需要在登台上部署代码时遇到的错误:

这是ci.yml 工作流,我使用GitHub env 从main 分支部署到多个环境。
名称:Lint、编译和部署

on:
  push:
    branches: [main]
    tags:
    - \'r*\'
  pull_request:

jobs:
  ci:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3

      - name: install deps
        run: yarn --frozen-lockfile

      - run: yarn lint
      - run: yarn prettier
      - run: yarn compile
      - run: yarn synth
      - run: yarn test

  # CD: ci -> dev -> staging -> production

  ## only deploy to dev from main branch
  deploy-dev:
    if: ${{ github.ref_name == \'main\' }}
    needs: ci
    runs-on: ubuntu-latest
    environment:
      name: Dev
      url: https://...
    env:
      STACK: ...
      AAD_TENANT: ...
      ARM_TENANT_ID: ...
      ARM_ACCESS_KEY: ${{ secrets.ARM_ACCESS_KEY }}
      ARM_CLIENT_ID: ${{ secrets.AZURE_CLIENT_ID }}
      ARM_CLIENT_SECRET: ${{ secrets.AZURE_CLIENT_SECRET }}
    steps:
      - uses: actions/checkout@v3
      - run: yarn --frozen-lockfile --production
      - run: |
          az login --service-principal --tenant $AAD_TENANT \\
            --username  \"${{ secrets.AZURE_CLIENT_ID }}\" --password \"${{ secrets.AZURE_CLIENT_SECRET }}\"
          yarn deploy $STACK --auto-approve

  ## deploy to staging only from main branch, if a commit has a tag starting with `r` (for ex. r2022-09-07)
  deploy-staging:
    if: ${{ startsWith(github.ref, \'refs/tags/r\') }}
    runs-on: ubuntu-latest
    environment:
      name: Staging
      URL: ....
    env:
      STACK: ...
      AAD_TENANT: ...
      ARM_TENANT_ID: ...
      ARM_ACCESS_KEY: ${{ secrets.ARM_ACCESS_KEY }}
      ARM_CLIENT_ID: ${{ secrets.AZURE_CLIENT_ID }}
      ARM_CLIENT_SECRET: ${{ secrets.AZURE_CLIENT_SECRET }}
    steps:
      - uses: actions/checkout@v3
      - run: yarn --frozen-lockfile --production
      - run: |
          az login --service-principal --tenant $AAD_TENANT \\
            --username  \"${{ secrets.AZURE_CLIENT_ID }}\" --password \"${{ secrets.AZURE_CLIENT_SECRET }}\"
          yarn deploy $STACK --auto-approve  

暂存环境保护规则配置:

我一直在关注官方 GitHub 文档,但没有找到任何针对这种情况的具体内容,知道上面的 yaml 中应该修复什么吗?

    标签: github github-actions github-enterprise


    【解决方案1】:

    根据您的上一个屏幕截图,main 分支上的推送事件将被允许使用Staging 环境。

    我也一直在玩环境,并且有自己的问题,这将我引向您的问题!

    我的建议是删除分支保护,然后使用工作流逻辑来调用特定的环境:

    on:
      push:
        branches: [main]
        tags:
        - 'r*'
      pull_request:
    
    jobs:
      ci:
        if: startsWith(github.ref_name, 'r*') || github.ref_name == 'main' 
        runs-on: ubuntu-latest
        environment: Staging
        steps:
          ...
    

    【讨论】:

      猜你喜欢
      • 2014-02-16
      • 1970-01-01
      • 1970-01-01
      • 2013-02-28
      • 2023-02-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-08-09
      相关资源
      最近更新 更多