本地用act运行GitHub Pages部署时遇ACTIONS_ID_TOKEN_REQUEST_URL缺失错误
解决act本地运行时无法获取ACTIONS_ID_TOKEN_REQUEST_URL的问题
问题原因
act作为本地GitHub Actions模拟器,默认不会模拟GitHub官方的OIDC令牌服务。线上环境自动生成的ACTIONS_ID_TOKEN_REQUEST_URL、ACTIONS_ID_TOKEN_REQUEST_TOKEN等核心环境变量,在本地act环境中不会自动生成——哪怕你已经配置了id-token: write权限和GITHUB_TOKEN,也无法触发这些变量的创建。
解决方案
1. 手动注入OIDC相关环境变量
从GitHub线上Workflow的运行日志中提取真实的OIDC变量值,添加到本地环境或act命令中:
- 先在GitHub线上运行一次你的deploy workflow,在任意步骤中加入
run: env | grep ACTIONS_ID_TOKEN命令,获取ACTIONS_ID_TOKEN_REQUEST_URL和ACTIONS_ID_TOKEN_REQUEST_TOKEN的具体值 - 将这两个变量添加到你的
.env文件,或者直接在act命令中通过--env参数传入:act -j build-and-deploy -W .github/workflows/deploy_frontend.yml --secret-file /home/noams/src/personal_website/frontend/.secrets_frontend --env-file /home/noams/src/personal_website/frontend/.env --env ACTIONS_ID_TOKEN_REQUEST_URL="你的线上URL值" --env ACTIONS_ID_TOKEN_REQUEST_TOKEN="你的线上TOKEN值" --artifact-server-path /tmp/artifacts
注意:这类变量有效期有限,过期后需要重新从线上日志获取。
2. 使用act的OIDC模拟插件(适合测试场景)
如果不需要真实令牌,仅做功能测试,可借助社区维护的本地OIDC模拟服务:
- 启动本地OIDC模拟容器:
docker run -p 8080:8080 ghcr.io/nektos/act-oidc-provider:latest - 在act命令中添加指向该服务的参数:
act -j build-and-deploy -W .github/workflows/deploy_frontend.yml --secret-file /home/noams/src/personal_website/frontend/.secrets_frontend --env-file /home/noams/src/personal_website/frontend/.env --oidc-provider http://localhost:8080 --artifact-server-path /tmp/artifacts
该方式会生成模拟的OIDC令牌,满足本地流程测试需求。
3. 升级act到最新版本
旧版本act对id-token: write权限的支持存在缺陷,执行以下命令更新:
# 查看当前版本 act --version # Homebrew安装的用户执行升级 brew upgrade act # 其他安装方式请参考act官方文档更新
4. 验证GITHUB_TOKEN权限
确认.secrets_frontend中的GITHUB_TOKEN确实拥有id-token: write权限,可通过简单命令验证:
curl -H "Authorization: token 你的GITHUB_TOKEN值" https://api.github.com/user
内容的提问来源于stack exchange,提问作者Gulzar
相关产品推荐
相关产品推荐

