Skip to content

Commit

Permalink
add CI workflows
Browse files Browse the repository at this point in the history
  • Loading branch information
mxmehl committed Feb 7, 2025
1 parent 8c3a07d commit cc36059
Show file tree
Hide file tree
Showing 3 changed files with 141 additions and 0 deletions.
30 changes: 30 additions & 0 deletions .github/actions/poetrybuild.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
# SPDX-FileCopyrightText: 2025 DB Systel GmbH
#
# SPDX-License-Identifier: Apache-2.0

name: "Reusable Poetry build workflow"
inputs:
python:
default: "3.10"
description: "Value for 'python-version'"
required: false
type: string
poetry_args:
default: ""
description: "Additional arguments for the poetry install step'"
required: false
type: string
runs:
using: "composite"
steps:
- name: Install poetry
run: pipx install poetry
shell: bash
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: ${{ inputs.python }}
cache: "poetry"
- name: Install dependencies
run: poetry install --no-interaction ${{ inputs.poetry_args }}
shell: bash
18 changes: 18 additions & 0 deletions .github/workflows/publish.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
# SPDX-FileCopyrightText: 2025 DB Systel GmbH
#
# SPDX-License-Identifier: Apache-2.0

name: Publish release on PyPI
on:
release:
types: [published]

jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Build and publish to PyPI
uses: JRubics/[email protected]
with:
pypi_token: ${{ secrets.PYPI_TOKEN }}
93 changes: 93 additions & 0 deletions .github/workflows/test.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,93 @@
# SPDX-FileCopyrightText: 2025 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.10", "3.11", "3.12", "3.13"]
os: [ubuntu-22.04]
include:
- python-version: "3.10"
os: macos-latest
- python-version: "3.10"
os: windows-latest

steps:
- uses: actions/checkout@v4
- uses: ./.github/actions/poetrybuild
with:
python: ${{ matrix.python-version }}
poetry_args: --only main
- name: Execute purl-tools
run: poetry run purl-tools --help

# Test building the package and installing it via pip3
test-build-install:
runs-on: ubuntu-22.04
steps:
- uses: actions/checkout@v4
- name: Install poetry
run: pipx install poetry
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: "3.10"
cache: "poetry"
- name: Build package
run: poetry build
- name: Install package
run: pip3 install dist/purl-tools-*.tar.gz
- name: Run package
run: |
purl-tools --version
purl-tools --help
# Formatting
pylint:
runs-on: ubuntu-22.04
steps:
- uses: actions/checkout@v4
- uses: ./.github/actions/poetrybuild
- name: Lint with pylint
run: poetry run pylint --disable=fixme purltools/

formatting:
runs-on: ubuntu-22.04
steps:
- uses: actions/checkout@v4
- uses: ./.github/actions/poetrybuild
- name: Test formatting with isort and black
run: |
poetry run isort --check purltools/
poetry run black --check .
mypy:
runs-on: ubuntu-22.04
steps:
- uses: actions/checkout@v4
- uses: ./.github/actions/poetrybuild
- name: Test typing with mypy
run: poetry run mypy

# REUSE
reuse:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Check REUSE Compliance
uses: fsfe/reuse-action@v3

0 comments on commit cc36059

Please sign in to comment.