Skip to content

mconf/mconf-ci-jobs

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

199 Commits
 
 
 
 
 
 
 
 

Repository files navigation

mconf-ci-jobs

Reusable GitHub Actions workflows for CI/CD pipelines across Mconf projects.

Overview

This repository provides a centralized collection of reusable GitHub Actions workflows for building, testing, linting, and deploying applications across multiple programming languages and platforms. All workflows are optimized for self-hosted runners and follow security best practices.

Development Guidelines

Company-wide development practices and standards are documented in the guidelines/ directory. These guidelines provide:

  • AI Collaboration - Best practices for working with AI coding tools
  • General Development - Language-agnostic practices (linting, Makefiles, pre-commit hooks)
  • Language-Specific - Guidelines for Ruby, Python, Go, and JavaScript
  • Docker - Container best practices and multi-stage builds
  • Testing - Testing strategies and AI-assisted test generation
  • Git Workflow - Commit messages, branching, and pull requests

Templates: The templates/ directory contains starter configurations (Makefile, AGENTS.md, linter configs, Docker examples) that you can copy to your projects.

See guidelines/README.md for a complete index.

Workflow Comparison

Workflow Action Language/Tool Registry Security Coverage Private Repos AI Key Features
all-build-push-image Build+Push Docker Harbor Multi-platform, metadata extraction, GHA+registry caching
all-build-push-scan-harbor Build+Push+Scan Docker, Trivy Harbor Auto-detect push/scan, SSH support, Trivy Explorer upload, custom context/target
all-create-tag Release Git Version validation, annotated tags
all-gen-changelog-ai Release Git, Claude PR info gathering, Notion integration, Claude Code
all-helm-lint Lint Helm Chart validation, templating, packaging test
all-helm-publish Publish Helm Harbor OCI registry push, version extraction, GitHub summary
data-py-uv-lint Lint Python, Flake8, Black, isort, uv uv-based dependency management
data-py-uv-tests Test Python, pytest, uv uv-based dependency management, configurable pytest markers
lb-go-build Build Go CGO, private modules, build-essential
lb-go-lint Lint Go, golangci-lint 10min timeout, private module support
lb-go-tests Test Go, Gocov Coverage XML, PR comments, file change detection
lb-node-build Build Node.js, npm Custom env vars, npm cache
lb-node-lint Lint Node.js, ESLint Multiple file extensions (.js/.jsx/.ts/.tsx)
lb-node-tests Test Node.js, npm File change detection
lb-py-lint Lint Python, Flake8, Black, isort pip-based, libpq-dev
lb-py-pdm-lint Lint Python, Flake8, Black, isort, PDM PDM-based dependency management
lb-py-tests Test Python, pytest, PDM Coverage XML, PR reports, env file loading, file detection
lb-push-scan-image Build+Push+Scan Docker, Trivy DockerHub Dynamic tagging, Trivy Explorer upload, job summary
lb-ruby-lint Lint Ruby, RuboCop Build tools, libpq-dev, Gemfile caching
lb-scan Scan Trivy Filesystem scan, SARIF to PR comments
portal-ruby-lint Lint Ruby, RuboCop, HAML HAML views linting
portal-ruby-scan Scan Ruby, Brakeman Rails security vulnerabilities
portal-ruby-tests Test Ruby, RSpec, Rails MySQL+Redis services, Chromium, ImageMagick, secrets

Available Workflows

Go Workflows

Node.js Workflows

Python Workflows

  • lb-py-lint.yml Runs Flake8, Black, and isort on Python code (pip-based projects). Usage: See examples/lb-py-lint.yml
  • lb-py-pdm-lint.yml Runs Flake8, Black, and isort on Python code (PDM-based projects). Usage: See examples/lb-py-pdm-lint.yml
  • lb-py-tests.yml Runs Python tests with coverage reporting (PDM-based projects). Requires pull-requests: write permission. Usage: See examples/lb-py-tests.yml

Data Team Python Workflows (uv)

  • data-py-uv-lint.yml Runs Flake8, Black, and isort on Python code (uv-based projects). Usage: See examples/data-py-uv-lint.yml
  • data-py-uv-tests.yml Runs Python tests with coverage reporting (uv-based projects). Includes configurable pytest markers. Requires pull-requests: write permission. Usage: See examples/data-py-uv-tests.yml

Ruby Workflows

  • lb-ruby-lint.yml Runs RuboCop linter on Ruby code. Usage: See examples/lb-ruby-lint.yml
  • portal-ruby-lint.yml Runs RuboCop and HAML linting for Rails applications. Reads Ruby version from .ruby-version file. Usage: See examples/portal-ruby-lint.yml
  • portal-ruby-scan.yml Scans Rails applications for security vulnerabilities using Brakeman. Reads Ruby version from .ruby-version file. Usage: See examples/portal-ruby-scan.yml
  • portal-ruby-tests.yml Runs Rails tests with MySQL and Redis services. Reads Ruby version from .ruby-version file. Requires OAuth and Devise secrets. Usage: See examples/portal-ruby-tests.yml

Security & Docker Workflows

  • all-build-push-image.yml Builds and pushes Docker images to Harbor with automatic tagging and caching. Supports multi-platform builds and optional DockerHub login for base images. Usage: See examples/all-build-push-image.yml
  • all-build-push-scan-harbor.yml Builds, pushes Docker images to Harbor, and scans with Trivy. Includes auto-detection for push and scan based on git refs and available secrets. Supports SSH for private dependencies, custom build context and multi-stage targets. Usage: See examples/all-build-push-scan-harbor.yml
  • lb-scan.yml Scans repository filesystem for security vulnerabilities using Trivy. Requires pull-requests: write permission. Usage: See examples/lb-scan.yml
  • lb-push-scan-image.yml Builds Docker image, pushes to registry (on tags), and scans with Trivy. Includes optional SSH support for private dependencies. Usage: See examples/lb-push-scan-image.yml

Helm Workflows

  • all-helm-lint.yml Lints, templates, and validates Helm charts. Auto-detects chart name and supports custom values files. Usage: See examples/all-helm-lint.yml
  • all-helm-publish.yml Packages and publishes Helm charts to Harbor OCI registry. Includes version extraction from tags and GitHub summary with install command. Usage: See examples/all-helm-publish.yml

Release & Changelog Workflows

Security Features

All workflows include:

  • Minimal permissions: Only required permissions are granted
  • Timeout protection: All jobs have timeout limits (15-30 minutes)
  • Private module support: SSH agent configured when SSH_PRIVATE_KEY secret is provided
  • Dependency caching: Faster builds with intelligent caching
  • Vulnerability scanning: Trivy integration for security checks

Required Secrets

Workflows may require the following secrets (configured in your repository):

  • SSH_PRIVATE_KEY: SSH key for accessing private Git repositories
  • HARBOR_USERNAME: Harbor registry username
  • HARBOR_PASSWORD: Harbor registry password
  • DOCKERHUB_USERNAME: DockerHub username
  • DOCKERHUB_PASSWORD: DockerHub password
  • REGISTRY_ACCESS_TOKEN: DockerHub access token for pushing images (will be deprecated in favor of DOCKERHUB_PASSWORD)
  • TRIVY_EXPLORER_AUTH_TOKEN: Authentication for Trivy Explorer
  • TRIVY_EXPLORER_URL: Trivy Explorer endpoint URL
  • GITHUB_TOKEN: Automatically provided by GitHub Actions

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors