当前位置: 首页 > ds >正文

( 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 文件


# 工作流名称,在 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: 配置 Pythonuses: actions/setup-python@v5with:python-version: '3.9'  # 使用 Python 3.9# 步骤3:安装依赖(如果有 requirements.txt)- name: 安装依赖run: |if [ -f requirements.txt ]; thenpip3 install -r requirements.txtfi# 步骤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_*.csvgit 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

  • 小问题,就是麻烦。

希望对大家有帮助。

http://www.xdnf.cn/news/13907.html

相关文章:

  • 运营商实名验证接口如何用Python实现调用?
  • 新疆大学具身导航新范式!DOPE:基于双重对象感知增强网络的视觉语言导航
  • golang -- map实现原理
  • 单片机队列功能模块的实战和应用
  • Elasticsearch的数据同步
  • 在线机考|2025年华为暑期实习春招秋招编程题(最新)——第2题_网络整改
  • 基于mapreduce的气候分析系统
  • Dify实战案例:AI邮件批量发送器!
  • Unit 3 Q-Learning 简介
  • 06-Python流程控制
  • [论文阅读] 人工智能 | ComfyUI-R1: Exploring Reasoning Models for Workflow Generation
  • JDBC接口开发指南
  • kali系统 windows Linux靶机入侵演练
  • 《Qt5.14.1与Mingw C++:打造可发布程序的技术之旅》
  • 实时监控、秒级决策:镜舟科技如何重塑融资融券业务数据处理模式
  • @SchedulerLock处理Spring Task在分布式环境下的重复执行问题
  • Transformer模型详解
  • leetcode 169. 多数元素
  • 数据结构-为什么双指针法可以用来解决环形链表?-使用O(1)的空间复杂度去解决环形链表的思路
  • React 基础状态管理方案
  • 基于Orange Pi Zero3的音频管理系统搭建与远程访问实现
  • ⭐ Unity 实现屏幕涟漪效果:自动生成 \ 点击交互生成涟漪
  • F5深化与Red Hat战略合作 ,赋能企业AI规模化安全部署
  • 开源综合性网络安全检测和运维工具-TscanClient
  • pikachu靶场通关笔记26 SQL注入09-时间盲注(base on time)
  • Python打卡训练营-Day29-复习日:类的装饰器
  • dify的知识库的父子分段和通用分段的对比
  • { C++ } —— string类的使用
  • 1年从零通过CISSP!
  • Day52 Python打卡训练营