add CI tests and publishing workflows
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
|
||||
55
.gitea/workflows/selftests.yaml
Normal file
55
.gitea/workflows/selftests.yaml
Normal file
@@ -0,0 +1,55 @@
|
||||
# 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 --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
|
||||
Reference in New Issue
Block a user