Merge pull request 'CI tests and publishing' (#10) from ci-test into main
All checks were successful
Python Linters / formatting (push) Successful in 52s
Python Linters / pylint (push) Successful in 1m3s
REUSE Compliance / reuse (push) Successful in 10s
Python Linters / mypy (push) Successful in 57s
Selftests / test-build-install (push) Successful in 55s
Selftests / test-sync (push) Successful in 59s
All checks were successful
Python Linters / formatting (push) Successful in 52s
Python Linters / pylint (push) Successful in 1m3s
REUSE Compliance / reuse (push) Successful in 10s
Python Linters / mypy (push) Successful in 57s
Selftests / test-build-install (push) Successful in 55s
Selftests / test-sync (push) Successful in 59s
Reviewed-on: #10
This commit was merged in pull request #10.
This commit is contained in:
19
.gitea/actions/poetrybuild/action.yaml
Normal file
19
.gitea/actions/poetrybuild/action.yaml
Normal file
@@ -0,0 +1,19 @@
|
|||||||
|
# SPDX-FileCopyrightText: 2023 DB Systel GmbH
|
||||||
|
#
|
||||||
|
# SPDX-License-Identifier: Apache-2.0
|
||||||
|
|
||||||
|
name: "Reusable Poetry build workflow"
|
||||||
|
inputs:
|
||||||
|
poetry_install_args:
|
||||||
|
default: ""
|
||||||
|
description: "Value for additional poetry install arguments"
|
||||||
|
required: false
|
||||||
|
|
||||||
|
runs:
|
||||||
|
using: "composite"
|
||||||
|
steps:
|
||||||
|
- name: Install poetry
|
||||||
|
run: pip install poetry
|
||||||
|
- name: Install poetry package
|
||||||
|
run: poetry install --no-interaction ${{ inputs.poetry_install_args }}
|
||||||
|
shell: bash
|
||||||
41
.gitea/workflows/linting.yaml
Normal file
41
.gitea/workflows/linting.yaml
Normal file
@@ -0,0 +1,41 @@
|
|||||||
|
# SPDX-FileCopyrightText: 2023 Max Mehl <https://mehl.mx>
|
||||||
|
#
|
||||||
|
# SPDX-License-Identifier: Apache-2.0
|
||||||
|
|
||||||
|
name: Python Linters
|
||||||
|
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches:
|
||||||
|
- main
|
||||||
|
pull_request:
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
pylint:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v2
|
||||||
|
- name: Install dependencies
|
||||||
|
uses: ./.gitea/actions/poetrybuild
|
||||||
|
- name: Lint with pylint
|
||||||
|
run: poetry run pylint seafile_mirror
|
||||||
|
|
||||||
|
formatting:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v2
|
||||||
|
- name: Install dependencies
|
||||||
|
uses: ./.gitea/actions/poetrybuild
|
||||||
|
- name: Test formatting with isort and black
|
||||||
|
run: |
|
||||||
|
poetry run isort --check seafile_mirror/
|
||||||
|
poetry run black .
|
||||||
|
|
||||||
|
mypy:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v2
|
||||||
|
- name: Install dependencies
|
||||||
|
uses: ./.gitea/actions/poetrybuild
|
||||||
|
- name: Test typing with mypy
|
||||||
|
run: poetry run mypy
|
||||||
18
.gitea/workflows/publish.yaml
Normal file
18
.gitea/workflows/publish.yaml
Normal file
@@ -0,0 +1,18 @@
|
|||||||
|
# SPDX-FileCopyrightText: 2023 Max Mehl <https://mehl.mx>
|
||||||
|
#
|
||||||
|
# SPDX-License-Identifier: Apache-2.0
|
||||||
|
|
||||||
|
name: Python package
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
tags:
|
||||||
|
- "v*.*.*"
|
||||||
|
jobs:
|
||||||
|
build:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v4
|
||||||
|
- name: Build and publish to PyPI
|
||||||
|
uses: https://github.com/JRubics/poetry-publish@v1.17
|
||||||
|
with:
|
||||||
|
pypi_token: ${{ secrets.PYPI_TOKEN }}
|
||||||
19
.gitea/workflows/reuse.yaml
Normal file
19
.gitea/workflows/reuse.yaml
Normal file
@@ -0,0 +1,19 @@
|
|||||||
|
# SPDX-FileCopyrightText: 2023 Max Mehl <https://mehl.mx>
|
||||||
|
#
|
||||||
|
# SPDX-License-Identifier: Apache-2.0
|
||||||
|
|
||||||
|
name: REUSE Compliance
|
||||||
|
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches:
|
||||||
|
- main
|
||||||
|
pull_request:
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
reuse:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v4
|
||||||
|
- name: Check REUSE Compliance
|
||||||
|
uses: https://github.com/fsfe/reuse-action@v2
|
||||||
57
.gitea/workflows/selftests.yaml
Normal file
57
.gitea/workflows/selftests.yaml
Normal file
@@ -0,0 +1,57 @@
|
|||||||
|
# SPDX-FileCopyrightText: 2023 DB Systel GmbH
|
||||||
|
# SPDX-FileCopyrightText: 2023 Max Mehl <https://mehl.mx>
|
||||||
|
#
|
||||||
|
# SPDX-License-Identifier: Apache-2.0
|
||||||
|
|
||||||
|
name: Selftests
|
||||||
|
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches:
|
||||||
|
- main
|
||||||
|
pull_request:
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
# Test building the package and installing it via pip3
|
||||||
|
test-build-install:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v4
|
||||||
|
- name: Install poetry
|
||||||
|
run: pip install poetry
|
||||||
|
- name: Build package
|
||||||
|
run: poetry build
|
||||||
|
- name: Install package
|
||||||
|
run: pip3 install dist/seafile_mirror-*.tar.gz
|
||||||
|
- name: Run package
|
||||||
|
run: |
|
||||||
|
seafile-mirror --version
|
||||||
|
seafile-mirror --help
|
||||||
|
|
||||||
|
# Run tool and sync a test library
|
||||||
|
test-sync:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v4
|
||||||
|
- name: Install dependencies
|
||||||
|
uses: ./.gitea/actions/poetrybuild
|
||||||
|
# using minimal set of dependencies
|
||||||
|
with:
|
||||||
|
poetry_install_args: "--without dev"
|
||||||
|
- name: Install seaf-cli
|
||||||
|
run: |
|
||||||
|
apt-get update
|
||||||
|
apt-get install -y seafile-cli
|
||||||
|
- name: Configure seaf-cli and start daemon
|
||||||
|
run: |
|
||||||
|
seaf-cli init -d /tmp
|
||||||
|
seaf-cli start
|
||||||
|
- name: Fill configuration for test library
|
||||||
|
run: |
|
||||||
|
sed -i "s|__seafile_server__|${{ secrets.SEAFILE_SERVER }}|" tests/seafile_mirror.conf.yaml
|
||||||
|
sed -i "s|__seafile_user__|${{ secrets.SEAFILE_USER }}|" tests/seafile_mirror.conf.yaml
|
||||||
|
sed -i "s|__seafile_pass__|${{ secrets.SEAFILE_PASS }}|" tests/seafile_mirror.conf.yaml
|
||||||
|
- name: Sync the library
|
||||||
|
run: poetry run seafile-mirror -c tests -v
|
||||||
|
- name: Attempt to find expected string in library
|
||||||
|
run: grep "__ci_test_expect__" tests/ci-test/testfile.txt
|
||||||
1
.gitignore
vendored
1
.gitignore
vendored
@@ -8,3 +8,4 @@ venv/
|
|||||||
/seafile_mirror.conf.yaml
|
/seafile_mirror.conf.yaml
|
||||||
__pycache__/
|
__pycache__/
|
||||||
*.log
|
*.log
|
||||||
|
tests/ci-test/
|
||||||
|
|||||||
@@ -1,3 +1,10 @@
|
|||||||
# SPDX-FileCopyrightText: 2023 Max Mehl <https://mehl.mx>
|
# SPDX-FileCopyrightText: 2023 Max Mehl <https://mehl.mx>
|
||||||
#
|
#
|
||||||
# SPDX-License-Identifier: Apache-2.0
|
# SPDX-License-Identifier: Apache-2.0
|
||||||
|
|
||||||
|
|
||||||
|
"""Global init file"""
|
||||||
|
|
||||||
|
from importlib.metadata import version
|
||||||
|
|
||||||
|
__version__ = version("seafile-mirror")
|
||||||
|
|||||||
@@ -14,6 +14,7 @@ from time import sleep
|
|||||||
|
|
||||||
import yaml
|
import yaml
|
||||||
|
|
||||||
|
from . import __version__
|
||||||
from ._cachedb import db_read
|
from ._cachedb import db_read
|
||||||
from ._helpers import convert_bytes, findstring, get_lock
|
from ._helpers import convert_bytes, findstring, get_lock
|
||||||
from ._seafile import (
|
from ._seafile import (
|
||||||
@@ -48,9 +49,10 @@ parser.add_argument(
|
|||||||
default=False,
|
default=False,
|
||||||
help="Print and log DEBUG messages",
|
help="Print and log DEBUG messages",
|
||||||
)
|
)
|
||||||
|
parser.add_argument("--version", action="version", version="%(prog)s " + __version__)
|
||||||
|
|
||||||
|
|
||||||
def main():
|
def main(): # pylint: disable=too-many-locals, too-many-statements
|
||||||
"""Main function"""
|
"""Main function"""
|
||||||
args = parser.parse_args()
|
args = parser.parse_args()
|
||||||
# Set files depending on configdir
|
# Set files depending on configdir
|
||||||
|
|||||||
18
tests/seafile_mirror.conf.yaml
Normal file
18
tests/seafile_mirror.conf.yaml
Normal file
@@ -0,0 +1,18 @@
|
|||||||
|
# SPDX-FileCopyrightText: 2023 Max Mehl <https://mehl.mx>
|
||||||
|
#
|
||||||
|
# SPDX-License-Identifier: Apache-2.0
|
||||||
|
|
||||||
|
# Configuration file for seafile-mirror which will be filled in and applied in
|
||||||
|
# the CI test
|
||||||
|
- server: __seafile_server__
|
||||||
|
user: __seafile_user__
|
||||||
|
password: __seafile_pass__
|
||||||
|
# The default resync interval
|
||||||
|
resync_interval_days: 7
|
||||||
|
# Define the libraries which shall be synced
|
||||||
|
libs:
|
||||||
|
- name: ci-test
|
||||||
|
# ID of the Seafile library (can be seen in the web UI)
|
||||||
|
id: 558667f5-cee2-443d-8f8e-668e70a23e9f
|
||||||
|
# local directory where the mirror shall be created
|
||||||
|
dir: tests/ci-test
|
||||||
Reference in New Issue
Block a user