前言
最近突然想起年前圖床倉庫發(fā)生的一個遺留問題:由于我的網(wǎng)絡(luò)圖床服務(wù)是Github + Typora
的形式,本地的圖片會自動轉(zhuǎn)義成網(wǎng)絡(luò)圖片并存儲在圖床倉庫下,一般我們會指定一個目錄進行圖片存儲,但是由于GitHub設(shè)定的單個目錄最大存儲文件數(shù)不能超過1000.
所以在注意到這件事的情況下GitHub的圖床倉庫就發(fā)生了問題:新加入的圖片文件由于沒有文件位,會自動代替舊的圖片文件,這就導(dǎo)致了部分文件的丟失,所以這里想寫一個GitHub倉庫的自動化Action,每天檢測倉庫下每個目錄下的文件個數(shù),超過999個文件自動給GitHub默認綁定的郵箱發(fā)送信息提醒。
具體流程
當每天自動檢測倉庫中每個目錄中的文件數(shù)量,并且如果超過999個文件時,自動向與GitHub賬戶關(guān)聯(lián)的默認郵箱發(fā)送消息。
1. 創(chuàng)建GitHub工作流文件
在GitHub倉庫中,轉(zhuǎn)到.github/workflows
目錄并創(chuàng)建一個新文件,比如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. 創(chuàng)建requirements.txt文件
在GitHub倉庫中創(chuàng)建一個名為requirements.txt
的文件,并將以下內(nèi)容添加到文件中:
smtplib
4. 創(chuàng)建send_email.py文件
在GitHub倉庫中創(chuàng)建一個名為send_email.py
的文件,并將以下代碼添加到文件中:文章來源:http://www.zghlxwxcb.cn/news/detail-466318.html
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時間午夜運行,計算倉庫中的文件數(shù)量,如果文件數(shù)量超過999,則會向與GitHub賬戶關(guān)聯(lián)的默認郵箱發(fā)送郵件提醒。文章來源地址http://www.zghlxwxcb.cn/news/detail-466318.html
到了這里,關(guān)于【版本控制】GitHub圖床服務(wù)Action---自動監(jiān)視圖床倉庫的目錄下的文件數(shù)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!