Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 16 additions & 0 deletions .github/codeql/codeql-config.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
name: "CodeQL config"

# Paths to exclude from analysis
paths-ignore:
- '**/tests/**'
- '**/test_*.py'
- 'tests/**'
- '.pytest_cache/**'

# Optionally specify paths to include (if you want to be explicit)
# paths:
# - trustpoint

# Query suites to use
# queries:
# - uses: security-extended
85 changes: 85 additions & 0 deletions .github/workflows/check-licenses.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,85 @@
name: Code Quality / License Check

on:
pull_request:
types:
- opened
- synchronize
paths:
# Self
- ".github/workflows/check-licenses.yml"
# Python Ecosystem
- "**/pyproject.toml"
- "**/setup.py"
- "**/requirements*.txt"
- "**/Pipfile.lock"
- "**/uv.lock"

jobs:
check-licenses:
runs-on: ubuntu-latest
permissions:
contents: read
pull-requests: write

steps:
- name: Checkout Code
uses: actions/checkout@v7

- name: Setup uv environment
uses: ./.github/actions/setup-uv-action

- name: Install pip-licenses
run: uv tool install pip-licenses

- name: Generate license report
run: uv tool run pip-licenses --format=markdown --order=license > licenses.md
continue-on-error: true

- name: Check for incompatible licenses
run: |
# Check for GPL licenses (incompatible with MIT for distribution)
if uv tool run pip-licenses | grep -iE "GPL-[0-9]|GPLv[0-9]" | grep -v "LGPL"; then
echo "::error::Found GPL-licensed dependencies which may have compatibility issues with MIT license"
echo "GPL licenses found:"
uv tool run pip-licenses | grep -iE "GPL-[0-9]|GPLv[0-9]" | grep -v "LGPL"
exit 1
fi

# Check for proprietary licenses
if uv tool run pip-licenses | grep -iE "Proprietary|Commercial"; then
echo "::error::Found proprietary/commercial licenses that need review"
echo "Proprietary licenses found:"
uv tool run pip-licenses | grep -iE "Proprietary|Commercial"
exit 1
fi

echo "✅ No incompatible licenses detected"

- name: Comment license report on PR
if: always() && github.event.pull_request.head.repo.full_name == github.repository
uses: actions/github-script@v9
with:
script: |
const fs = require('fs');
let report = '';
try {
report = fs.readFileSync('licenses.md', 'utf8');
} catch (e) {
report = '⚠️ License report generation failed';
}

const comment = `## 📋 License Check Report

${report}

---
**Note:** This project is MIT-licensed. LGPL and most permissive licenses are compatible. GPL and proprietary licenses require review.
`;

await github.rest.issues.createComment({
issue_number: context.issue.number,
owner: context.repo.owner,
repo: context.repo.repo,
body: comment
});
91 changes: 91 additions & 0 deletions .github/workflows/codeql.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,91 @@
name: "Security / CodeQL Advanced"

on:
push:
branches: [ "main" ]
pull_request:
branches: [ "main" ]
schedule:
- cron: '44 7 * * 2'

jobs:
analyze:
name: Analyze (${{ matrix.language }})
# Runner size impacts CodeQL analysis time. To learn more, please see:
# - https://gh.io/recommended-hardware-resources-for-running-codeql
# - https://gh.io/supported-runners-and-hardware-resources
# - https://gh.io/using-larger-runners (GitHub.com only)
# Consider using larger runners or machines with greater resources for possible analysis time improvements.
runs-on: ${{ (matrix.language == 'swift' && 'macos-latest') || 'ubuntu-latest' }}
permissions:
# required for all workflows
security-events: write

# required to fetch internal or private CodeQL packs
packages: read

# only required for workflows in private repositories
actions: read
contents: read

strategy:
fail-fast: false
matrix:
include:
- language: actions
build-mode: none
- language: python
build-mode: none
# CodeQL supports the following values keywords for 'language': 'actions', 'c-cpp', 'csharp', 'go', 'java-kotlin', 'javascript-typescript', 'python', 'ruby', 'rust', 'swift'
# Use `c-cpp` to analyze code written in C, C++ or both
# Use 'java-kotlin' to analyze code written in Java, Kotlin or both
# Use 'javascript-typescript' to analyze code written in JavaScript, TypeScript or both
# To learn more about changing the languages that are analyzed or customizing the build mode for your analysis,
# see https://docs.github.com/en/code-security/code-scanning/creating-an-advanced-setup-for-code-scanning/customizing-your-advanced-setup-for-code-scanning.
# If you are analyzing a compiled language, you can modify the 'build-mode' for that language to customize how
# your codebase is analyzed, see https://docs.github.com/en/code-security/code-scanning/creating-an-advanced-setup-for-code-scanning/codeql-code-scanning-for-compiled-languages
steps:
- name: Checkout repository
uses: actions/checkout@v7

# Add any setup steps before running the `github/codeql-action/init` action.
# This includes steps like installing compilers or runtimes (`actions/setup-node`
# or others). This is typically only required for manual builds.
# - name: Setup runtime (example)
# uses: actions/setup-example@v1

# Initializes the CodeQL tools for scanning.
- name: Initialize CodeQL
uses: github/codeql-action/init@v4
with:
languages: ${{ matrix.language }}
build-mode: ${{ matrix.build-mode }}
config-file: ./.github/codeql/codeql-config.yml
# If you wish to specify custom queries, you can do so here or in a config file.
# By default, queries listed here will override any specified in a config file.
# Prefix the list here with "+" to use these queries and those in the config file.

# For more details on CodeQL's query packs, refer to: https://docs.github.com/en/code-security/code-scanning/automatically-scanning-your-code-for-vulnerabilities-and-errors/configuring-code-scanning#using-queries-in-ql-packs
# queries: security-extended,security-and-quality

# If the analyze step fails for one of the languages you are analyzing with
# "We were unable to automatically build your code", modify the matrix above
# to set the build mode to "manual" for that language. Then modify this step
# to build your code.
# ℹ️ Command-line programs to run using the OS shell.
# 📚 See https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idstepsrun
- name: Run manual build steps
if: matrix.build-mode == 'manual'
shell: bash
run: |
echo 'If you are using a "manual" build mode for one or more of the' \
'languages you are analyzing, replace this with the commands to build' \
'your code, for example:'
echo ' make bootstrap'
echo ' make release'
exit 1

- name: Perform CodeQL Analysis
uses: github/codeql-action/analyze@v4
with:
category: "/language:${{matrix.language}}"
2 changes: 1 addition & 1 deletion .github/workflows/mypy.yml
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
name: MyPy
name: Code Quality / MyPy

# Trigger this workflow on pull requests, ensuring type checks are performed before merging.
on: [pull_request]
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/pytest.yml
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
name: Pytest
name: Tests / Pytest

# Trigger this workflow on pull requests to ensure tests are executed before merging.
on:
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/python-publish.yml
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
name: Publish Python Package to PyPi
name: CI/CD / Publish Python Package to PyPi

on:
push:
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/ruff.yml
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
name: Ruff
name: Code Quality / Ruff

# Trigger this workflow on pull requests to ensure tests are executed before merging.
on: [pull_request]
Expand Down
4 changes: 2 additions & 2 deletions pyproject.toml
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
[project]
name = "trustpoint-core"
version = "0.3.1"
version = "0.3.2"
description = "Trustpoint core functionalities used by several other Trustpoint repositories."
requires-python = ">=3.12"
dependencies = [
"cryptography>=46.0.1",
"cryptography>=49.0.0",
"hatchling>=1.27.0",
]

Expand Down
Loading
Loading