如何在GitHub Actions的push触发器中定义输入变量?
GitHub Actions Push事件不能设inputs?这么解决
为啥报错?
push这类自动触发的事件(比如pull_request、定时任务schedule)不支持inputs字段,这个字段专门给手动触发的场景用——比如手动启动工作流的workflow_dispatch,或者调用其他工作流的workflow_call。你硬在push下面加inputs,肯定过不了GitHub的Schema校验,变量传空字符串也正常。
替代办法
1. 直接用环境变量存默认值
如果不需要手动修改参数,只是要一个固定默认值,直接在工作流或作业里定义env就行:
name: Main on: push: branches: - main - <other branch> env: DATABASE_VERSION: abcd # 全局默认值 jobs: build: runs-on: ubuntu-latest steps: - name: 输出数据库版本 run: echo "数据库版本: $DATABASE_VERSION"
2. 同时支持自动+手动触发
要是想兼顾两种场景:push自动触发用默认值,手动触发时能自定义参数,那就同时声明push和workflow_dispatch事件,把inputs放到workflow_dispatch下面,然后在作业里做个判断赋值:
name: Main on: push: branches: - main - <other branch> workflow_dispatch: inputs: database_version: type: string required: true default: abcd jobs: build: runs-on: ubuntu-latest env: # 自动触发用默认值,手动触发用传入的参数 DATABASE_VERSION: ${{ github.event.inputs.database_version || 'abcd' }} steps: - name: 输出数据库版本 run: echo "数据库版本: $DATABASE_VERSION"
这样push触发时用默认的abcd,手动启动工作流时可以自己改参数。
3. 用仓库全局变量
如果这个变量要在多个工作流里复用,或者不想把默认值写在工作流文件里,去仓库的「Settings → Secrets and variables → Variables」里加个DATABASE_VERSION变量,然后在工作流里直接引用:
name: Main on: push: branches: - main - <other branch> jobs: build: runs-on: ubuntu-latest steps: - name: 输出数据库版本 run: echo "数据库版本: ${{ vars.DATABASE_VERSION }}"
内容的提问来源于stack exchange,提问作者Aviral Srivastava
相关产品推荐
相关产品推荐

