最近在折腾 RSS 订阅更新,用到了 GitHub Actions。写了一个定时任务部署上去,一直报错,卡了好几个小时,记录一下解决方案。
问题
定时任务到时间才会触发,先用 push 触发来进行测试。Actions 的脚本:
name: fetch rss scriptions
on:
push:
branches:
- main
env:
TZ: Asia/Shanghai
jobs:
build:
name: fetch rss post
runs-on: ubuntu-latest
steps:
- name: checkout actions
uses: actions/checkout@v4
- name: Set up Python 3.9
uses: actions/setup-python@v2
with:
python-version: 3.9
- name: fetch post list
run: |
python feed_parse.py
- name: commit
env:
GITHUB_REPO: github.com/lozhu20/my-blog-source
run: |
git config --global user.name lozhu20
git config --global user.email [email protected]
git add .
git commit -m "feed parse schedule task"
git pull --rebase
git push "https://${{ secrets.HEXO_BLOG_DEPLOY_KEY }}@$GITHUB_REPO" main:main
内容很简单,就是在每次 push 的时候执行一个 python 脚本,然后变更文件提交到 main 分支上。
报错信息:
▶️ Run git config --global user.name lozhu20
[main 7686805] feed parse schedule task
2 files changed, 1823 insertions(+), 47 deletions(-)
create mode 100644 tmp.xml
Current branch main is up to date.
remote: Write access to repository not granted.
fatal: unable to access 'https://github.com/lozhu20/my-blog-source/': The requested URL returned error: 403
提示没有写入权限。
解决方案
一直以为是脚本里的仓库名称、分支或者 URL 不对,或者是生成的 key 的权限问题,网上搜了半天发现还需要给授权仓库写入权限:
repo > settings > Actions > General > Workflow permissions
这个地方默认选择是:Read repository contents and packages permissions
需要勾选:Read and Write permissions
授权之后,再重新提交触发 Actions,就是舒心的绿色 ✅ 了!
参考: Github Actions - Write access to repository is not granted