【版本控制】GitHub图床服务Action---自动监视图床仓库的目录下的文件数

这篇具有很好参考价值的文章主要介绍了【版本控制】GitHub图床服务Action---自动监视图床仓库的目录下的文件数。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

前言

最近突然想起年前图床仓库发生的一个遗留问题:由于我的网络图床服务是Github + Typora的形式,本地的图片会自动转义成网络图片并存储在图床仓库下,一般我们会指定一个目录进行图片存储,但是由于GitHub设定的单个目录最大存储文件数不能超过1000.

所以在注意到这件事的情况下GitHub的图床仓库就发生了问题:新加入的图片文件由于没有文件位,会自动代替旧的图片文件,这就导致了部分文件的丢失,所以这里想写一个GitHub仓库的自动化Action,每天检测仓库下每个目录下的文件个数,超过999个文件自动给GitHub默认绑定的邮箱发送信息提醒。

具体流程

当每天自动检测仓库中每个目录中的文件数量,并且如果超过999个文件时,自动向与GitHub账户关联的默认邮箱发送消息。

1. 创建GitHub工作流文件

在GitHub仓库中,转到.github/workflows目录并创建一个新文件,比如file_count.yml。该文件将定义运行自动化操作的工作流。

2. 定义工作流

file_count.yml文件中,添加以下代码:

name: File Count Reminder

on:
  schedule:
    - cron: "0 0 * * *" # Runs every day at midnight UTC

jobs:
  count-files:
    runs-on: ubuntu-latest

    steps:
      - name: Check out code
        uses: actions/checkout@v2

      - name: Set up Python
        uses: actions/setup-python@v2
        with:
          python-version: '3.10' # Replace with the desired Python version

      - name: Count files and send email
        run: |
          pip install -r requirements.txt
          python send_email.py ${{ secrets.GITHUB_TOKEN }}

3. 创建requirements.txt文件

在GitHub仓库中创建一个名为requirements.txt的文件,并将以下内容添加到文件中:

smtplib

4. 创建send_email.py文件

在GitHub仓库中创建一个名为send_email.py的文件,并将以下代码添加到文件中:

import os
import smtplib
from email.mime.text import MIMEText
from email.header import Header

def count_files(directory):
    file_count = 0
    for root, dirs, files in os.walk(directory):
        file_count += len(files)
    return file_count

def send_email(github_token, recipient, file_count):
    smtp_server = 'smtp.gmail.com'
    smtp_port = 587

    subject = 'File Count Reminder'
    content = f'The repository has {file_count} files.'

    message = MIMEText(content, 'plain', 'utf-8')
    message['From'] = Header('GitHub Action')
    message['To'] = Header(recipient)
    message['Subject'] = Header(subject)

    try:
        server = smtplib.SMTP(smtp_server, smtp_port)
        server.starttls()
        server.login('githubaction@gmail.com', github_token)
        server.sendmail('githubaction@gmail.com', recipient, message.as_string())
        server.quit()
        print("Email reminder sent to", recipient)
    except Exception as e:
        print("Failed to send email:", str(e))

repository_path = '.'  # Replace with the path to your repository if needed
file_limit = 999

file_count = count_files(repository_path)
if file_count > file_limit:
    github_token = os.environ.get('INPUT_GITHUB_TOKEN')
    default_email = os.environ.get('GITHUB_ACTOR') + '@users.noreply.github.com'

    send_email(github_token, default_email, file_count)
else:
    print("The repository has", file_count, "files. No reminder needed.")

使用这些步骤,工作流将每天UTC时间午夜运行,计算仓库中的文件数量,如果文件数量超过999,则会向与GitHub账户关联的默认邮箱发送邮件提醒。文章来源地址https://www.toymoban.com/news/detail-466318.html

