我正在设置 github 操作,需要将默认值传递到工作目录而不是硬编码,但似乎我无法从输入变量中读取实际值,请告诉我哪里出了问题。
name: Test
on:
workflow_dispatch:
inputs:
ENVIRONMENT:
default: development
type: string
PATH:
default: test
type: string
defaults:
run:
shell: bash
working-directory: ${{ github.event.inputs.PATH }} # ${{ inputs.PATH}} none worked
jobs:
job1:
runs-on: ubuntu-latest
steps:
- name: Run Commands with various variables
run: |
echo "Hello World"
echo "${{ inputs.ENVIRONMENT}}/${{ inputs.APPNAME }} "
正如上面评论中jonrsharpe所分享的,根据GitHub官方文档
您可以使用 defaults.run 为工作流中的所有运行步骤提供默认 shell 和工作目录选项。您还可以设置仅适用于作业的运行默认设置。有关更多信息,请参阅 jobs.
.defaults.run。 您不能在此关键字中使用上下文或表达式。
现在,另一种方法是在工作流程级别设置环境变量,并在所有工作流程作业
defaults.run
配置中使用它(您也可以直接在作业 ${{ inputs.PATH }}
配置中使用 defaults.run.workking-directory
)
示例:
name: Test
on:
workflow_dispatch:
inputs:
ENVIRONMENT:
default: development
type: string
PATH:
default: test
type: string
env:
PATH: ${{ inputs.PATH }}
jobs:
job1:
runs-on: ubuntu-latest
defaults:
run:
shell: bash
working-directory: ${{ env.PATH }} # could use directly ${{ inputs.PATH }} here
steps:
- name: Run Commands with various variables
run: |
echo "Hello World"
echo "${{ inputs.ENVIRONMENT}}/${{ inputs.PATH }} "
请注意,如果您不通过输入告知有效的working-directory
,工作流程将会中断,因为您还无权访问
github.workspace
路径(不使用actions/checkout
)
参考资料: