我已经在 GitHub Actions 上工作了一段时间了,我们已经制定了指定的工作流程。工作流程是用 yaml 编写的。
我正在尝试放一些if
的条件为github.ref
并且 yaml 的该块在运行时被跳过。
这意味着 - 如果针对 X 分支提出拉取请求 - 该代码块应该运行。
像这样的事情:
- name: Branch name check - Running only for DEV branch..
if: ${{contains(github.ref, 'DEV*')}}
uses: mathrix-education/sonar-scanner@master
with:
version: 4.2.0.1873 # required
typescript: false
scan: true
谁能帮我解决这个问题吗?
我们在构建 github 工作流程时遇到了类似的事情。我们的工作条件:
- 我们希望步骤 1 仅在要开发的推送或拉取请求上运行。
- 我们希望步骤 2 只在 master 的拉取请求上运行。
- 步骤必须位于单个工作流.yaml 中。
经过一番研究,我们得出以下结论。我发现 Github Actions 非常灵活,有很多 Gitlab 和 Bitbucket 没有的选项。但这也是缺点,有时会使其理解起来更加复杂。
---
name: my-workflow
on:
push:
branches:
- develop
pull_request:
branches:
- develop
- main
types:
- closed
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- name: checkout repo
uses: actions/checkout@v1
- name: step 1
if: github.ref == 'refs/heads/develop' || github.event.pull_request.base.ref == 'develop'
run: echo "Hello develop"
- name: step 2
if: github.event.pull_request.base.ref == 'master'
run: echo "Hello master"
我建议不要在分支上过于频繁地使用 if 语句。这会导致不同分支的部署之间不一致。对于某些用例,您可能最好使用github环境 https://docs.github.com/en/actions/deployment/targeting-different-environments/using-environments-for-deployment(仅限企业)。例如,如果您需要为不同的分支设置不同的环境变量或秘密。下面是一个简单的示例,您可以有两个 github 环境(开发环境和主环境),两者都包含不同的 MY_SECRET 秘密值。
name: my-workflow
on:
push:
branches:
- develop
- main
jobs:
deploy:
runs-on: ubuntu-latest
name: Do something
steps:
- run: echo "Example using environments corresponding branch names"
environment: ${{ github.ref == 'refs/heads/main' && 'main' || github.ref == 'refs/heads/develop' && 'develop' }}
env:
MY_SECRET: ${{ secrets.MY_SECRET }}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)