1
0
mirror of https://github.com/CMiksche/gitea-auto-update synced 2025-12-10 07:57:23 +01:00

20 Commits

Author SHA1 Message Date
Christoph Miksche
28721257fe docs: inform about autoupdate
Inform about my new autoupdate tool
2023-02-24 13:53:45 +01:00
Christoph Miksche
8b30f0b9d5 feat: add timeout
Add a timeout for the requests.
2022-09-04 16:07:41 +02:00
Christoph Daniel Miksche
6f85b5b0a3 docs: add badges
Add badges for license and twitter
2022-09-04 15:59:28 +02:00
Christoph Daniel Miksche
50586a33a3 docs: add xz as dependency
Add the missing dependency `xz`
2022-06-17 13:56:47 +02:00
Christoph Daniel Miksche
576f7454c1 Merge pull request #28 from BadCo-NZ/patch-1
Update README.md
2022-06-14 11:16:32 +02:00
BadCo-NZ
7379ad56ce Update README.md
Fixed code block error
2022-06-14 01:55:30 +00:00
BadCo-NZ
2740dcb1b8 Updated dependencies
Reworded Dependencies section
2022-06-14 01:53:27 +00:00
BadCo-NZ
92cefe029a Update README.md
Added dependencies section
2022-05-22 11:15:55 +00:00
Christoph Miksche
c2da136d7e fix: update if sha doesn't exists
Still update if there is no sha which we can check
2022-02-01 13:19:42 +01:00
Christoph Miksche
bdef0b6987 fix: change master to main
Change the branch name in the build process
2022-01-31 11:59:33 +01:00
Christoph Miksche
ccb3e058ef build: publish on every deploy
Deploy with GitHub Actions to PyPI

Closes #15
2021-10-16 16:59:07 +02:00
Christoph Daniel Miksche
4f3dd23bf7 Merge pull request #24 from R0GGER/patch-1
tiny typo
2021-09-16 16:18:35 +02:00
R0GGER
18d6da360d tiny typo 2021-09-16 13:57:22 +02:00
Christoph Miksche
52855058fc feat: release new version
Release new version with fix for SELinux
2021-06-15 21:13:45 +02:00
Christoph Daniel Miksche
26efce05b5 Merge pull request #23 from maloo1/patch-1
Changes for SELinux, closes #23
2021-06-15 21:03:56 +02:00
Paul Johnston
c6621fa117 fix: Also cleaning up the build dir 2021-06-16 02:56:03 +08:00
Paul Johnston
d926a19b6c Changed mv to cp to preserve SELinux permissions 2021-06-16 02:37:18 +08:00
Paul Johnston
af7941f10a Change mv to cp to preserve SELinux permissions 2021-06-16 02:27:10 +08:00
Christoph Daniel Miksche
f44d7c8954 Merge pull request #20 from CMiksche/dependabot/add-v2-config-file
Upgrade to GitHub-native Dependabot
2021-04-30 01:11:19 +02:00
dependabot-preview[bot]
4e5df22f2e ci: Upgrade Dependabot
Upgrade to GitHub-native Dependabot
2021-04-30 01:09:44 +02:00
10 changed files with 79 additions and 28 deletions

12
.github/FUNDING.yml vendored
View File

@@ -1,12 +0,0 @@
# These are supported funding model platforms
github: # Replace with up to 4 GitHub Sponsors-enabled usernames e.g., [user1, user2]
patreon: cmiksche
open_collective: # Replace with a single Open Collective username
ko_fi: # Replace with a single Ko-fi username
tidelift: # Replace with a single Tidelift platform-name/package-name e.g., npm/babel
community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry
liberapay: CMiksche
issuehunt: # Replace with a single IssueHunt username
otechie: # Replace with a single Otechie username
custom: ['https://www.paypal.me/CMiksche', 'https://buymeacoff.ee/WmgU5Sk'] # Replace with up to 4 custom sponsorship URLs e.g., ['link1', 'link2']

8
.github/dependabot.yml vendored Normal file
View File

@@ -0,0 +1,8 @@
version: 2
updates:
- package-ecosystem: pip
directory: "/"
schedule:
interval: daily
time: "04:00"
open-pull-requests-limit: 10

31
.github/workflows/pypi-publish.yml vendored Normal file
View File

