Kei*_*h C 3 github-actions github-actions-self-hosted-runners
我们有两个运行程序,一个用于运行生产作业,另一个用于运行非生产作业,但我无法使用工作流程级别环境变量来做到这一点。
以下是我所拥有的:
name: Workflow file
on:
workflow-dispatch
env:
RUNNER_NAME: ${{ contains(github.ref, 'main') && 'Prod Runner' || 'non-Prod Runner' }}
jobs:
job-run:
runs-on: [${{ env.RUNNER_NAME }}]
needs: ...
steps:
..........
Run Code Online (Sandbox Code Playgroud)
我收到以下错误消息:
工作流程文件无效
You have an error in your yaml syntax on line ###
Run Code Online (Sandbox Code Playgroud)
我该怎么做呢?我不想为产品和非产品工作流程提供单独的工作流程文件。
对于您可以在这个Github Actions ISSUE上检查的内容,似乎不可能在工作字段env上使用本机变量runs-on(还?)。
但是,如果您在上一个作业中将变量配置为输出,则有一个解决方法,这样您就可以在以后使用它。
例子: runs-on: ${{ needs.setup.outputs.runner }}
在您的情况下,工作流程将如下所示:
on:
workflow_dispatch:
jobs:
setup:
runs-on: ubuntu-latest
outputs:
runner: ${{ steps.step1.outputs.runner }}
steps:
- name: Check branch
id: step1
run: |
if [ ${{ github.ref }} == 'refs/heads/main' ]; then
echo "runner=ubuntu-latest" >> $GITHUB_OUTPUT
else
echo "runner=macos-latest" >> $GITHUB_OUTPUT
fi
job1:
needs: [setup]
runs-on: ${{ needs.setup.outputs.runner }}
steps:
- run: echo "My runner is ${{ needs.setup.outputs.runner }}" #ubuntu-latest if main branch
Run Code Online (Sandbox Code Playgroud)
我在这里做了一个测试,如果你想看一下:
| 归档时间: |
|
| 查看次数: |
5546 次 |
| 最近记录: |