到了这里,关于【版本控制】GitHub图床服务Action---自动监视图床仓库的目录下的文件数的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • github action初体验实现maven项目自动ci test

    这里是 weihubeats ,觉得文章不错可以关注公众号 小奏技术 ,文章首发。拒绝营销号,拒绝标题党 GitHub Actions是GitHub提供的一种持续集成/持续交付(CI/CD)工具,它可以帮助开发者自动化软件开发流程中的各种任务,如构建、测试、部署等。通过在代码仓库中配置和定义工作流

    2024年01月23日
    浏览(39)
  • github-action+docker实现项目可持续自动化部署

    这篇文章以部署vue3项目和nuxt2项目为例结合 github-action , docker , nginx 等介绍不同的项目自动部署流程 部署vue3项目 步骤: 1、腾讯云开启镜像仓库 2、github配置secrets 3、项目根目录创建dockerfile文件(在action工作流中创建镜像) 4、github配置action工作流(yml文件) 上面步骤执行结

    2024年04月26日
    浏览(42)
  • 超简单:github-action自动化发布npm包小记

    打开npm官网,并注册自己的npm账号 1.登录npm官网,登录成功后,点开右上角头像,并点击Access Tokens选项 2.点开Generate New Token下拉框,点击Classic Token(和Granular Access Token有什么区别,请自行查验?) 3.填写token信息,选择token类型为Automation(可以避免2FA校验),保存申请的token信息

    2024年02月05日
    浏览(38)
  • 【Github-Action】自动为PR添加修改文件类型的label

    如果你对github-action感兴趣,还可以看这篇文章, 这篇文章教会你如何开发Github Action,并且让你明白它是什么,怎么用,如何做到的。如何开发一个action pr-label自动添加工具,为您添加核心团队提交的标志和修改的文件类型… 可以从的pr列表中一眼辨别哪些是核心团队开发的

    2024年01月25日
    浏览(56)
  • vitepress项目使用github的action自动部署到github-pages中,理论上可以通用所有

    .githubworkflowsdeploy.yml 完整的代码:使用的是 pnpm 进行依赖安装。 这段 YAML 文件定义了一个 GitHub Actions 工作流,用于在推送到 docs 分支时构建和部署 VitePress 项目。 on : 定义触发工作流的事件,这里是在推送到 docs 分支时触发。 jobs : 定义工作流中的任务。 build-and-deploy : 任务

    2024年01月17日
    浏览(49)
  • github私有仓库开发,公开仓库发布版本

    github私有仓库开发,公开仓库发布版本,既可以保护源代码,又可以发布版本给用户使用。许多知名软件项目都采用了这样的开发模式。 总体思路是开发和发布分离。 官方文档: https://docs.github.com/en/repositories/releasing-projects-on-github/about-releases 中文:https://docs.github.com/zh/reposit

    2024年02月04日
    浏览(34)
  • Git (版本控制,git安装和配置,git代码托管服务,git操作本地远程仓库,分支,idea整合git)【看这一片就够】

    目录 一、版本控制介绍 1. 版本控制介绍 2. 版本控制工具 3. git简介 二、git安装与配置 1. 下载git 2. 安装git 2. 配置git 三、git代码托管服务 1. 常见的git代码托管服务 2. 注册码云帐号【这里介绍一种的用法,其它也是一样的操作】 3. 创建远程仓库 四、git命令-操作本地仓库 1. 获

    2024年04月14日
    浏览(80)
  • Github拉取老版本或releases稳定版本的仓库

    方法一:clone 随便进入一个仓库,查看分支信息 针对要拉取的分支版本,输入下面的指令: 以dev为例: 进入到这个 doctest 目录里面,发现我们已经处于 dev 分支下了,说明已经把该分支拉下来了 方法二:checkout 针对在本地已有远程仓库的项目,想要切换到其它分支,可以使

    2024年02月09日
    浏览(35)
  • 获取 github 仓库最新版本号和版本号列表的 API

    github 仓库,获取指定项目的最新版本号和所有版本号列表的两个API如下: 获取最新发布的一个的版本信息 以 fatedier/frp 项目为例,对应的 API 地址为 https://api.github.com/repos/fatedier/frp/releases/latest 所有版本信息 以 fatedier/frp 项目为例,对应的 API 地址为 https://api.github.com/repos/f

    2024年02月13日
    浏览(61)
  • 自动拉取 GitHub 仓库更新的脚本

    更好的阅读体验 huge{color{red}{更好的阅读体验}} 更好的阅读体验 由于将 HAUE-CS-WIKI 部署到了我自己的服务器上作为国内镜像站,每次在源站更新后都需要手动拉取镜像站的更新实在是太麻烦了,因此产生了编写该脚本的需求( 读者可根据该脚本思路编写属于你自己的定时任

    2024年02月12日
    浏览(41)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包