@@ -0,0 +1,31 @@
on:
release:
types:
- created
name: Publish Package
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- uses: actions/setup-python@v2
with:
python-version: 3.8
- name: "Installs and upgrades pip, installs other dependencies and installs the package from setup.py"
run: |
# Upgrade pip
python3 -m pip install --upgrade pip
# Install build deps
python3 -m pip install pipenv setuptools wheel twine
pipenv install
# Install the package from setup.py
python3 setup.py install
- name: Build
run: |
python3 setup.py sdist bdist_wheel
- name: Publish a Python distribution to PyPI
uses: pypa/gh-action-pypi-publish@release/v1
with:
user: __token__
password: ${{ secrets.PYPI_API_TOKEN }}

View File

@@ -15,4 +15,4 @@ pylint = "*"
pre-commit = "*" pre-commit = "*"
[requires] [requires]
python_version = "3.7" python_version = "3"

View File

@@ -3,8 +3,17 @@
[![Build Status](https://cloud.drone.io/api/badges/CMiksche/gitea-auto-update/status.svg)](https://cloud.drone.io/CMiksche/gitea-auto-update) [![Build Status](https://cloud.drone.io/api/badges/CMiksche/gitea-auto-update/status.svg)](https://cloud.drone.io/CMiksche/gitea-auto-update)
[![PyPI version](https://badge.fury.io/py/gitea-auto-update.svg)](https://badge.fury.io/py/gitea-auto-update) [![PyPI version](https://badge.fury.io/py/gitea-auto-update.svg)](https://badge.fury.io/py/gitea-auto-update)
[![Downloads](https://pepy.tech/badge/gitea-auto-update)](https://pepy.tech/project/gitea-auto-update) [![Downloads](https://pepy.tech/badge/gitea-auto-update)](https://pepy.tech/project/gitea-auto-update)
![GitHub](https://img.shields.io/github/license/cmiksche/gitea-auto-update?style=flat)
[![Twitter Follow](https://img.shields.io/twitter/follow/cmiksche?style=social)](https://twitter.com/cmiksche)
[![Mastodon Follow](https://img.shields.io/mastodon/follow/106336578279256330?domain=https%3A%2F%2Fmastodon.social&style=social)](https://mastodon.social/@cmiksche)
Script for a automatic update of gitea. Should be run locally on the gitea server. Has options for updating via new binary file or build from source. Script for an automatic update of gitea. Should be run locally on the gitea server. Has options for updating via new binary file or build from source.
## Want to update more?
> If you want to update Gitea and other software (like Drone, Caddy, Podman, Python, Zitadel and Kanboard), you should check out [Autoupdate](https://chapati.systems/autoupdate/).
>
> This new tool of mine was built as a single binary with a config file and tested on multiple Linux systems.
## Procedure ## Procedure
* Get Gitea Version from the Gitea CLI and if that fails from the Gitea API * Get Gitea Version from the Gitea CLI and if that fails from the Gitea API
@@ -28,6 +37,10 @@ Author: Christoph Daniel Miksche (m5e.de)
Uses python version 3 Uses python version 3
## Dependencies
Ensure `pip3`, `setuptools`, `xz-utils` and `wheel` dependencies are installed on the system you are running this script in. (Most Linux OS like Ubuntu or Debian come with these pre-installed)
## Installation ## Installation
Create a settings.ini file on your system. Example: Create a settings.ini file on your system. Example:
@@ -50,7 +63,7 @@ Use the following command to install gitea-auto-update.
sudo pip3 install gitea-auto-update sudo pip3 install gitea-auto-update
``` ```
Enter the command `gite-auto-update --settings=/path/to/settings.ini` in your commandline. Enter the command `gitea-auto-update --settings=/path/to/settings.ini` in your commandline.
If you want to schedule your updates, edit your /etc/crontab file. If you want to schedule your updates, edit your /etc/crontab file.
@@ -80,8 +93,7 @@ The following steps are automatically executed via pre-commit hooks.
## Contributors ## Contributors
- [@Eideen](https://github.com/Eideen) See https://github.com/CMiksche/gitea-auto-update/graphs/contributors
- [@iwalton3](https://github.com/iwalton3)
Thank you for your support! Thank you for your support!

View File

@@ -12,8 +12,9 @@ import os
def build_from_source(tag, gt_file, source_dir): def build_from_source(tag, gt_file, source_dir):
"""Function to build the new version from source""" """Function to build the new version from source"""
os.chdir(source_dir) os.chdir(source_dir)
os.system("git checkout master") os.system("git checkout main")
os.system("git pull") os.system("git pull")
os.system("git checkout " + tag) os.system("git checkout " + tag)
os.system('TAGS="bindata sqlite sqlite_unlock_notify" make generate build') os.system('TAGS="bindata sqlite sqlite_unlock_notify" make generate build')
os.system("mv gitea " + gt_file) os.system("cp gitea " + gt_file)
os.system("rm -f gitea")

View File

@@ -24,14 +24,18 @@ def download(url, file_name):
# open in binary mode # open in binary mode
with open(file_name, "wb") as file: with open(file_name, "wb") as file:
# get request # get request
response = requests.get(url) response = requests.get(url, timeout=3600)
# write to file # write to file
file.write(response.content) file.write(response.content)
def sha_check(): def sha_check():
"""Check sha for gitea file""" """Check sha for gitea file"""
return os.system("sha256sum -c gitea.xz.sha256 > /dev/null") == 0 sha_path = 'gitea.xz.sha256'
if os.path.exists(sha_path):
return os.system("sha256sum -c "+sha_path+" > /dev/null") == 0
# return true because we don't have a sha file to check
return True
class Download: class Download:
@@ -74,10 +78,14 @@ class Download:
# extracting download file # extracting download file
cmd = "xz -d " + self.tmp_xz cmd = "xz -d " + self.tmp_xz
os.system(cmd) os.system(cmd)
# moving temp file to gtfile location # copying temp file to gtfile location.
cmd = 'mv ' + self.tmp_dir + 'gitea-' + self.github_version \ # Copying preserves SELinux permissions, see issue #22
cmd = 'cp ' + self.tmp_dir + 'gitea-' + self.github_version \
+ '-' + self.gt_system + ' ' + self.gt_file + '-' + self.gt_system + ' ' + self.gt_file
os.system(cmd) os.system(cmd)
# cleaning up tmp file
cmd = 'rm -f ' + self.tmp_dir + 'gitea-' + self.github_version + '-' + self.gt_system
os.system(cmd)
cmd = 'chmod +x ' + self.gt_file cmd = 'chmod +x ' + self.gt_file
os.system(cmd) os.system(cmd)

View File

@@ -14,7 +14,7 @@ import requests
def get_github_version_tag(api_url): def get_github_version_tag(api_url):
"""Get the version from github""" """Get the version from github"""
version_tag = requests.get(api_url).json()['tag_name'] version_tag = requests.get(api_url, timeout=30).json()['tag_name']
logging.info('Version: github_version_tag = %s', version_tag) logging.info('Version: github_version_tag = %s', version_tag)
return version_tag return version_tag
@@ -49,7 +49,7 @@ class Version:
except IOError: except IOError:
# Get the version via the web api if the file does fail # Get the version via the web api if the file does fail
try: try:
current_version = requests.get(self.gt_site).json()['version'] current_version = requests.get(self.gt_site, timeout=30).json()['version']
if current_version.status_code != 200: if current_version.status_code != 200:
raise RuntimeError("Could not download version.") from None raise RuntimeError("Could not download version.") from None
except RuntimeError: except RuntimeError:

View File

@@ -70,6 +70,9 @@ class Update:
print("update successfully") print("update successfully")
else: else:
print("current version is uptodate") print("current version is uptodate")
print("Check out https://chapati.systems/autoupdate/ if you want to "
"update Gitea and other software "
"(like Drone, Caddy, Podman, Python, Zitadel and Kanboard)")
def updater(settings='settings.ini'): def updater(settings='settings.ini'):

View File

@@ -1,19 +1,19 @@
''' '''
Gitea Auto Updater Gitea Auto Updater
Copyright 2018, 2019, 2020 The Gitea-Auto-Update Authors Copyright 2018, 2019, 2020, 2021, 2022 The Gitea-Auto-Update Authors
All rights reserved. All rights reserved.
License: GNU General Public License License: GNU General Public License
''' '''
import setuptools import setuptools
with open("README.md", "r") as fh: with open("README.md", "r", encoding='utf8') as fh:
LONG_DESCRIPTION = fh.read() LONG_DESCRIPTION = fh.read()
setuptools.setup( setuptools.setup(
name='gitea_auto_update', name='gitea_auto_update',
version='2.0.8', version='2.0.12',
description='A script which can update gitea to a new version.', description='A script which can update gitea to a new version.',
long_description=LONG_DESCRIPTION, long_description=LONG_DESCRIPTION,
long_description_content_type="text/markdown", long_description_content_type="text/markdown",