mirror of
https://github.com/CMiksche/gitea-auto-update
synced 2025-12-10 16:07:23 +01:00
Compare commits
20 Commits
f44d7c8954
...
master
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
9449498d49 | ||
|
|
5bf70c379b | ||
|
|
28721257fe | ||
|
|
8b30f0b9d5 | ||
|
|
6f85b5b0a3 | ||
|
|
50586a33a3 | ||
|
|
576f7454c1 | ||
|
|
7379ad56ce | ||
|
|
2740dcb1b8 | ||
|
|
92cefe029a | ||
|
|
c2da136d7e | ||
|
|
bdef0b6987 | ||
|
|
ccb3e058ef | ||
|
|
4f3dd23bf7 | ||
|
|
18d6da360d | ||
|
|
52855058fc | ||
|
|
26efce05b5 | ||
|
|
c6621fa117 | ||
|
|
d926a19b6c | ||
|
|
af7941f10a |
11
.drone.yml
11
.drone.yml
@@ -1,11 +0,0 @@
|
|||||||
kind: pipeline
|
|
||||||
name: default
|
|
||||||
steps:
|
|
||||||
- name: test
|
|
||||||
image: python
|
|
||||||
commands:
|
|
||||||
- pip install pipenv
|
|
||||||
- pipenv install
|
|
||||||
- pipenv run gitlint
|
|
||||||
- pipenv run pylint setup.py gitea_auto_update
|
|
||||||
- pipenv run python -m unittest
|
|
||||||
12
.github/FUNDING.yml
vendored
12
.github/FUNDING.yml
vendored
@@ -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']
|
|
||||||
31
.github/workflows/pypi-publish.yml
vendored
Normal file
31
.github/workflows/pypi-publish.yml
vendored
Normal 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 }}
|
||||||
25
.github/workflows/test.yml
vendored
Normal file
25
.github/workflows/test.yml
vendored
Normal file
@@ -0,0 +1,25 @@
|
|||||||
|
name: Test Package
|
||||||
|
|
||||||
|
on: [push]
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
build:
|
||||||
|
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
strategy:
|
||||||
|
matrix:
|
||||||
|
python-version: [ "3.8", "3.9", "3.10"]
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v3
|
||||||
|
- name: Set up Python ${{ matrix.python-version }}
|
||||||
|
uses: actions/setup-python@v4
|
||||||
|
with:
|
||||||
|
python-version: ${{ matrix.python-version }}
|
||||||
|
- name: "Tests the code"
|
||||||
|
run: |
|
||||||
|
pip install pipenv
|
||||||
|
pipenv install
|
||||||
|
pipenv run gitlint
|
||||||
|
pipenv run pylint setup.py gitea_auto_update
|
||||||
|
pipenv run python -m unittest
|
||||||
2
Pipfile
2
Pipfile
@@ -15,4 +15,4 @@ pylint = "*"
|
|||||||
pre-commit = "*"
|
pre-commit = "*"
|
||||||
|
|
||||||
[requires]
|
[requires]
|
||||||
python_version = "3.7"
|
python_version = "3"
|
||||||
|
|||||||
25
README.md
25
README.md
@@ -1,10 +1,22 @@
|
|||||||
# Gitea Auto Update
|
# Gitea Auto Update
|
||||||
|
|
||||||
[](https://cloud.drone.io/CMiksche/gitea-auto-update)
|
[](https://github.com/CMiksche/gitea-auto-update/actions/workflows/test.yml)
|
||||||
|
[](https://github.com/CMiksche/gitea-auto-update/actions/workflows/pypi-publish.yml)
|
||||||
[](https://badge.fury.io/py/gitea-auto-update)
|
[](https://badge.fury.io/py/gitea-auto-update)
|
||||||
[](https://pepy.tech/project/gitea-auto-update)
|
[](https://pepy.tech/project/gitea-auto-update)
|
||||||
|

|
||||||
|
[](https://twitter.com/cmiksche)
|
||||||
|
[](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.
|
||||||
|
|
||||||
|
This project is on life-support. I focus on bringing new features to my paid [Autoupdate](https://chapati.systems/autoupdate/) tool.
|
||||||
|
|
||||||
|
## 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 +40,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 +66,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 +96,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!
|
||||||
|
|
||||||
|
|||||||
@@ -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")
|
||||||
|
|||||||
@@ -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)
|
||||||
|
|
||||||
|
|||||||
@@ -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:
|
||||||
|
|||||||
@@ -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'):
|
||||||
|
|||||||
8
setup.py
8
setup.py
@@ -1,25 +1,25 @@
|
|||||||
'''
|
'''
|
||||||
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.13',
|
||||||
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",
|
||||||
url='https://github.com/CMiksche/gitea-auto-update',
|
url='https://github.com/CMiksche/gitea-auto-update',
|
||||||
author='Christoph Miksche',
|
author='Christoph Miksche',
|
||||||
author_email='christoph@miksche.org',
|
author_email='autoupdate@chapati.systems',
|
||||||
license='GPLv3',
|
license='GPLv3',
|
||||||
classifiers=[
|
classifiers=[
|
||||||
"Programming Language :: Python :: 3",
|
"Programming Language :: Python :: 3",
|
||||||
|
|||||||
Reference in New Issue
Block a user