( github actions + workflow 03 ) 手动添加 token, 防止权限不够

1. 起因, 目的:

  • 建议都添加 token, 防止权限不够,报错 403
  • 这事情原因很简单,但是操作很麻烦, 因为需要手动点击,找到各种按钮的位置。
  • 这种事情,第一次比较麻烦,做过一遍, 有个模板,下次会很快。

2. 先看效果

报错的地方

修复之后,一切正常,能自动运行!

3. 过程:

问题背景

在使用 GitHub Actions 时,可能会遇到权限不足导致的 403 错误。这通常是因为默认的 GITHUB_TOKEN 权限限制或者 API 访问限制导致的。

解决方案

1. 创建个人访问令牌(Personal Access Token)

申请一个 token, 放在常用的地方。

2. 在仓库中添加密钥

  1. 进入需要配置的仓库
  2. 点击 SettingsSecrets and variablesActions
  3. 点击 New repository secret
  4. 添加新密钥:
    • Name: PAT (或其他易记的名称)
    • Value: 粘贴之前生成的个人访问令牌
    • 点击 Add secret

3. 在 Workflow 中使用令牌

我的 workflow 文件

yaml 复制代码
# 工作流名称,在 GitHub Actions 界面显示
name: 爬虫自动化

# 触发条件:每5分钟运行一次,或手动触发

# - cron: '0 */5 * * *'  #  每5个小时触发一次
# - cron: '*/5 * * * *'  # 每5分钟触发
# - cron: '0 4 * * *'    #  每天中午12点触发一次

on:
  schedule:
    - cron: '0 */2 * * *'  #  每2个小时触发一次
  workflow_dispatch:      # 支持手动触发,方便测试

# 新增!允许推送代码更改
permissions:
  contents: write          # 允许推送代码更改

# 定义任务
jobs:
  run-crawler:
    # 使用最新的 Ubuntu 环境
    runs-on: ubuntu-latest

    # 执行步骤
    steps:
      # 步骤1:拉取仓库代码
      - name: 拉取代码
        uses: actions/checkout@v4

      # 步骤2:设置 Python 环境
      - name: 配置 Python
        uses: actions/setup-python@v5
        with:
          python-version: '3.9'  # 使用 Python 3.9

      # 步骤3:安装依赖(如果有 requirements.txt)
      - name: 安装依赖
        run: |
          if [ -f requirements.txt ]; then
            pip3 install -r requirements.txt
          fi

      # 步骤4:打印当前时间,方便调试
      - name: 打印运行时间
        run: echo "now is >>> $(date)"

      # 步骤5:运行爬虫脚本
      - name: 运行爬虫
        run: python3 news_spider/peng_pai_02.py

      # 步骤6:提交生成的 CSV 文件到仓库
      - name: 提交 CSV 文件
        if: success()
        env:
          MY_GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
        run: |
          git config --global user.name "github-actions[bot]"
          git config --global user.email "github-actions[bot]@users.noreply.github.com"
          git add csv_data/peng_pai_news_*.csv
          git commit -m "添加新爬虫数据: peng_pai_news_$(date +%Y%m%d_%H%M%S).csv" || echo "没有新文件提交"
          git push https://x-access-token:${GITHUB_TOKEN}@github.com/${{ github.repository }} HEAD:${{ github.ref_name }}

4. 结论 + todo

  • 小问题,就是麻烦。

希望对大家有帮助。

相关推荐
老马啸西风1 小时前
v0.29.1 敏感词性能优化之内部类+迭代器内部类
性能优化·开源·nlp·github·敏感词
杨杨杨大侠3 小时前
第5章:实现Spring Boot集成
java·github·eventbus
杨杨杨大侠3 小时前
第6章:高级特性与性能优化
java·github·eventbus
HelloGitHub3 小时前
这款开源调研系统越来越“懂事”了
前端·开源·github
ruanCat3 小时前
配置 github workflow 工作流文件,实现仓库自动更新 github page 站点
github
绝无仅有4 小时前
面试总结之Nginx 经验常见问题汇总第二篇
后端·面试·github
绝无仅有5 小时前
面试实战总结之Nginx配置经验第一篇
后端·面试·github
掘金安东尼5 小时前
Chrome 17 岁了——我们的浏览器简史
前端·javascript·github
至善迎风15 小时前
版本管理系统与平台(权威资料核对、深入解析、行业选型与国产平台补充)
git·gitee·gitlab·github·svm
fengfuyao98516 小时前
诊断并修复SSH连接Github时遇到的“connection closed“错误
运维·ssh·github