You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

求助:基于Web查询结果跳过GitHub Actions后续任务配置失效

问题分析和修复方案

第一个坑:脚本输出被强行覆盖

你写的Check Previous Build步骤里,就算HTTP状态码符合200-299的条件,最后一行还是会执行echo "previous_build=false" >> $GITHUB_OUTPUT,直接把之前设的true给冲没了,结果输出永远是false,后续任务的判断自然失效。

第二个坑:needs引用搞错了名字

主Workflow里你写的是needs.check_previous_build.outputs.previous_build,但你的Job名字是check-previous-build(用横杠分隔的),needs后面得跟Job的名字,不是步骤的ID,所以正确的写法是needs.check-previous-build.outputs.previous_build。

第三个坑:条件写反了

你要的是“返回200时跳过后续任务”,也就是当previous_build是true的时候,不运行bundle-install。但原配置里的if条件是等于true才运行,正好搞反了。


改完后的配置

先改check-previous-build.yml里的脚本

改成if-else结构,保证只设一次输出:

- name: Check Previous Build
  id: check_previous_build
  run: |
    sha=$(git show HEAD --format=%T -q)
    url=http://example.com/check?id=${sha}
    echo "Checking $url .."
    status_code=$(curl -s -o /dev/null -w "%{http_code}" $url)
    if [[ $status_code -ge 200 && $status_code -le 299 ]]; then
      echo -e "\x1B[32m✅ Build has previously completed  \x1B[0m"
      echo "previous_build=true" >> $GITHUB_OUTPUT
    else
      echo "previous_build=false" >> $GITHUB_OUTPUT
    fi

再改主Workflow的条件判断

修正needs引用和判断逻辑:

jobs:
  check-previous-build:
    uses: ./.github/workflows/check-previous-build.yml

  bundle-install:
    uses: ./.github/workflows/deps-bundle-install.yml
    secrets: inherit
    needs:
      - check-previous-build
    if: ${{ needs.check-previous-build.outputs.previous_build == 'false' }}

这么改完之后,当HTTP状态码在200-299之间时,previous_build会被设为true,bundle-install任务会因为不满足条件直接跳过(不会失败,就是显示“skipped”状态);状态码不对的时候,任务就正常跑起来了。

内容的提问来源于stack exchange,提问作者Neil Middleton

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 07:35:36