Skip to content

plac9/.github

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 

Repository files navigation

.github

Organization-wide GitHub configurations, reusable workflows, and templates.

Reusable Workflows

Node.js CI (reusable-node-ci.yml)

Full-featured CI pipeline for Node.js projects with lint, typecheck, build, test, and E2E support.

Basic usage:

name: CI
on:
  push:
    branches: [main]
  pull_request:
    branches: [main]

concurrency:
  group: ${{ github.workflow }}-${{ github.ref }}
  cancel-in-progress: true

jobs:
  ci:
    uses: plac9/.github/.github/workflows/reusable-node-ci.yml@main

With options:

jobs:
  ci:
    uses: plac9/.github/.github/workflows/reusable-node-ci.yml@main
    with:
      node-version: '20'
      runs-on: '["self-hosted", "homelab"]'
      enable-e2e: true
      pre-build-command: 'npm run content:generate'
      build-artifact-paths: |
        .next
        dist

Available inputs:

Input Default Description
node-version '20' Node.js version
runs-on '["ubuntu-latest"]' Runner (JSON array)
enable-lint true Run ESLint
enable-typecheck true Run TypeScript check
enable-test false Run unit tests
enable-e2e false Run Playwright E2E
lint-command 'npm run lint' Lint command
typecheck-command 'npm run typecheck' Type check command
build-command 'npm run build' Build command
pre-build-command '' Pre-build step
build-artifact-paths '' Artifact paths
timeout-minutes 10 Job timeout

Docker Publish (reusable-docker-publish.yml)

Build and push Docker images to GHCR with caching.

Basic usage:

name: Docker

on:
  push:
    branches: [main]
    tags: ['v*']

concurrency:
  group: ${{ github.workflow }}-${{ github.ref }}
  cancel-in-progress: true

jobs:
  docker:
    uses: plac9/.github/.github/workflows/reusable-docker-publish.yml@main
    permissions:
      contents: read
      packages: write

With options:

jobs:
  docker:
    uses: plac9/.github/.github/workflows/reusable-docker-publish.yml@main
    permissions:
      contents: read
      packages: write
    with:
      runs-on: '["self-hosted", "homelab"]'
      platforms: 'linux/amd64,linux/arm64'
      build-args: |
        NODE_ENV=production
        VERSION=${{ github.sha }}

Available inputs:

Input Default Description
runs-on '["ubuntu-latest"]' Runner (JSON array)
registry 'ghcr.io' Container registry
image-name '' Image name (defaults to repo)
platforms 'linux/amd64' Target platforms
context '.' Build context
dockerfile 'Dockerfile' Dockerfile path
build-args '' Build arguments
push true Push to registry
timeout-minutes 30 Job timeout

Outputs:

  • image-digest - Image digest
  • image-tags - Image tags

Self-Hosted Runner

For repos that use the homelab runner, use:

runs-on: '["self-hosted", "homelab"]'

Notes

  • All workflows use GITHUB_TOKEN for auth (no PAT needed)
  • Concurrency control prevents duplicate runs
  • All workflows generate job summaries

About

Organization-wide GitHub configurations, reusable workflows, and templates

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 2

  •  
  •