NainDev Standards
Reusable workflows · Default templates

One CI definition, shared by every repository.

Each NainDev project calls the same four reusable GitHub Actions workflows instead of copying its own pipeline. A fix to the shared workflow reaches every repository, and a new project gets a working CI in a few lines.

  • 4 reusable workflows
  • GitHub-hosted runners
  • Default PR template
  • Grouped Dependabot

Four workflows to call

All of them run on GitHub-managed ubuntu-latest runners. A repository adds a short workflow file that points at the shared one.

reusable-dotnet.yml

.NET 10 verification

Restores, optionally checks formatting, builds in Release and runs the test suites with coverage collection.

jobs:
  test:
    uses: Nain9Dev/.github/.github/workflows/reusable-dotnet.yml@main
    with:
      dotnet-version: "10.0.x"
      run-format-check: false
reusable-python.yml

Python verification

Sets up Python with pip caching, lints with Ruff and runs the tests with pytest or unittest.

jobs:
  test:
    uses: Nain9Dev/.github/.github/workflows/reusable-python.yml@main
    with:
      python-version: "3.12"
      requirements-file: "requirements.txt"
      test-command: "pytest -v"
reusable-web.yml

Web and Node verification

Sets up Node.js LTS, caches dependencies, runs the tests and builds the production bundle.

jobs:
  test:
    uses: Nain9Dev/.github/.github/workflows/reusable-web.yml@main
    with:
      node-version: "22.x"
      test-command: "npm test"
      build-command: "npm run build"
reusable-pages-deploy.yml

GitHub Pages deployment

Builds a client under Node.js 24 LTS, optionally runs pre-flight tests, configures Pages and deploys the artifact in one step. The live demos reuse it instead of repeating the steps.

permissions:
  contents: read
  pages: write
  id-token: write

jobs:
  deploy:
    uses: Nain9Dev/.github/.github/workflows/reusable-pages-deploy.yml@main
    with:
      working-directory: "ProspectAI.Client"
      dist-path: "dist"
      build-command: "npm run build"
      run-tests: false

Defaults every repository inherits

Community files in this repository apply to every NainDev repository that does not define its own.

Pull request template

Evidence, not description

Asks every change for what changed, how it was verified, what is unverified and the risk, so a reviewer starts from the facts.

Dependabot

Grouped weekly updates

One pull request per ecosystem each week across Actions, npm, pip and NuGet, instead of a stream of single-package PRs.

Community files

Issues, security and conduct

Bug report and feature request forms, a security policy, a code of conduct and contributing guidelines.

Calling a workflow with @main follows the latest shared version. A repository that needs a frozen pipeline can pin the reference to a commit instead.