( 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

  • 小问题,就是麻烦。

希望对大家有帮助。

相关推荐
隔壁小白3 小时前
Laravel模板Blade 用法 x-layouts.guest 和x-guest-layout 什么区别
github·laravel
创实信息5 小时前
软件开发 | 从 Azure DevOps迁移至GitHub企业版的最佳路径
ai·github·azure·devops
qianmoQ6 小时前
GitHub 趋势日报 (2025年06月12日)
github
国际云,接待14 小时前
AWS S3:云存储的“超级基石”
服务器·网络·人工智能·github·aws·亚马逊
寻月隐君14 小时前
手把手教你用 Solana Token-2022 创建支持元数据的区块链代币
后端·web3·github
MinIO官方账号17 小时前
AIStor 的模型上下文协议 (MCP) 服务器:管理功能
运维·服务器·github
A-wliang21 小时前
深入解析 GitHub Token 与 NPM Token:自动化发布的完整指南
npm·自动化·github
滴答滴答嗒嗒滴21 小时前
GitHub Actions 深度实践:零运维搭建 CI/CD 流水线
运维·ci/cd·github
Jooolin1 天前
【编程史】Gitee是啥?它和GitHub关系是什么?
git·github·ai编程