A curated library of reusable GitHub Actions, workflows, and helpers maintained by Diogo Ribeiro (ESMAD — Instituto Politécnico do Porto). This repository stores a collection of reusable GitHub Actions, and the goal is to centralize workflows, composite actions, and utilities so they can be shared across multiple projects.
- Composite actions for Python, Java, Node.js, R, Gradle, security scanning, dependency governance, and environment setup stored in
.github/actions/. - Reusable workflows covering CI for popular stacks, artifact publishing, infrastructure automation, security checks, and release orchestration in
.github/workflows/. - Reference documentation for the most feature-rich workflows under
docs/with step-by-step usage notes and configuration guides. - Example projects in
examples/demonstrating how to consume the composite actions and workflows in real repositories. - Utility scripts and tests in
scripts/andtests/to keep the collection up to date and verifiable.
| Path | Purpose |
|---|---|
.github/actions/ |
Composite actions written in YAML that can be consumed from any repository. |
.github/workflows/ |
Reusable workflows invokable through workflow_call plus local automation for this repository. |
docs/ |
Extended documentation for complex workflows (API testing, multi-cloud deploy, PyPI trusted publishing, etc.). |
examples/ |
Sample repositories showcasing how to wire the actions and workflows together. |
scripts/ |
Python utilities used by composite actions and migration helpers. |
tests/ |
Pytest suite covering helper scripts and workflow generators. |
requirements-dev.txt |
Development dependencies required to run scripts and tests locally. |
Example layout:
.github/
├── actions/
│ ├── lint-python/
│ │ └── action.yml
│ └── check-imports/
│ └── action.yml
└── workflows/
├── release.yml
└── security-scan.yml
Call any reusable workflow directly from another repository via the uses: keyword:
name: Reuse Example
on:
push:
branches: [ main ]
jobs:
call-workflow:
uses: DiogoRibeiro7/gh-actions-collection/.github/workflows/release.yml@mainReference a composite action inside an existing workflow:
steps:
- uses: actions/checkout@v4
- name: Check Imports
uses: DiogoRibeiro7/gh-actions-collection/.github/actions/check-imports@mainTip: Replace
@mainwith a tagged release for reproducible pipelines.
This repository includes helper scripts and example workflows that rely on a small Python toolchain. Install the development requirements in an isolated environment before running the utilities or the test suite:
python -m venv .venv
source .venv/bin/activate
python -m pip install -r requirements-dev.txtRun the automated checks locally with:
pytestThe scripts/migrate_starter_workflows.py CLI uses PyYAML to parse GitHub workflow manifests.
Installing the development dependencies ensures the converter and its tests run successfully.
Each complex workflow is paired with a dedicated guide under docs/, and the examples/ directory contains minimal repositories ready to copy-paste into your projects:
- API testing contract checks (
docs/api-testing.md,examples/api-testing/) - Multi-cloud infrastructure deployments (
docs/multi-cloud-deploy.md,examples/multi-cloud-deploy/) - Trusted PyPI releases (
docs/pypi-trusted-publishing.md,examples/python-package/) - Smart dependency management (
docs/smart-dependency-update.md,examples/smart-dependency-update/) - Vercel Next.js deployments (
docs/vercel-nextjs.md)
Browse the remaining guides for workflows covering artifact management, database migrations, Deno projects, PyTorch training, and more.
The security-scan workflow audits Python dependencies and runs static analysis.
It uploads SARIF results to GitHub code scanning and saves them as build artifacts while retaining least privilege.
permissions:
contents: read
security-events: write
id-token: write
attestations: write
jobs:
scan:
uses: DiogoRibeiro7/gh-actions-collection/.github/workflows/security-scan.yml@mainFor a full example see examples/python-package/.github/workflows/security.yml.
Additional security helpers:
secret-scancomposite action runs gitleaks to block secret leaks.codeql-analysisworkflow runs CodeQL for Python, JavaScript, and Go.dependency-reviewworkflow warns about vulnerable dependency changes.multi-cloud-deployworkflow deploys Terraform, Pulumi, or Bicep stacks to AWS, Azure, and GCP with OIDC authentication, drift detection, and cost estimates.apm-integrationcomposite action sends deployment events and custom metrics to Datadog, New Relic, or Application Insights.artifact-managementworkflow cleans stale build artifacts, package versions, and container images.
| Action | Path | Inputs & outputs | Summary |
|---|---|---|---|
| APM Integration | .github/actions/apm-integration |
Required inputs: provider, api-key; optional: app-id, environment, deployment-id, metrics-file. |
Sends deployment markers and optional custom metrics to Datadog, New Relic, or Azure Application Insights. |
| AWS Lambda Build (Python) | .github/actions/aws-lambda-build |
Optional inputs: src, output-zip, python-version, pip-version. |
Packages a Python Lambda with dependency vendoring and reproducible ZIP output. |
| Benchmark Smoke | .github/actions/benchmark-smoke |
Optional inputs: python-version, working-directory, pytest-args, pip-version. |
Runs pytest-benchmark, captures JSON output, and uploads the results as an artifact. |
| Check Imports vs pyproject | .github/actions/check-imports |
Optional inputs: paths, fail-on, format, update-pyproject, create-pr, pr-branch, python-version, pip-version, smart-update. |
Compares imports to pyproject.toml, optionally amends dependencies, and can open PRs with fixes. |
| Gradle Build | .github/actions/gradle-build |
Optional inputs: java-version, tasks, gradle-args, working-directory. |
Executes Gradle tasks with setup-java and setup-gradle caching support. |
| Markdown Lint | .github/actions/markdown-lint |
Optional inputs: paths, config-file, node-version. |
Installs markdownlint-cli and enforces Markdown conventions. |
| PR Template Enforcer | .github/actions/pr-template-enforcer |
No inputs. | Fails a workflow if pull requests omit required summary and testing sections. |
| Python Lint & Type Check | .github/actions/python-lint |
Optional inputs: python-version, enable-mypy, pip-version. |
Runs Ruff linting and optionally mypy with pip caching. |
| Python Type Check | .github/actions/python-type-check |
Optional inputs: python-version, working-directory, requirements-file, extra-dependencies, mypy-args, pip-version. |
Installs dependencies and executes mypy across a repository or subdirectory. |
| R Lint | .github/actions/r-lint |
Optional inputs: r-version, cran-mirror, use-public-rspm, targets, config-file, additional-packages, working-directory. |
Provisions R (via setup-r) and runs lintr against provided targets. |
| R Testthat | .github/actions/r-testthat |
Optional inputs: r-version, cran-mirror, use-public-rspm, test-directory, install-dependencies, additional-packages, working-directory, use-devtools. |
Installs dependencies and runs testthat or devtools::test() suites. |
| Secret Scan | .github/actions/secret-scan |
Optional input: args. |
Wraps the official gitleaks action to scan repositories for leaked credentials. |
| Setup Poetry (with cache) | .github/actions/setup-poetry |
Optional inputs: python-version, install-deps, pip-version. |
Installs Poetry, primes pip/Poetry caches, and optionally runs poetry install. |
| Setup R Environment | .github/actions/setup-r |
Optional inputs: r-version, cran-mirror, use-public-rspm, packages, working-directory. |
Installs R with optional package bootstrapping and RSPM acceleration. |
| Setup Yarn (Corepack) | .github/actions/setup-yarn |
Optional inputs: node-version, working-directory. |
Enables Corepack, caches Yarn artifacts, and runs yarn install --immutable when a lockfile exists. |
| Smart Dependency Update | .github/actions/smart-dependency-update |
Required input: manifests; optional: apply, batch-size, dependabot, repo, github-token, pip-version. Outputs: report. |
Batches dependency upgrades, optionally consults Dependabot alerts, and emits a JSON report. |
Python tooling upgrade policy: Python-based composite actions default to the latest pip release that has been validated in this repository (
24.3.1). Consumers can override thepip-versioninput (set it tolatestto follow upstream automatically) and upgrades are reviewed quarterly or when security advisories require it. Each release bump is tested in CI before updating the default to prevent supply-chain breakages.
| Workflow | Path | Requirements | Summary |
|---|---|---|---|
| API Testing | .github/workflows/api-testing.yml |
Inputs: openapi-spec, contract-path, base-url; Secrets: —. |
Validates OpenAPI specs, runs Postman or Pact contract checks, and optionally executes k6 load tests, GraphQL linting, and OWASP ZAP scans (contract-type, load-script, graphql-schema, auth-command, run-zap, zap-token). |
| CI Monorepo by Path | .github/workflows/ci-monorepo-matrix.yml |
Inputs: groups; Secrets: —. |
Splits monorepos into path-based job groups by delegating to other reusable workflows. |
| Concurrency and Caching Template | .github/workflows/concurrency-caching.yml |
Inputs: —; Secrets: —. | Starter template demonstrating default permissions, concurrency groups, and cache sharing patterns. |
| Deno CI | .github/workflows/deno-ci.yml |
Inputs: —; Secrets: —. | Lints, formats, and tests Deno apps with optional matrix (deno-version, os-matrix) and deploy support (deploy, project, deno-deploy-token). |
| .NET CI | .github/workflows/dotnet-ci.yml |
Inputs: —; Secrets: —. | Restores, builds, and tests .NET solutions with configurable SDKs, frameworks, and test toggles. |
| Go CI | .github/workflows/go-ci.yml |
Inputs: —; Secrets: —. | Performs Go module linting, testing, and coverage with configurable Go versions. |
| Java CI | .github/workflows/java-ci.yml |
Inputs: —; Secrets: —. | Builds and tests Maven or Gradle projects with configurable build tool selection. |
| Node CI | .github/workflows/node-ci.yml |
Inputs: —; Secrets: —. | Handles npm/Yarn install, lint, and test jobs with optional OS/Python matrices. |
| Python Lint | .github/workflows/python-lint.yml |
Inputs: python-version, enable-mypy, pip-version; Secrets: —. |
Wraps the composite Python lint action with configurable Python version, pip bootstrap, and mypy toggle. |
| Python Test Matrix | .github/workflows/python-test-matrix.yml |
Inputs: python-versions, os-matrix, test-command, pip-version; Secrets: —. |
Executes tests across custom OS and Python matrices with governed pip upgrades and supports arbitrary test commands. |
| PyTorch Train and Deploy | .github/workflows/pytorch-train-deploy.yml |
Inputs: —; Secrets: —. | Trains PyTorch models, publishes artifacts, optionally benchmarks/deploys, and can push to MLflow (hf-token, deploy, mlflow-uri). |
| Ruby CI | .github/workflows/ruby-ci.yml |
Inputs: —; Secrets: —. | Bundles, lints, and tests Ruby projects with multi-version matrices and optional Rubygems auth (rubygems-token). |
| Rust CI | .github/workflows/rust-ci.yml |
Inputs: —; Secrets: —. | Builds, tests, and runs clippy, fmt, and cargo audit with sensible caching defaults. |
| Coverage Report | .github/workflows/coverage-report.yml |
Inputs: python-version, test-command, pip-version; Secrets: —. |
Runs Python tests and publishes HTML coverage artifacts with configurable interpreter, pip bootstrap, and test command. |
| Canary Release | .github/workflows/canary-release.yml |
Inputs: project-type; Secrets: —. |
Creates canary builds for Python, npm, or Docker projects; supports custom working directories and build backends (working-directory, build-backend, image, NPM_TOKEN). |
| Conventions: Conventional Commits | .github/workflows/conventional-commits.yml |
Inputs: —; Secrets: —. | Enforces the Conventional Commits spec across PRs. |
| Examples Smoke | .github/workflows/examples-smoke.yml |
Inputs: —; Secrets: —. | Validates that the example projects in this repository continue to build and test successfully. |
| Permissions Hardened Template | .github/workflows/permissions-template.yml |
Inputs: —; Secrets: —. | Opinionated starter that applies least-privilege permissions, concurrency, and cache patterns. |
| Test Python Test Matrix | .github/workflows/test-python-test-matrix.yml |
Inputs: —; Secrets: —. | Regression workflow demonstrating expected behavior for the reusable Python test matrix. |
| Workflow | Path | Requirements | Summary |
|---|---|---|---|
| Artifact Management | .github/workflows/artifact-management.yml |
Inputs: —; Secrets: GH_TOKEN. |
Cleans up build artifacts, packages, and container images with retention, size, and registry filters. |
| Changelog Auto PR | .github/workflows/changelog-auto-pr.yml |
Inputs: —; Secrets: —. | Opens automated PRs with changelog updates using configurable commit messages and branches. |
| Docker Build & Push | .github/workflows/docker-build-push.yml |
Inputs: image; Secrets: —. |
Builds and pushes multi-platform container images with optional registry credentials and AWS ECR role assumption. |
| Publish Docker on Tag | .github/workflows/publish-docker-on-tag.yml |
Inputs: —; Secrets: —. | Builds and publishes Docker images on tag events with optional registry credentials and build args. |
| Release Container | .github/workflows/release-container.yml |
Inputs: —; Secrets: —. | Publishes versioned container images on semantic tags with provenance attestation. |
| Release Drafter | .github/workflows/release-drafter.yml |
Inputs: —; Secrets: —. | Generates draft release notes using configurable categories and templates. |
| Semantic Release | .github/workflows/release.yml |
Inputs: —; Secrets: —. | Automates semantic-release for Node.js projects with configurable Node runtime. |
| Publish to npm (simple) | .github/workflows/publish-to-npm.yml |
Inputs: —; Secrets: —. | Publishes npm packages from a single job with configurable Node version. |
| Publish to npm (advanced) | .github/workflows/npm-publish.yml |
Inputs: —; Secrets: NPM_TOKEN. |
Handles advanced npm publication scenarios including subdirectories and dist-tags. |
| Publish to PyPI (simple) | .github/workflows/publish-to-pypi.yml |
Inputs: python-version, pip-version; Secrets: —. |
Publishes Python packages with API tokens, configurable Python versions, and governed pip upgrades. |
| Publish to PyPI (trusted publishing) | .github/workflows/pypi-publish.yml |
Inputs: python-version, build-backend, environment, pre-release, pip-version; Secrets: —. |
Uses OIDC trusted publishing with optional pre-release tagging, build backend selection, environment protection, and pip upgrade policy alignment. |
| Vercel Next.js Deploy | .github/workflows/vercel-nextjs.yml |
Inputs: vercel-org-id, vercel-project-id; Secrets: vercel-token. |
Builds and deploys Next.js apps to Vercel with optional preview/production selection and custom Node versions. |
| Workflow | Path | Requirements | Summary |
|---|---|---|---|
| AWS Lambda Deploy | .github/workflows/aws-lambda-deploy.yml |
Inputs: aws-role, functions, pip-version; Secrets: —. |
Deploys serverless functions via OIDC role assumption with region overrides, structured function definitions, and configurable pip bootstrapping for Python runtimes. |
| Database Migration | .github/workflows/database-migration.yml |
Inputs: tool, migration-dir, environments, pip-version; Secrets: —. |
Runs Flyway, Liquibase, or Alembic migrations across multiple environments with optional dry-run mode, Flyway license support, and governed pip upgrades for Alembic. |
| Helm Chart Lint & Test | .github/workflows/helm-chart-lint-test.yml |
Inputs: —; Secrets: —. | Lints and optionally tests Helm charts, including OCI registry publishing when requested. |
| Infra Lint | .github/workflows/infra-lint.yml |
Inputs: —; Secrets: —. | Lints Terraform, CloudFormation, and related IaC code with optional path targeting. |
| Kubernetes Manifests Lint | .github/workflows/k8s-manifests-lint.yml |
Inputs: —; Secrets: —. | Validates Kubernetes manifests with kubeval, kube-score, and policy checks with configurable paths. |
| Multi-Cloud Deploy | .github/workflows/multi-cloud-deploy.yml |
Inputs: tool, environment; Secrets: —. |
Orchestrates Terraform, Pulumi, or Bicep deployments across AWS, Azure, and GCP with OIDC and backend configuration options (aws-role-arn, azure-*, gcp-*, env-file, backend-config, pulumi-backend, azure-credentials). |
| Terraform Apply (AWS OIDC) | .github/workflows/terraform-aws.yml |
Inputs: aws-role; Secrets: —. |
Plans and applies Terraform using GitHub OIDC with toggles for region, version, apply mode, and failure rollback. |
| Terraform Plan (PR comment) | .github/workflows/terraform-plan-comment.yml |
Inputs: —; Secrets: —. | Generates Terraform plans and posts summaries back to pull requests with optional working directory selection. |
| Workflow | Path | Requirements | Summary |
|---|---|---|---|
| CodeQL Analysis | .github/workflows/codeql-analysis.yml |
Inputs: —; Secrets: —. | Runs CodeQL analysis for Python, JavaScript, and Go with upload permissions preconfigured. |
| Conventional Commits | .github/workflows/conventional-commits.yml |
Inputs: —; Secrets: —. | Checks commit messages for the Conventional Commits specification. |
| Dependency Review | .github/workflows/dependency-review.yml |
Inputs: —; Secrets: —. | Annotates pull requests with dependency vulnerability information using GitHub's dependency-review action. |
| Lockfile Consistency | .github/workflows/lockfile-consistency.yml |
Inputs: pip-version; Secrets: —. |
Validates that npm, Yarn, pip, and Poetry lockfiles match their manifests with configurable pip bootstrapping. |
| PR Policy | .github/workflows/pr-policy.yml |
Inputs: —; Secrets: —. | Applies repository policy checks such as title formatting and draft status enforcement. |
| Security Scan | .github/workflows/security-scan.yml |
Inputs: paths, skip-trivy, pip-version; Secrets: —. |
Runs Trivy, pip-audit, Bandit, and dependency checks with configurable pip bootstrapping plus optional path targeting and Trivy skip flag. |
These workflows run locally in this repository to keep the collection healthy and demonstrate expected behavior.
| Workflow | Path | Triggers | Purpose |
|---|---|---|---|
| Examples Smoke | .github/workflows/examples-smoke.yml |
push, pull_request |
Builds and tests each project under examples/ to ensure the samples stay runnable. |
| Python Type Check | .github/workflows/python-type-check.yml |
push, pull_request, workflow_dispatch |
Runs mypy across repository scripts to guard helper utilities. |
| R Package Check | .github/workflows/r-cmd-check.yml |
push, pull_request, workflow_dispatch |
Executes R CMD check across supported operating systems for the R examples. |
| R Lint | .github/workflows/r-lint.yml |
push, pull_request, workflow_dispatch |
Lints R sources and examples using the composite R lint action. |
| R Tests (testthat) | .github/workflows/r-testthat.yml |
push, pull_request, workflow_dispatch |
Runs testthat suites for the R example projects. |
| Test Python Test Matrix Workflow | .github/workflows/test-python-test-matrix.yml |
workflow_dispatch, push |
Verifies the reusable Python matrix workflow against known scenarios. |
| Name | Type | Path | Inputs | Outputs | Example |
|---|---|---|---|---|---|
| Python Lint & Type Check | composite | .github/actions/python-lint |
python-version, enable-mypy, pip-version |
– | uses: DiogoRibeiro7/gh-actions-collection/.github/actions/python-lint@main |
| Python Type Check (mypy) | composite | .github/actions/python-type-check |
python-version, working-directory, requirements-file, extra-dependencies, mypy-args, pip-version |
– | uses: DiogoRibeiro7/gh-actions-collection/.github/actions/python-type-check@main |
| Check Imports vs pyproject | composite | .github/actions/check-imports |
paths, fail-on, format, update-pyproject, create-pr, pr-branch, python-version, pip-version, smart-update |
– | uses: DiogoRibeiro7/gh-actions-collection/.github/actions/check-imports@main |
| Smart Dependency Update | composite | .github/actions/smart-dependency-update |
manifests, apply, batch-size, dependabot, repo, github-token, pip-version |
report |
uses: DiogoRibeiro7/gh-actions-collection/.github/actions/smart-dependency-update@main |
| APM Integration | composite | .github/actions/apm-integration |
provider, api-key, app-id, environment, deployment-id, metrics-file |
– | uses: DiogoRibeiro7/gh-actions-collection/.github/actions/apm-integration@main |
| AWS Lambda Build (Python) | composite | .github/actions/aws-lambda-build |
src, output-zip, python-version, pip-version |
– | uses: DiogoRibeiro7/gh-actions-collection/.github/actions/aws-lambda-build@main |
| Setup Poetry (with cache) | composite | .github/actions/setup-poetry |
python-version, install-deps, pip-version |
– | uses: DiogoRibeiro7/gh-actions-collection/.github/actions/setup-poetry@main |
| Setup R Environment | composite | .github/actions/setup-r |
r-version, cran-mirror, use-public-rspm, packages, working-directory |
– | uses: DiogoRibeiro7/gh-actions-collection/.github/actions/setup-r@main |
| R Lint | composite | .github/actions/r-lint |
r-version, cran-mirror, use-public-rspm, targets, config-file, additional-packages, working-directory |
– | uses: DiogoRibeiro7/gh-actions-collection/.github/actions/r-lint@main |
| R Testthat | composite | .github/actions/r-testthat |
r-version, test-directory, install-dependencies, use-devtools, additional-packages, working-directory |
– | uses: DiogoRibeiro7/gh-actions-collection/.github/actions/r-testthat@main |
| Setup Yarn (Corepack) with cache | composite | .github/actions/setup-yarn |
node-version, working-directory |
– | uses: DiogoRibeiro7/gh-actions-collection/.github/actions/setup-yarn@main |
| Secret Scan | composite | .github/actions/secret-scan |
args |
– | uses: DiogoRibeiro7/gh-actions-collection/.github/actions/secret-scan@main |
| Benchmark Smoke | composite | .github/actions/benchmark-smoke |
python-version, working-directory, pytest-args, pip-version |
– | uses: DiogoRibeiro7/gh-actions-collection/.github/actions/benchmark-smoke@main |
| PR Template Enforcer | composite | .github/actions/pr-template-enforcer |
– | – | uses: DiogoRibeiro7/gh-actions-collection/.github/actions/pr-template-enforcer@main |
| Name | Type | Path | Inputs | Outputs | Example |
|---|---|---|---|---|---|
| CI Monorepo by Path | reusable | .github/workflows/ci-monorepo-matrix.yml |
groups |
– | uses: DiogoRibeiro7/gh-actions-collection/.github/workflows/ci-monorepo-matrix.yml@main |
| Infra Lint | reusable | .github/workflows/infra-lint.yml |
paths |
– | uses: DiogoRibeiro7/gh-actions-collection/.github/workflows/infra-lint.yml@main |
| Kubernetes Manifests Lint | reusable | .github/workflows/k8s-manifests-lint.yml |
paths |
– | uses: DiogoRibeiro7/gh-actions-collection/.github/workflows/k8s-manifests-lint.yml@main |
| Helm Chart Lint & Test | reusable | .github/workflows/helm-chart-lint-test.yml |
chart-path, publish, oci-registry |
– | uses: DiogoRibeiro7/gh-actions-collection/.github/workflows/helm-chart-lint-test.yml@main |
| Publish to npm (simple) | reusable | .github/workflows/publish-to-npm.yml |
node-version |
– | uses: DiogoRibeiro7/gh-actions-collection/.github/workflows/publish-to-npm.yml@main |
| Python Test Matrix | reusable | .github/workflows/python-test-matrix.yml |
python-versions, os-matrix, test-command, pip-version |
– | uses: DiogoRibeiro7/gh-actions-collection/.github/workflows/python-test-matrix.yml@main |
| Python Type Check | reusable | .github/workflows/python-type-check.yml |
– | – | uses: DiogoRibeiro7/gh-actions-collection/.github/workflows/python-type-check.yml@main |
| R Lint | reusable | .github/workflows/r-lint.yml |
– | – | uses: DiogoRibeiro7/gh-actions-collection/.github/workflows/r-lint.yml@main |
| R Tests (testthat) | reusable | .github/workflows/r-testthat.yml |
– | – | uses: DiogoRibeiro7/gh-actions-collection/.github/workflows/r-testthat.yml@main |
| R Package Check | reusable | .github/workflows/r-cmd-check.yml |
– | – | uses: DiogoRibeiro7/gh-actions-collection/.github/workflows/r-cmd-check.yml@main |
| Terraform Plan (PR comment) | reusable | .github/workflows/terraform-plan-comment.yml |
working-directory |
– | uses: DiogoRibeiro7/gh-actions-collection/.github/workflows/terraform-plan-comment.yml@main |
| Terraform Apply (AWS OIDC) | reusable | .github/workflows/terraform-aws.yml |
aws-role, aws-region, terraform-version, working-directory, apply, destroy-on-failure |
– | uses: DiogoRibeiro7/gh-actions-collection/.github/workflows/terraform-aws.yml@main |
| Multi-Cloud Deploy | reusable | .github/workflows/multi-cloud-deploy.yml |
tool, environment, provider creds |
– | uses: DiogoRibeiro7/gh-actions-collection/.github/workflows/multi-cloud-deploy.yml@main |
| AWS Lambda Deploy | reusable | .github/workflows/aws-lambda-deploy.yml |
aws-role, aws-region, functions, pip-version |
– | uses: DiogoRibeiro7/gh-actions-collection/.github/workflows/aws-lambda-deploy.yml@main |
| API Testing | reusable | .github/workflows/api-testing.yml |
openapi-spec, contract-path, base-url, contract-type, load-script, run-zap |
– | uses: DiogoRibeiro7/gh-actions-collection/.github/workflows/api-testing.yml@main |
| Artifact Management | reusable | .github/workflows/artifact-management.yml |
retention-days, keep-latest, max-size-mb, package-name, registry |
– | uses: DiogoRibeiro7/gh-actions-collection/.github/workflows/artifact-management.yml@main |
| Database Migration | reusable | .github/workflows/database-migration.yml |
tool, migration-dir, environments, dry-run, pip-version |
flyway-license-key |
uses: DiogoRibeiro7/gh-actions-collection/.github/workflows/database-migration.yml@main |
| Conventional Commits | reusable | .github/workflows/conventional-commits.yml |
– | – | uses: DiogoRibeiro7/gh-actions-collection/.github/workflows/conventional-commits.yml@main |
| Publish to npm (advanced) | reusable | .github/workflows/npm-publish.yml |
node-version, working-directory, tag |
– | uses: DiogoRibeiro7/gh-actions-collection/.github/workflows/npm-publish.yml@main |
| Publish to PyPI (simple) | reusable | .github/workflows/publish-to-pypi.yml |
python-version, pip-version |
– | uses: DiogoRibeiro7/gh-actions-collection/.github/workflows/publish-to-pypi.yml@main |
| Release Container | reusable | .github/workflows/release-container.yml |
– | – | uses: DiogoRibeiro7/gh-actions-collection/.github/workflows/release-container.yml@main |
| Python Tests & Coverage | reusable | .github/workflows/coverage-report.yml |
python-version, test-command, pip-version |
– | uses: DiogoRibeiro7/gh-actions-collection/.github/workflows/coverage-report.yml@main |
| PR Policy | reusable | .github/workflows/pr-policy.yml |
– | – | uses: DiogoRibeiro7/gh-actions-collection/.github/workflows/pr-policy.yml@main |
| Publish to PyPI (trusted publishing) | reusable | .github/workflows/pypi-publish.yml |
python-version, build-backend, environment, pre-release, pip-version |
– | uses: DiogoRibeiro7/gh-actions-collection/.github/workflows/pypi-publish.yml@main |
| Semantic Release | reusable | .github/workflows/release.yml |
node-version |
– | uses: DiogoRibeiro7/gh-actions-collection/.github/workflows/release.yml@main |
| Docker Build & Push | reusable | .github/workflows/docker-build-push.yml |
image, context, dockerfile, platforms, tags, aws-role, aws-region |
– | uses: DiogoRibeiro7/gh-actions-collection/.github/workflows/docker-build-push.yml@main |
| Publish Docker (Reusable + Tag Trigger) | reusable | .github/workflows/publish-docker-on-tag.yml |
image, context, dockerfile, platforms, build-args, target, labels, registry |
– | uses: DiogoRibeiro7/gh-actions-collection/.github/workflows/publish-docker-on-tag.yml@main |
| Python Lint | reusable | .github/workflows/python-lint.yml |
python-version, enable-mypy, pip-version |
– | uses: DiogoRibeiro7/gh-actions-collection/.github/workflows/python-lint.yml@main |
| Security Scan | reusable | .github/workflows/security-scan.yml |
paths, skip-trivy, pip-version |
– | uses: DiogoRibeiro7/gh-actions-collection/.github/workflows/security-scan.yml@main |
| CodeQL Analysis | reusable | .github/workflows/codeql-analysis.yml |
– | – | uses: DiogoRibeiro7/gh-actions-collection/.github/workflows/codeql-analysis.yml@main |
| Dependency Review | reusable | .github/workflows/dependency-review.yml |
– | – | uses: DiogoRibeiro7/gh-actions-collection/.github/workflows/dependency-review.yml@main |
| Lockfile Consistency | reusable | .github/workflows/lockfile-consistency.yml |
pip-version |
– | uses: DiogoRibeiro7/gh-actions-collection/.github/workflows/lockfile-consistency.yml@main |
| Canary Release | reusable | .github/workflows/canary-release.yml |
project-type, working-directory, build-backend, image |
– | uses: DiogoRibeiro7/gh-actions-collection/.github/workflows/canary-release.yml@main |
| Java CI | reusable | .github/workflows/java-ci.yml |
build-tool |
– | uses: DiogoRibeiro7/gh-actions-collection/.github/workflows/java-ci.yml@main |
| Deno CI | reusable | .github/workflows/deno-ci.yml |
deno-version, os-matrix, run-tests, deploy, project |
deno-deploy-token |
uses: DiogoRibeiro7/gh-actions-collection/.github/workflows/deno-ci.yml@main |
| Node CI | reusable | .github/workflows/node-ci.yml |
node-version, os-matrix |
– | uses: DiogoRibeiro7/gh-actions-collection/.github/workflows/node-ci.yml@main |
| Rust CI | reusable | .github/workflows/rust-ci.yml |
– | – | uses: DiogoRibeiro7/gh-actions-collection/.github/workflows/rust-ci.yml@main |
| Go CI | reusable | .github/workflows/go-ci.yml |
go-version |
– | uses: DiogoRibeiro7/gh-actions-collection/.github/workflows/go-ci.yml@main |
| PyTorch Train & Deploy | reusable | .github/workflows/pytorch-train-deploy.yml |
python-version, train-script, benchmark-script, model-artifact, deploy, mlflow-uri |
hf-token |
uses: DiogoRibeiro7/gh-actions-collection/.github/workflows/pytorch-train-deploy.yml@main |
| Ruby CI | reusable | .github/workflows/ruby-ci.yml |
ruby-versions, test-command, run-tests |
rubygems-token |
uses: DiogoRibeiro7/gh-actions-collection/.github/workflows/ruby-ci.yml@main |
| Vercel Next.js Deploy | reusable | .github/workflows/vercel-nextjs.yml |
vercel-org-id, vercel-project-id, node-version, working-directory, prod |
vercel-token |
uses: DiogoRibeiro7/gh-actions-collection/.github/workflows/vercel-nextjs.yml@main |
| Changelog Auto PR | reusable | .github/workflows/changelog-auto-pr.yml |
commit-message, branch |
– | uses: DiogoRibeiro7/gh-actions-collection/.github/workflows/changelog-auto-pr.yml@main |
| Release Drafter | reusable | .github/workflows/release-drafter.yml |
– | – | uses: DiogoRibeiro7/gh-actions-collection/.github/workflows/release-drafter.yml@main |
Install a requested R toolchain, configure a CRAN mirror or Posit Public Package Manager, and optionally pre-install packages so subsequent jobs can reuse the library cache.
Inputs
r-version(defaultrelease)cran-mirror(defaulthttps://cloud.r-project.org)use-public-rspm(defaulttrue)packages(comma-separated list of CRAN packages, default empty)working-directory(default.)
Example
steps:
- name: Prepare R runtime
uses: DiogoRibeiro7/gh-actions-collection/.github/actions/setup-r@main
with:
r-version: '4.3'
packages: 'tidyverse,lintr'Provision R with lintr, optionally install additional dependencies, and lint selected files or directories using lintr::lint and lintr::lint_dir depending on the target type.
Inputs
r-version(defaultrelease)targets(defaultR)config-file(default empty)additional-packages(comma-separated list)working-directory(default.)
Example
steps:
- name: Lint R sources
uses: DiogoRibeiro7/gh-actions-collection/.github/actions/r-lint@main
with:
targets: 'R,tests/testthat'
config-file: '.lintr'Install dependencies via remotes, optionally leverage devtools, and execute the project tests with rich summaries suitable for CI logs.
Inputs
r-version(defaultrelease)test-directory(defaulttests/testthat)install-dependencies(defaulttrue)use-devtools(defaulttrue)additional-packages(comma-separated list)working-directory(default.)
Example
steps:
- name: Run unit tests
uses: DiogoRibeiro7/gh-actions-collection/.github/actions/r-testthat@main
with:
test-directory: 'tests'
use-devtools: trueDispatch workflows only for changed top-level folders.
Inputs
groups: JSON mapping of folder to workflow path.
Example
jobs:
ci:
uses: DiogoRibeiro7/gh-actions-collection/.github/workflows/ci-monorepo-matrix.yml@main
with:
groups: '{"pkg": ".github/workflows/python-lint.yml"}'Run Terraform and CloudFormation linters with optional security scanners (Checkov, tfsec, KICS).
Inputs
paths(default.)
Example
jobs:
lint:
uses: DiogoRibeiro7/gh-actions-collection/.github/workflows/infra-lint.yml@mainValidate Kubernetes YAML with kubeconform.
Inputs
paths(default.)
Example
jobs:
lint:
uses: DiogoRibeiro7/gh-actions-collection/.github/workflows/k8s-manifests-lint.yml@mainRun helm lint and helm template --dry-run with optional publishing to GitHub Pages or an OCI registry.
Inputs
chart-path(default.)publish(defaultfalse)oci-registry(default'')
Example
jobs:
lint:
uses: DiogoRibeiro7/gh-actions-collection/.github/workflows/helm-chart-lint-test.yml@main
with:
chart-path: chartInstall dependencies, run tests, and publish to npm with provenance.
Inputs
node-version(default20)
Example
jobs:
publish:
uses: DiogoRibeiro7/gh-actions-collection/.github/workflows/publish-to-npm.yml@main
secrets:
NPM_TOKEN: ${{ secrets.NPM_TOKEN }}Run tests across multiple Python versions and operating systems.
Inputs
python-versions(JSON array)os-matrix(JSON array)test-command
Example
jobs:
test:
uses: DiogoRibeiro7/gh-actions-collection/.github/workflows/python-test-matrix.yml@mainRun mypy against a project using the Python type-check composite action with sensible defaults.
Example
jobs:
type-check:
uses: DiogoRibeiro7/gh-actions-collection/.github/workflows/python-type-check.yml@mainTrigger lintr against R scripts, R Markdown files, and package sources. The workflow reuses the r-lint composite action and watches for changes to .lintr configuration files.
Example
jobs:
lint:
uses: DiogoRibeiro7/gh-actions-collection/.github/workflows/r-lint.yml@mainInstall dependencies (including optional devtools) and execute testthat suites, automatically detecting package structures versus standalone test directories.
Example
jobs:
tests:
uses: DiogoRibeiro7/gh-actions-collection/.github/workflows/r-testthat.yml@mainProvision R, install remotes and rcmdcheck, restore package dependencies, and run R CMD check --no-manual for package validation.
Example
jobs:
check:
uses: DiogoRibeiro7/gh-actions-collection/.github/workflows/r-cmd-check.yml@mainGenerate a Terraform plan and comment on pull requests.
Inputs
working-directory(default.)
Example
jobs:
plan:
uses: DiogoRibeiro7/gh-actions-collection/.github/workflows/terraform-plan-comment.yml@mainRun Terraform plan and apply using AWS credentials from GitHub's OIDC provider with optional automatic rollback.
Inputs
aws-role(required)aws-region(defaultus-east-1)terraform-version(default1.8.5)working-directory(default.)apply(defaultfalse)destroy-on-failure(defaultfalse)
Example
jobs:
apply:
uses: DiogoRibeiro7/gh-actions-collection/.github/workflows/terraform-aws.yml@main
with:
aws-role: arn:aws:iam::123456789012:role/GitHubActionsRole
apply: trueDeploy zip or container-based Lambda functions across multiple runtimes with optional layers, environment variables, and alias management.
Inputs
aws-role(required)aws-region(defaultus-east-1)functions(JSON array, required)
Example
jobs:
deploy:
uses: DiogoRibeiro7/gh-actions-collection/.github/workflows/aws-lambda-deploy.yml@main
with:
aws-role: arn:aws:iam::123456789012:role/GitHubActions
functions: '[{"name":"py-fn","runtime":"python3.12","path":"lambda/python"}]'Validate OpenAPI specs, run contract tests with Postman or Pact, perform k6 load testing, and optionally scan with OWASP ZAP.
Inputs
openapi-spec(required)contract-path(required)base-url(required)contract-type(defaultpostman)load-script(optional)run-zap(defaultfalse)
Example
jobs:
api-tests:
uses: DiogoRibeiro7/gh-actions-collection/.github/workflows/api-testing.yml@main
with:
openapi-spec: openapi.yaml
contract-path: postman-collection.json
base-url: https://example.com
load-script: k6-script.js
run-zap: trueRun database schema migrations for PostgreSQL, MySQL, or SQL Server using Flyway, Liquibase, or Alembic with automatic rollback and migration history tracking.
Inputs
tool(required)migration-dir(required)environments(required JSON array)dry-run(defaultfalse)
Example
jobs:
migrate:
uses: DiogoRibeiro7/gh-actions-collection/.github/workflows/database-migration.yml@main
with:
tool: flyway
migration-dir: db/migrations
environments: '["dev"]'
secrets:
DEV_DATABASE_URL: ${{ secrets.DEV_DATABASE_URL }}
DEV_DB_USER: ${{ secrets.DEV_DB_USER }}
DEV_DB_PASSWORD: ${{ secrets.DEV_DB_PASSWORD }}Check that commit messages follow Conventional Commits.
Example
jobs:
lint:
uses: DiogoRibeiro7/gh-actions-collection/.github/workflows/conventional-commits.yml@mainBuild and publish an npm package using yarn or npm.
Inputs
node-version(default20)working-directory(default.)tag(defaultlatest)
Example
jobs:
publish:
uses: DiogoRibeiro7/gh-actions-collection/.github/workflows/npm-publish.yml@main
with:
working-directory: .
tag: next
secrets:
NPM_TOKEN: ${{ secrets.NPM_TOKEN }}Build a package and publish to PyPI.
Inputs
python-version(default3.12)
Example
jobs:
publish:
uses: DiogoRibeiro7/gh-actions-collection/.github/workflows/publish-to-pypi.yml@mainUse python scripts/pypi_trusted_publishing_wizard.py for an interactive setup
that generates this workflow and provides PyPI configuration steps. A VS Code
snippet (pypi-publish) is also available for quick insertion. See
PyPI Trusted Publishing Setup Guide for
troubleshooting tips.
Generate starter workflows for Python or Node projects with pinned actions.
python scripts/workflow_generator.py pythonOverride the branch or output file if required:
python scripts/workflow_generator.py node --branch develop --output .github/workflows/ci.ymlConvert GitHub's starter workflows to reuse this collection's hardened workflows:
python scripts/migrate_starter_workflows.py .github/workflows/python-package.yml --output .github/workflows/ci.ymlSee the migration guide for comparisons and gradual rollout strategies.
Publish a container image on tag or manual trigger.
Example
jobs:
publish:
uses: DiogoRibeiro7/gh-actions-collection/.github/workflows/release-container.yml@mainPublish staged artifacts from the develop branch or *-rc tags.
Inputs
project-type(python,npm, ordocker)working-directory(default.)build-backend(Python only; defaultpoetry)image(Docker image name)
Example
jobs:
canary:
uses: DiogoRibeiro7/gh-actions-collection/.github/workflows/canary-release.yml@main
with:
project-type: python
build-backend: poetryRun tests and upload a coverage report.
Inputs
python-version(default3.12)test-command
Example
jobs:
test:
uses: DiogoRibeiro7/gh-actions-collection/.github/workflows/coverage-report.yml@mainLabel pull requests by size and path.
Path rules live in .github/labeler.yml.
Example
jobs:
policy:
uses: DiogoRibeiro7/gh-actions-collection/.github/workflows/pr-policy.yml@mainBuild and publish to PyPI with optional Poetry backend.
Inputs
python-version(default3.12)build-backend(defaultbuild)environment(defaultpypi)pre-release(defaultfalse)
Example
jobs:
publish:
uses: DiogoRibeiro7/gh-actions-collection/.github/workflows/pypi-publish.yml@mainFor a full example see examples/python-package/.github/workflows/release-pypi.yml.
Run semantic-release to publish releases and changelogs.
Inputs
node-version(default20)
Example
jobs:
release:
uses: DiogoRibeiro7/gh-actions-collection/.github/workflows/release.yml@mainBuild and push multi-platform Docker images with optional ECR authentication via OIDC, GitHub Actions cache-based layer caching, and post-build vulnerability scanning. QEMU setup is skipped for single-architecture (linux/amd64) builds to reduce overhead.
Inputs
imagecontextdockerfileplatformstagsaws-roleaws-region
Example
jobs:
docker:
uses: DiogoRibeiro7/gh-actions-collection/.github/workflows/docker-build-push.yml@main
with:
image: ghcr.io/diogoribeiro7/image
aws-role: arn:aws:iam::123456789012:role/GitHubActionsBuild and push a Docker image when tagging or via workflow call.
Inputs
imagecontextdockerfileplatformsbuild-argstargetlabelsregistry
Example
jobs:
docker:
uses: DiogoRibeiro7/gh-actions-collection/.github/workflows/publish-docker-on-tag.yml@mainRun ruff and optional mypy via the python-lint action.
Inputs
python-version(default3.12)enable-mypy(defaultfalse)
Example
jobs:
lint:
uses: DiogoRibeiro7/gh-actions-collection/.github/workflows/python-lint.yml@mainAudit dependencies, verify package signatures, and run static analysis with SARIF output. The workflow caches vulnerability databases, generates SLSA Level 2 attestations for reports, and archives logs for compliance frameworks (e.g., SOC 2, GDPR); see the Security Scan Compliance Guide.
Inputs
paths(default.)skip-trivy(defaulttrue)
Example
permissions:
contents: read
security-events: write
id-token: write
attestations: write
jobs:
scan:
uses: DiogoRibeiro7/gh-actions-collection/.github/workflows/security-scan.yml@main
with:
paths: '.'
skip-trivy: trueRun GitHub's CodeQL analysis across Python, JavaScript, and Go.
Example
jobs:
analyze:
uses: DiogoRibeiro7/gh-actions-collection/.github/workflows/codeql-analysis.yml@mainCheck dependency diffs for known vulnerabilities on pull requests.
Example
jobs:
review:
uses: DiogoRibeiro7/gh-actions-collection/.github/workflows/dependency-review.yml@mainValidate that poetry.lock or yarn.lock match their manifests.
Example
jobs:
lockfile:
uses: DiogoRibeiro7/gh-actions-collection/.github/workflows/lockfile-consistency.yml@mainInstall Temurin JDK and run Maven or Gradle tests.
Inputs
build-tool(defaultmaven)
Example
jobs:
test:
uses: DiogoRibeiro7/gh-actions-collection/.github/workflows/java-ci.yml@main
with:
build-tool: mavenFor a full example see examples/java-app/.github/workflows/ci.yml.
Run deno lint and deno test across Linux, macOS, and Windows runners. Optionally deploy to Deno Deploy using deployctl.
Inputs
deno-version(default1.x)os-matrix(default["ubuntu-latest","windows-latest","macos-latest"])run-tests(defaulttrue)deploy(defaultfalse)project(default'')
Example
jobs:
deno:
uses: DiogoRibeiro7/gh-actions-collection/.github/workflows/deno-ci.yml@main
with:
deploy: falseRun Yarn lint and test commands across Linux, macOS, and Windows runners using Corepack.
Inputs
node-version(default20)os-matrix(default["ubuntu-latest","windows-latest","macos-latest"])
Example
jobs:
build:
uses: DiogoRibeiro7/gh-actions-collection/.github/workflows/node-ci.yml@main
with:
os-matrix: '["ubuntu-latest","windows-latest","macos-latest"]'Platform notes
- Steps run in Bash so path separators behave consistently on all platforms.
- Windows runners rely on the Git Bash environment included with the runner image.
actions/setup-nodeinstalls Node.js and enables Corepack for Yarn.
Run cargo fmt, cargo check, and cargo clippy.
Example
jobs:
build:
uses: DiogoRibeiro7/gh-actions-collection/.github/workflows/rust-ci.yml@mainSee examples/rust-crate/.github/workflows/ci.yml for a working sample.
Run go test and golangci-lint.
Inputs
go-version(default1.22)
Example
jobs:
build:
uses: DiogoRibeiro7/gh-actions-collection/.github/workflows/go-ci.yml@mainThe examples/go-module/.github/workflows/ci.yml workflow shows a complete setup.
Run tests across multiple Ruby versions with Bundler caching.
Inputs
ruby-versions(default["3.1","3.2"])test-command(defaultbundle exec rake test)run-tests(defaulttrue)
Secrets
rubygems-token(optional)
Example
jobs:
test:
uses: DiogoRibeiro7/gh-actions-collection/.github/workflows/ruby-ci.yml@mainBuild and deploy a Next.js application to Vercel with retry logic for rate limits.
Inputs
vercel-org-idvercel-project-idnode-version(default20)working-directory(default.)prod(defaulttrue)
Secrets
vercel-token
Example
jobs:
deploy:
uses: DiogoRibeiro7/gh-actions-collection/.github/workflows/vercel-nextjs.yml@main
with:
vercel-org-id: ${{ vars.VERCEL_ORG_ID }}
vercel-project-id: ${{ vars.VERCEL_PROJECT_ID }}
secrets:
vercel-token: ${{ secrets.VERCEL_TOKEN }}Generate CHANGELOG.md and open a pull request with the updates.
Inputs
commit-message(defaultchore: update changelog)branch(defaultchore/update-changelog)
Example
jobs:
changelog:
uses: DiogoRibeiro7/gh-actions-collection/.github/workflows/changelog-auto-pr.yml@mainDraft release notes based on merged pull requests.
Example
jobs:
draft:
uses: DiogoRibeiro7/gh-actions-collection/.github/workflows/release-drafter.yml@main- Keep each action self-contained with a clear
README.md. - Prefer composite actions unless JavaScript/TypeScript is required.
- Document inputs, outputs, and environment variables.
- Add tests or example workflows where applicable.
The first milestones focus on high‑leverage, broadly reusable workflows and composite actions. Each item links to a suggested path (inputs/outputs, minimal example, and security notes).
-
Python Lint & Type Check (composite)
- Tools:
ruff,flake8(optional),pyproject.tomldiscovery,mypy(optional toggle). - Inputs:
paths,python-version,enable-mypy. - Outputs: annotations.
- Example reusable workflow:
.github/workflows/python-lint.yml.
- Tools:
-
Security Scan (reusable workflow)
- Steps:
pip-audit --strict,bandit -r,trivy fs(opt-in), SARIF upload. - Inputs:
paths,skip-trivy.
- Steps:
-
Check Imports vs pyproject (composite)
- Script to parse imports and compare with
pyproject.toml. - Inputs:
fail-on(missing,unused,both),format(text,json),update-pyproject,create-pr,pip-version(override the validated pip release or setlatest). - Output: machine-readable JSON artifact or auto-updated
pyproject.toml.
- Script to parse imports and compare with
-
Python Test Matrix (reusable)
- Matrix over
os: [ubuntu-latest, windows-latest, macos-latest]andpython: [3.10, 3.11, 3.12]. - Built-in caching for pip/poetry (
actions/setup-python@a26af69be951a213d495a4c3e4e4022e16d87065cache,poetry cache),pytest -qand coverage upload.
- Matrix over
-
Node/TS Lint + Test (reusable)
corepack enable,yarn install --immutable,yarn lint,yarn test.
-
Docker Build & Push (reusable)
- Login via OIDC →
docker/build-push-actionwithcache-from/toand SBOM (syft) as artifact.
- Login via OIDC →
-
Semver Tagging & Release Notes (reusable)
- Conventional Commits check →
semantic-release(Node) orpython-semantic-release. - GitHub Release, changelog update, version bump PR.
- Conventional Commits check →
-
Publish to PyPI (reusable)
- Build with
pipx run buildorpoetry build; publish via PyPI OIDC token. - Inputs:
environment(protect releases),pre-releaseflag.
- Build with
-
Publish to npm (reusable)
npm publish --provenance; provenance enabled via OIDC andid-token: write.
-
AWS Lambda Build & Package (composite)
- Layer or container image build,
docker buildx, slim wheels, artifact upload.
- Layer or container image build,
-
Infra Lint (reusable)
cfn-lint,tflint,checkov(opt-in), SARIF upload.
-
PR Policy (reusable)
- Auto‑label, size labels, codeowners check, required status checks, stale bot.
-
Permissions Hardening (template)
- Opinionated defaults: least‑privilege
permissions: read-all, job‑scoped writes.
- Opinionated defaults: least‑privilege
-
Concurrency & Caching Templates
concurrency: { group: ${{ github.workflow }}-${{ github.ref }}, cancel-in-progress: true }.- Cache keys with
hashFiles()—document stable vs rolling keys.
jobs:
security:
uses: DiogoRibeiro7/gh-actions-collection/.github/workflows/security-scan.yml@main
with:
paths: src/**steps:
- uses: actions/checkout@v4
- name: Lint & Type Check
uses: DiogoRibeiro7/gh-actions-collection/.github/actions/python-lint@main
with:
python-version: '3.12'
enable-mypy: true- Default to
permissions: read-all; elevate per‑job only when needed (e.g.,id-token: writefor OIDC). - Pin third‑party actions by commit SHA where feasible.
- Validate all user inputs; avoid shell injection via
shell: bash -euxo pipefailand quoted vars.
Maintained by Diogo Ribeiro
Affiliation: ESMAD - Instituto Politécnico do Porto
Contact: diogo.debastos.ribeiro@gmail.com / dfr@esmad.ipp.pt
ORCID: https://orcid.org/0009-0001-2022-7072
If you use this repository, please cite it as described in CITATION.cff.
MIT