【版本控制】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账户关联的默认邮箱发送邮件提醒。

目录
相关文章
|
12月前
|
开发工具 git C++
【够用就好002】外行第一次发布github项目仓库
#deepseek#自学 记录外行学习代码的历程 今天是上传自己的工具代码到github仓库,一直以来是伸手党克隆别人的项目,今天在deepseek的辅导下上传自己的内容。
|
开发工具 git
如何操作github,gitee,gitcode三个git平台建立镜像仓库机制,这样便于维护项目只需要维护一个平台仓库地址的即可-优雅草央千澈
如何操作github,gitee,gitcode三个git平台建立镜像仓库机制,这样便于维护项目只需要维护一个平台仓库地址的即可-优雅草央千澈
972 69
如何操作github,gitee,gitcode三个git平台建立镜像仓库机制,这样便于维护项目只需要维护一个平台仓库地址的即可-优雅草央千澈
|
10月前
|
人工智能 API 开发工具
GitHub官方开源MCP服务!GitHub MCP Server:无缝集成GitHub API,实现Git流程完全自动化
GitHub MCP Server是基于Model Context Protocol的服务器工具,提供与GitHub API的无缝集成,支持自动化处理问题、Pull Request和仓库管理等功能。
2059 2
GitHub官方开源MCP服务!GitHub MCP Server:无缝集成GitHub API,实现Git流程完全自动化
|
8月前
|
Linux 网络安全 开发工具
在Linux下配置gitee与Github的远程仓库
注意,git push后,是输入你的账号与密码。这个步骤可以通过特殊设置省去,但是一开始还是不要太省。
429 0
|
10月前
|
文字识别 网络协议 开发工具
GitHub封锁?推荐5个国产的Git仓库替代平台
近日,GitHub对中国区IP的部分限制引发了广泛关注。未登录用户被拒,已登录用户功能受限,南北网络环境差异更显“内卷”。为应对这一挑战,本文推荐了多个国产Git平台:Gitee(码云)、GitCode(CSDN旗下)、CODING(腾讯系)、CodeUP(阿里云支持)及微信代码管理工具。这些平台功能全面、稳定性强,是开发者迁移项目的理想选择。通过同步代码、配置CI/CD流水线等简单步骤,可确保项目平稳过渡。此次事件提醒我们,掌握核心技能与支持国产平台同样重要!
8540 11
|
11月前
|
开发工具 git
vscode推送项目到github仓库故障解决1
本文介绍了如何优雅解决本地仓库与远程仓库历史记录不一致的问题,并提供避免未来问题的最佳实践。核心在于理解问题根源(如历史记录差异和常见原因),采用推荐的解决方案(先本地初始化再关联远程仓库),并遵循一致的工作流程、团队协作规范及熟悉 Git 命令。通过强制推送或合并无关历史记录等方式处理现有冲突,同时养成良好习惯以预防类似问题。
|
Devops Shell 网络安全
git使用之如何将一套代码同时推送至github|gitee|gitcode|gitlab等多个仓库-含添加ssh-优雅草央千澈完美解决-提供整体提交代码
git使用之如何将一套代码同时推送至github|gitee|gitcode|gitlab等多个仓库-含添加ssh-优雅草央千澈完美解决-提供整体提交代码
629 16
git使用之如何将一套代码同时推送至github|gitee|gitcode|gitlab等多个仓库-含添加ssh-优雅草央千澈完美解决-提供整体提交代码
|
11月前
|
存储 运维 安全
Github Action:让静态网站实现定时发布
本文探讨了静态网站实现定时发布的解决方案,针对静态博客缺乏原生定时发布功能的问题,作者基于Zola工具构建的静态网站,最终选择通过GitHub Action实现定时发布。文章对比了几种实现方式,包括人力、自建服务及平台原生功能等,指出最理想的是利用平台能力但多数平台缺乏该功能。文中详细介绍了GitHub Action方案的原理、部署过程和使用流程,并分享了高级配置如推送通知。同时分析了方案的局限性,如时间颗粒度粗、设置繁琐等,并提出改进建议。总结中展望了未来优化方向,旨在提升静态网站维护体验。
209 0
如何利用 Github 搭建自己的免费图床?
如何利用 Github 搭建自己的免费图床?
1530 0
如何利用 Github 搭建自己的免费图床?
|
5月前
|
人工智能 JavaScript 前端开发
Github 2024-10-28 开源项目周报 Top15
本周GitHub热门项目涵盖Svelte、Open Interpreter、PowerShell等,涉及Web开发、AI助手、自动化工具等领域,Python、JavaScript为主流语言,展现开源技术活跃生态。(239字)
600 19

热门文章

最新文章