diff --git a/.gitea/poetrybuild/action.yaml b/.gitea/poetrybuild/action.yaml new file mode 100644 index 0000000..d4c932d --- /dev/null +++ b/.gitea/poetrybuild/action.yaml @@ -0,0 +1,23 @@ +# SPDX-FileCopyrightText: 2023 DB Systel GmbH +# +# SPDX-License-Identifier: Apache-2.0 + +name: "Reusable Poetry build workflow" +inputs: + python: + default: "3.9" + description: "Value for 'python-version'" + required: false + type: string +runs: + using: "composite" + steps: + - name: Set up Python + uses: actions/setup-python@v2 + with: + python-version: ${{ inputs.python }} + - name: Install dependencies + run: | + pip install poetry + poetry install --no-interaction + shell: bash diff --git a/.gitea/workflows/publish.yaml b/.gitea/workflows/publish.yaml new file mode 100644 index 0000000..c1f24fb --- /dev/null +++ b/.gitea/workflows/publish.yaml @@ -0,0 +1,14 @@ +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 }} diff --git a/.gitea/workflows/test.yaml b/.gitea/workflows/test.yaml new file mode 100644 index 0000000..98d653d --- /dev/null +++ b/.gitea/workflows/test.yaml @@ -0,0 +1,104 @@ +# SPDX-FileCopyrightText: 2023 DB Systel GmbH +# +# SPDX-License-Identifier: Apache-2.0 + +name: Test suites + +on: + push: + branches: + - main + pull_request: + +jobs: + # # Test using the tool via poetry on different OSes and python versions + # test-os-python-matrix: + # runs-on: ${{ matrix.os }} + # strategy: + # max-parallel: 10 + # # do not abort the whole test job if one combination in the matrix fails + # fail-fast: false + # matrix: + # python-version: ["3.9", "3.10", "3.11"] + # os: [ubuntu-20.04] + # include: + # - python-version: "3.9" + # os: macos-latest + # - python-version: "3.9" + # os: windows-latest + + # steps: + # - uses: actions/checkout@v2 + # - uses: ./.gitea/actions/poetrybuild + # - name: Execute seafile-mirror + # run: poetry run ossrfc --help + + # # Test building the package and installing it via pip3 + # test-build-install: + # runs-on: ubuntu-20.04 + # steps: + # - uses: actions/checkout@v2 + # - name: Set up Python + # uses: actions/setup-python@v2 + # with: + # python-version: "3.9" + # - name: Install poetry + # run: pip install poetry + # - name: Build package + # run: poetry build + # - name: Install package + # run: pip3 install dist/oss_red_flag_checker-*.tar.gz + # - name: Run package + # run: | + # ossrfc --version + # ossrfc --help + + # Run tool against own repository + selftest: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - uses: ./.github/actions/poetrybuild + - name: Check own repository in DEBUG mode + run: poetry run seafile-mirror --help + + # pytest: + # runs-on: ubuntu-20.04 + # steps: + # - uses: actions/checkout@v2 + # - uses: ./.github/actions/poetrybuild + # - name: Test with pytest + # run: poetry run pytest + + # pylint: + # runs-on: ubuntu-20.04 + # steps: + # - uses: actions/checkout@v2 + # - uses: ./.github/actions/poetrybuild + # - name: Lint with pylint + # run: poetry run pylint ossrfc/ tests/ + + # formatting: + # runs-on: ubuntu-20.04 + # steps: + # - uses: actions/checkout@v2 + # - uses: ./.github/actions/poetrybuild + # - name: Test formatting with isort and black + # run: | + # poetry run isort --check ossrfc/ + # poetry run black . + + # mypy: + # runs-on: ubuntu-20.04 + # steps: + # - uses: actions/checkout@v2 + # - uses: ./.github/actions/poetrybuild + # - name: Test typing with mypy + # run: poetry run mypy + + reuse: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + - name: Check REUSE Compliance + uses: https://github.com/fsfe/reuse-action@v2 diff --git a/tests/seafile_mirror.conf.yaml b/tests/seafile_mirror.conf.yaml new file mode 100644 index 0000000..0cf15fc --- /dev/null +++ b/tests/seafile_mirror.conf.yaml @@ -0,0 +1,17 @@ +# SPDX-FileCopyrightText: 2023 Max Mehl +# +# SPDX-License-Identifier: Apache-2.0 + +# Example configuration file for seafile-mirror +- 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