[英]Parameterize `runs-on` value for GitHub action
我有這個 GitHub 工作流程,我需要對運行的跑步者進行參數化。 所以在我嘗試的 YAML 文件中:
# ...
jobs:
process:
name: Process
runs-on: ${{ secrets.GH_RUNNER_TAG }}
# ...
但是,我收到此錯誤:
The workflow is not valid. .github/workflows/action.yml (Line: 12, Col: 14): Unrecognized named-value: 'secrets'. Located at position 1 within expression: secrets.GH_RUNNER_TAG
這個元素不能使用秘密注入嗎? 還有其他選擇嗎? 該值不需要保密,但我需要將它放在一個地方,而不是每次運行器標簽更改時都編輯數百個 YAML 文件......
EDIT1:正如GuiFalourd
建議的那樣,我已經嘗試在工作流級別創建一個環境變量來保存秘密:
env:
RUNNER_LABEL: ${{ secrets.GH_RUNNER_TAG }}
jobs:
analyze:
name: Analyze
runs-on: $RUNNER_LABEL
它不起作用。 動作卡住了。 我嘗試使用:
$RUNNER_LABEL -> 卡住了 "$RUNNER_LABEL" -> 也卡住了 ${{ env.RUNNER_LABEL }} -> 動作沒有開始,輸出錯誤:
The workflow is not valid. .github/workflows/action.yml (Line: 14, Col: 14): Unrecognized named-value: 'env'. Located at position 1 within expression: env.RUNNER_LABEL
此外,我檢查了 env var 是否已正確分配,方法是為runs-on
放置一個有效的硬編碼值並將第一步設置為:
steps:
- name: Test
run: echo "$RUNNER_LABEL"
這會產生“***”——證明 GitHub 已自動輸出並編輯了一個秘密。
這可以使用可重用工作流來實現,方法是配置“被調用”工作流以接受來自調用者的輸入。
我們可以將其命名為“進程”的主管道將使用共享代碼庫/管道,我們稱之為“通用”,它可以接受輸入,其中一個輸入可以是runs-on
值。
例如
# common.yml
name: parameterized job
on:
workflow_call:
inputs:
runner:
required: true
type: string
jobs:
common:
name: Common
runs-on: ${{ inputs.runner }}
steps:
- run: echo "Hello World"
# process.yml
name: process
on:
push:
jobs:
process:
uses: username/repo/.github/workflows/common.yml@branch
with:
runner: machine_with_specific_label # using ${{ env.MY_RUNNER_LABEL }} is possible as well
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.