From b2066e8acd1893eca4c1c55cee17b37d37795a94 Mon Sep 17 00:00:00 2001
From: themaster1970sf <107542393+themaster1970sf@users.noreply.github.com>
Date: Sat, 25 Jan 2025 15:08:58 +0300
Subject: [PATCH 01/11] Add files via upload
---
app.py | 112 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++
r.txt | 3 ++
2 files changed, 115 insertions(+)
create mode 100644 app.py
create mode 100644 r.txt
diff --git a/app.py b/app.py
new file mode 100644
index 0000000..a79a563
--- /dev/null
+++ b/app.py
@@ -0,0 +1,112 @@
+import os
+import shutil
+import requests
+from datetime import datetime
+import pytz
+import schedule
+import time
+import zipfile
+
+def create_github_release(repo_path, git_config):
+ """
+ Создает релиз в GitHub
+ """
+ try:
+ moscow_tz = pytz.timezone('Europe/Moscow')
+ current_time = datetime.now(moscow_tz)
+
+ archive_name = f"auto_build_{current_time.strftime('%Y-%m-%d_%H-%M-%S')}"
+ archive_path = os.path.join(repo_path, f"{archive_name}.zip")
+
+ # Создание временной директории без archives
+ temp_dir = os.path.join(repo_path, 'temp_build')
+ os.makedirs(temp_dir, exist_ok=True)
+
+ # Копирование файлов, исключая archives
+ for item in os.listdir(repo_path):
+ if item != 'archives' and item != 'temp_build':
+ s = os.path.join(repo_path, item)
+ d = os.path.join(temp_dir, item)
+ if os.path.isdir(s):
+ shutil.copytree(s, d)
+ else:
+ shutil.copy2(s, d)
+
+ # Архивация временной директории
+ shutil.make_archive(archive_path[:-4], 'zip', temp_dir)
+
+ # Удаление временной директории
+ shutil.rmtree(temp_dir)
+
+ release_data = {
+ "tag_name": archive_name,
+ "target_commitish": "main",
+ "name": f"Build {archive_name}",
+ "body": f"Автоматическая сборка от {current_time.strftime('%Y-%m-%d %H:%M:%S')}",
+ "draft": False,
+ "prerelease": False
+ }
+
+ url = f"https://api.github.com/repos/{git_config['username']}/{git_config['repo']}/releases"
+
+ headers = {
+ "Authorization": f"token {git_config['token']}",
+ "Accept": "application/vnd.github.v3+json"
+ }
+
+ response = requests.post(url, json=release_data, headers=headers)
+
+ if response.status_code == 201:
+ release_info = response.json()
+ upload_url = release_info['upload_url'].replace('{?name,label}', f'?name={archive_name}.zip')
+
+ with open(archive_path, 'rb') as file:
+ upload_response = requests.post(
+ upload_url,
+ headers={
+ "Authorization": f"token {git_config['token']}",
+ "Content-Type": "application/zip"
+ },
+ data=file
+ )
+
+ if upload_response.status_code in [200, 201]:
+ print(f"Успешно создан релиз: {archive_name}")
+
+ # Удаление архива после успешной загрузки
+ os.remove(archive_path)
+ print(f"Архив {archive_name}.zip был удален.")
+ return True
+ else:
+ print("Ошибка загрузки архива")
+ return False
+ else:
+ print(f"Ошибка создания релиза: {response.text}")
+ return False
+
+ except Exception as e:
+ print(f"Общая ошибка: {e}")
+ return False
+
+def daily_release():
+ """Ежедневное создание релиза"""
+ repo = {
+ "path": r"C:\build",
+ "git_config": {
+ "username": "xdghrj",
+ "repo": "auto_build_test",
+ "token": "ghp_XXXXXXXXXXXXXXXXXXXXX"
+ }
+ }
+
+ create_github_release(repo['path'], repo['git_config'])
+
+def main():
+ schedule.every().day.at("23:00").do(daily_release)
+
+ while True:
+ schedule.run_pending()
+ time.sleep(60)
+
+if __name__ == "__main__":
+ main()
diff --git a/r.txt b/r.txt
new file mode 100644
index 0000000..0b320b4
--- /dev/null
+++ b/r.txt
@@ -0,0 +1,3 @@
+requests
+pytz
+schedule
From fce77b8c863049ae70e5f1c305ea59d958cfba68 Mon Sep 17 00:00:00 2001
From: themaster1970sf <107542393+themaster1970sf@users.noreply.github.com>
Date: Sat, 25 Jan 2025 21:50:14 +0300
Subject: [PATCH 02/11] Create pylint.yml
---
.github/workflows/pylint.yml | 23 +++++++++++++++++++++++
1 file changed, 23 insertions(+)
create mode 100644 .github/workflows/pylint.yml
diff --git a/.github/workflows/pylint.yml b/.github/workflows/pylint.yml
new file mode 100644
index 0000000..c73e032
--- /dev/null
+++ b/.github/workflows/pylint.yml
@@ -0,0 +1,23 @@
+name: Pylint
+
+on: [push]
+
+jobs:
+ build:
+ runs-on: ubuntu-latest
+ strategy:
+ matrix:
+ python-version: ["3.8", "3.9", "3.10"]
+ steps:
+ - uses: actions/checkout@v4
+ - name: Set up Python ${{ matrix.python-version }}
+ uses: actions/setup-python@v3
+ with:
+ python-version: ${{ matrix.python-version }}
+ - name: Install dependencies
+ run: |
+ python -m pip install --upgrade pip
+ pip install pylint
+ - name: Analysing the code with pylint
+ run: |
+ pylint $(git ls-files '*.py')
From 2b6c988965e7640b3277178843e01b2fa1f1bc66 Mon Sep 17 00:00:00 2001
From: themaster1970sf <107542393+themaster1970sf@users.noreply.github.com>
Date: Sat, 25 Jan 2025 22:01:35 +0300
Subject: [PATCH 03/11] Update and rename r.txt to requirements.txt
---
r.txt => requirements.txt | 0
1 file changed, 0 insertions(+), 0 deletions(-)
rename r.txt => requirements.txt (100%)
diff --git a/r.txt b/requirements.txt
similarity index 100%
rename from r.txt
rename to requirements.txt
From 2e195f9762c705ffaaf397439d2677dd76530cff Mon Sep 17 00:00:00 2001
From: themaster1970sf <107542393+themaster1970sf@users.noreply.github.com>
Date: Fri, 28 Mar 2025 00:51:35 +0300
Subject: [PATCH 04/11] Update README.md
---
README.md | 14 ++++++++++++--
1 file changed, 12 insertions(+), 2 deletions(-)
diff --git a/README.md b/README.md
index 1269535..f380396 100644
--- a/README.md
+++ b/README.md
@@ -24,7 +24,7 @@
1. Клонировать репозиторий:
```bash
-git clone https://github.com/your-repo/auto-build-script.git
+git clone https://github.com/AutoBuildRepo/auto-build-script.git
cd auto-build-script
```
@@ -33,11 +33,16 @@ cd auto-build-script
pip install -r requirements.txt
```
+3. Запуск:
+```powershell
+python app.py
+```
+
### Linux
1. Клонировать репозиторий:
```bash
-git clone https://github.com/your-repo/auto-build-script.git
+git clone https://github.com/AutoBuildRepo/auto-build-script.git
cd auto-build-script
```
@@ -52,6 +57,11 @@ source venv/bin/activate
pip install -r requirements.txt
```
+3. Запуск:
+```powershell
+python3 app.py
+```
+
## 🔧 Настройка
1. Получить Personal Access Token в GitHub
From 0478b4d7c5351a41e2a9872b6fff8d50ae8a0230 Mon Sep 17 00:00:00 2001
From: themaster1970sf <107542393+themaster1970sf@users.noreply.github.com>
Date: Fri, 28 Mar 2025 00:51:54 +0300
Subject: [PATCH 05/11] Update README.md
---
README.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/README.md b/README.md
index f380396..851c0c9 100644
--- a/README.md
+++ b/README.md
@@ -57,7 +57,7 @@ source venv/bin/activate
pip install -r requirements.txt
```
-3. Запуск:
+4. Запуск:
```powershell
python3 app.py
```
From e4d9adf7c9dd87a1c0cf49773c1d6b79e6aa4171 Mon Sep 17 00:00:00 2001
From: themaster1970sf <107542393+themaster1970sf@users.noreply.github.com>
Date: Mon, 31 Mar 2025 22:52:48 +0300
Subject: [PATCH 06/11] Update README.md
---
README.md | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/README.md b/README.md
index 851c0c9..4aac48c 100644
--- a/README.md
+++ b/README.md
@@ -24,7 +24,7 @@
1. Клонировать репозиторий:
```bash
-git clone https://github.com/AutoBuildRepo/auto-build-script.git
+git clone https://github.com/themaster1970sf/AutoBuildRepo.git
cd auto-build-script
```
@@ -42,7 +42,7 @@ python app.py
1. Клонировать репозиторий:
```bash
-git clone https://github.com/AutoBuildRepo/auto-build-script.git
+git clone https://github.com/themaster1970sf/AutoBuildRepo.git
cd auto-build-script
```
From d3e2bf4b459f666c895b6c7ce8b7ef9b0a3a1705 Mon Sep 17 00:00:00 2001
From: themaster1970sf <107542393+themaster1970sf@users.noreply.github.com>
Date: Mon, 19 May 2025 20:04:23 +0300
Subject: [PATCH 07/11] Update README.md
---
README.md | 208 ++++++++++++++++++++++++++++++++++++------------------
1 file changed, 140 insertions(+), 68 deletions(-)
diff --git a/README.md b/README.md
index 4aac48c..7a7ab6b 100644
--- a/README.md
+++ b/README.md
@@ -1,101 +1,173 @@
-# Auto Build GitHub Release Automation
+# 
-## 📦 Описание проекта
+
+
+
+
+
+
-Скрипт автоматизирует создание релизов в GitHub с ежедневной архивацией содержимого репозитория.
+## Содержание
-## 🚀 Функциональность
+* [Описание](#описание)
+* [Функции](#функции)
+* [Требования](#требования)
+* [Установка](#установка)
+* [Конфигурация](#конфигурация)
+* [Настройки расписания](#настройки-расписания)
+* [Запуск](#запуск)
+* [Важные примечания](#важные-примечания)
+* [Лицензия](#лицензия)
-- Автоматическое создание архива репозитория
-- Генерация релиза в GitHub
-- Загрузка архива как asset релиза
-- Поддержка Windows и Linux
-- Настраиваемое расписание
+## Описание
-## 🛠 Требования
+Мощный Python-скрипт, автоматизирующий создание релизов на GitHub путем генерации ежедневных архивов содержимого вашего репозитория. Идеально подходит для проектов, требующих регулярных сборок или резервных копий.
-- Python 3.8+
-- Git
-- Личный токен GitHub
+## Функции
-## 📋 Установка
+* 🔄 **Автоматическое архивирование репозитория** - Создает сжатые архивы вашего репозитория
+* 🚀 **Генерация релизов на GitHub** - Автоматически создает релизы на GitHub
+* 📦 **Загрузка ресурсов** - Прикрепляет архивные файлы к каждому релизу
+* 💻 **Кроссплатформенность** - Работает как на Windows, так и на Linux
+* ⏱️ **Настраиваемое расписание** - Настройте собственное время выпуска релизов
+* 🔒 **Безопасная аутентификация** - Использует персональные токены доступа GitHub для безопасного доступа к API
+
+## Требования
+
+* Python 3.8 или выше
+* Установленный и настроенный Git
+* Персональный токен доступа GitHub с соответствующими разрешениями
+* Интернет-соединение для доступа к API GitHub
+
+## Установка
+
+
### Windows
+
-1. Клонировать репозиторий:
-```bash
-git clone https://github.com/themaster1970sf/AutoBuildRepo.git
-cd auto-build-script
-```
+1. **Клонировать репозиторий**
-2. Установить зависимости:
-```powershell
-pip install -r requirements.txt
-```
+ ```bash
+ git clone https://github.com/themaster1970sf/AutoBuildRepo.git
+ cd AutoBuildRepo
+ ```
-3. Запуск:
-```powershell
-python app.py
-```
+2. **Установить зависимости**
+
+ ```powershell
+ pip install -r requirements.txt
+ ```
+
+3. **Запустить скрипт**
+
+ ```powershell
+ python app.py
+ ```
+
### Linux
+
-1. Клонировать репозиторий:
-```bash
-git clone https://github.com/themaster1970sf/AutoBuildRepo.git
-cd auto-build-script
-```
+1. **Клонировать репозиторий**
-2. Создать виртуальное окружение:
-```bash
-python3 -m venv venv
-source venv/bin/activate
-```
+ ```bash
+ git clone https://github.com/themaster1970sf/AutoBuildRepo.git
+ cd AutoBuildRepo
+ ```
-3. Установить зависимости:
-```bash
-pip install -r requirements.txt
-```
+2. **Создать и активировать виртуальное окружение**
-4. Запуск:
-```powershell
-python3 app.py
-```
+ ```bash
+ python3 -m venv venv
+ source venv/bin/activate
+ ```
-## 🔧 Настройка
+3. **Установить зависимости**
+
+ ```bash
+ pip install -r requirements.txt
+ ```
+
+4. **Запустить скрипт**
+
+ ```bash
+ python3 app.py
+ ```
+
+ Сделано с ❤️ от themaster1970sf +
From 7eb2c68e2166f277f8b7e4af4d2889c05dd5e547 Mon Sep 17 00:00:00 2001 From: themaster1970sf <107542393+themaster1970sf@users.noreply.github.com> Date: Mon, 19 May 2025 23:38:08 +0300 Subject: [PATCH 08/11] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 7a7ab6b..2d04c35 100644 --- a/README.md +++ b/README.md @@ -21,7 +21,7 @@ ## Описание -Мощный Python-скрипт, автоматизирующий создание релизов на GitHub путем генерации ежедневных архивов содержимого вашего репозитория. Идеально подходит для проектов, требующих регулярных сборок или резервных копий. +Python-скрипт, автоматизирующий создание релизов на GitHub путем генерации ежедневных архивов содержимого вашего репозитория. Идеально подходит для проектов, требующих регулярных сборок или резервных копий. ## Функции From 2e65b9704a54dd1761ebf584b8f9719db0022339 Mon Sep 17 00:00:00 2001 From: themaster1970sf <107542393+themaster1970sf@users.noreply.github.com> Date: Tue, 20 May 2025 07:14:08 +0300 Subject: [PATCH 09/11] Update README.md --- README.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 2d04c35..51ab649 100644 --- a/README.md +++ b/README.md @@ -21,7 +21,7 @@ ## Описание -Python-скрипт, автоматизирующий создание релизов на GitHub путем генерации ежедневных архивов содержимого вашего репозитория. Идеально подходит для проектов, требующих регулярных сборок или резервных копий. +Мощный Python-скрипт, автоматизирующий создание релизов на GitHub путем генерации ежедневных архивов содержимого вашего репозитория. Идеально подходит для проектов, требующих регулярных сборок или резервных копий. ## Функции @@ -116,7 +116,7 @@ Python-скрипт, автоматизирующий создание рели repo = { "path": r"/путь/к/сборке", "git_config": { - "username": "ваше_имя_пользователя_github", + "username": "ваш_логин_github", "repo": "ваш_репозиторий", "token": "ваш_токен_github" } @@ -164,10 +164,10 @@ python app.py ## Лицензия -[Лицензия MIT](https://github.com/themaster1970sf/AutoBuildRepo/blob/main/LICENSE) +[Лицензия MIT](https://git.plazmocraft.ru/themaster1970sf/AutoBuildRepo/src/branch/main/LICENSE) ---- Сделано с ❤️ от themaster1970sf + Сделано с ❤️ от themaster1970sf
From c14d9c1b3baa68140068a841d9fc771783ee29eb Mon Sep 17 00:00:00 2001 From: themaster1970sf <107542393+themaster1970sf@users.noreply.github.com> Date: Mon, 23 Jun 2025 01:30:26 +0300 Subject: [PATCH 10/11] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 51ab649..12d8c14 100644 --- a/README.md +++ b/README.md @@ -164,7 +164,7 @@ python app.py ## Лицензия -[Лицензия MIT](https://git.plazmocraft.ru/themaster1970sf/AutoBuildRepo/src/branch/main/LICENSE) +[Лицензия MIT](https://github.com/themaster1970sf/AutoBuildRepo/blob/main/LICENSE) --- From bc145f4634279ad03e4a9db40461451b932c087d Mon Sep 17 00:00:00 2001 From: themaster1970sf <107542393+themaster1970sf@users.noreply.github.com> Date: Fri, 24 Oct 2025 08:16:33 +0300 Subject: [PATCH 11/11] Update README.md --- README.md | 2 -- 1 file changed, 2 deletions(-) diff --git a/README.md b/README.md index 12d8c14..bb0114f 100644 --- a/README.md +++ b/README.md @@ -151,9 +151,7 @@ python app.py ⚠️ **Соображения безопасности** -- Никогда не фиксируйте токен GitHub непосредственно в коде - Рассмотрите возможность использования переменных окружения для хранения конфиденциальной информации -- Убедитесь, что ваш репозиторий имеет достаточно места для хранения регулярных архивов - Проверьте, есть ли у вас необходимые разрешения для целевого репозитория ⚠️ **Соображения производительности**