GitHub Actions:空输入条件判断失效问题(多阶段Docker构建)
解决GitHub Actions自动触发时多阶段Docker镜像构建步骤被跳过的问题
问题出在你对inputs对象的判断逻辑上——非手动触发(如push、PR、发布)时,inputs对象本身是存在的,只是未设置Stage参数,所以!inputs这个条件永远为false,导致自动触发时步骤因不满足条件被跳过。
修改if条件即可解决,你需要针对自动触发的场景(此时inputs.Stage未定义)添加判断,同时保留手动触发时的参数校验:
修正后的步骤配置
- name: Build and Push Image - Server uses: docker/build-push-action@v6 if: ${{ inputs.Stage == null || inputs.Stage == 'all' || inputs.Stage == 'server' }} with: platforms: linux/arm64 push: true file: Dockerfile target: server tags: ${{ env.SERVER_IMAGE_TAG }}
另一种更清晰的写法(结合触发事件)
如果你想明确区分手动触发和自动触发场景,也可以通过github.event_name判断:
- name: Build and Push Image - Server uses: docker/build-push-action@v6 if: ${{ github.event_name != 'workflow_dispatch' || inputs.Stage == 'all' || inputs.Stage == 'server' }} with: platforms: linux/arm64 push: true file: Dockerfile target: server tags: ${{ env.SERVER_IMAGE_TAG }}
两种写法的效果一致:
- 自动触发(push、PR等)时,直接执行该构建步骤
- 手动触发时,仅当
Stage参数为all或server时才执行
内容的提问来源于stack exchange,提问作者Excalibur
相关产品推荐
相关产品推荐

