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

查找GitHub组织中仍使用Node 12的GitHub Actions工作流

批量找出GitHub组织里用Node 12的工作流

给你两个不用手动挨个查的实用方案:

方案一:用GitHub CLI写脚本扫描

先确保你装了GitHub CLI并完成登录(执行gh auth login),然后用下面的shell脚本(适配Linux/macOS,Windows可改成PowerShell版本):

ORG_NAME="你的组织名称"

# 拉取组织下所有仓库并逐个遍历
gh repo list $ORG_NAME --limit 1000 --json name --jq '.[].name' | while read repo; do
  # 筛选仓库内的所有工作流文件
  gh repo view $ORG_NAME/$repo --json files --jq '.files[] | select(.path | startswith(".github/workflows/") and (endswith(".yaml") or endswith(".yml"))) | .path' | while read workflow_path; do
    # 解码工作流文件内容,检查是否存在Node 12相关配置
    gh api repos/$ORG_NAME/$repo/contents/$workflow_path --jq '.content' | base64 --decode | grep -qE 'node-version:.*12|uses:.*actions/setup-node@v2'
    if [ $? -eq 0 ]; then
      echo "⚠️ 仓库: $ORG_NAME/$repo,工作流: $workflow_path 可能在使用Node 12"
    fi
  done
done

这个脚本会自动遍历组织内所有仓库,只要工作流文件里明确指定了Node 12,或者用了默认搭载Node 12的actions/setup-node@v2,就会输出对应的仓库和工作流路径。

方案二:用Python脚本调用GitHub API

如果需要更灵活的排查逻辑(比如要检查工作流运行时的官方警告),可以用以下Python脚本:

import requests
import base64

# 替换为你的组织名和GitHub个人访问令牌(令牌需要repo权限)
ORG_NAME = "你的组织名称"
TOKEN = "你的GitHub个人访问令牌"

headers = {"Authorization": f"token {TOKEN}"}

# 拉取组织下所有仓库(处理分页)
repo_url = f"https://api.github.com/orgs/{ORG_NAME}/repos?per_page=100"
all_repos = []
while repo_url:
    resp = requests.get(repo_url, headers=headers)
    all_repos.extend(resp.json())
    repo_url = resp.links.get('next', {}).get('url')

for repo in all_repos:
    repo_full_name = repo['full_name']
    # 获取仓库内的工作流文件列表
    workflows_url = f"https://api.github.com/repos/{repo_full_name}/contents/.github/workflows"
    try:
        resp = requests.get(workflows_url, headers=headers)
        workflows = resp.json()
        for workflow in workflows:
            if workflow['name'].endswith(('.yaml', '.yml')):
                # 解码工作流文件内容
                content = base64.b64decode(workflow['content']).decode('utf-8')
                # 检查Node 12相关配置
                if 'node-version: 12' in content or 'actions/setup-node@v2' in content:
                    print(f"⚠️ {repo_full_name} 中的 {workflow['name']} 可能使用Node 12")
    except Exception as e:
        print(f"处理仓库 {repo_full_name} 时出错:{str(e)}")

要是你还想排查工作流运行时的官方警告(比如“Node.js 12 is no longer supported”),可以在脚本中添加逻辑:获取每个工作流的最新运行记录,拉取日志内容并搜索警告关键词。不过这种方法速度会慢一些,因为需要加载大量日志数据。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 05:44:57