Reusable GitHub Actions workflows for Artagon projects providing standardized CI/CD pipelines for Maven, C/C++, and Bazel builds.
Artagon Workflows is a comprehensive, production-ready collection of reusable GitHub Actions workflows designed to streamline software development across multiple languages and build systems. This repository provides enterprise-grade CI/CD pipelines with built-in security, compliance, and best practices for Maven (Java), CMake (C/C++), and Bazel projects.
- π 20+ Reusable Workflows - Pre-built, tested workflows for build, test, release, and security scanning
- π Security-First Design - All actions pinned to commit SHAs, TLS 1.3 enforcement, certificate validation, checksum verification
- π Multi-Language Support - Java/Maven, C/C++/CMake, Bazel projects with language-specific optimizations
- π¦ Release Automation - Complete release pipelines for Maven Central, GitHub Releases, Docker Hub, and custom registries
- π‘οΈ Security Scanning - CodeQL analysis, dependency review, vulnerability scanning, and license compliance
- π€ Bot Integration - Auto-merge for Dependabot/Renovate PRs with configurable approval workflows
- β‘ Performance Optimized - Intelligent caching for Maven, Bazel, and CMake dependencies
- π§ Highly Configurable - Extensive input parameters for project-specific customization
- π PR Validation - Semantic PR titles, branch naming conventions, commit message validation
- β Testing Support - Python pytest, shell script testing, multi-version matrix testing
- π Comprehensive Documentation - Detailed guides, examples, and best practices for every workflow
- Maven - Full lifecycle support (compile, test, package, deploy, release)
- CMake - Cross-platform C/C++ builds with multi-OS support (Linux, macOS, Windows)
- Bazel - Modern build system with remote caching and hermetic builds
- Supply Chain Security - All GitHub Actions pinned to immutable commit SHAs
- Secure Downloads - TLS 1.3, certificate validation, SHA256 checksums for all binary downloads
- Vulnerability Scanning - Automated dependency and code security analysis
- License Compliance - Configurable allow/deny lists for dependency licenses
- Secret Management - Secure handling via GitHub Secrets, no hardcoded credentials
- CodeQL Analysis - Semantic code analysis for 8+ programming languages
- Dependency Review - PR-based security and license scanning for dependency changes
- Open Source Projects - Complete Maven Central release pipelines with GPG signing and attestation
- Enterprise Applications - Private repository releases with security scanning and compliance
- Multi-Module Projects - Support for complex Maven/Bazel multi-module builds
- Cross-Platform Development - C/C++ builds across Linux, macOS, and Windows
- Microservices - Docker image builds with multi-platform support
- Library Development - Release automation for reusable libraries and frameworks
- Security-Critical Software - Built-in vulnerability scanning and secure build practices
- Consistency - Standardized CI/CD across all projects eliminates configuration drift
- Time Savings - Pre-built workflows reduce setup time from hours to minutes
- Security - Built-in best practices prevent common security vulnerabilities
- Maintainability - Centralized workflow updates propagate to all consuming projects
- Reliability - Production-tested workflows with extensive error handling
- Flexibility - Configurable inputs allow project-specific customization
- Documentation - Comprehensive guides and examples accelerate onboarding
This repository is tagged with the following topics for discoverability:
github-actions workflow reusable-workflows ci-cd continuous-integration continuous-deployment devops automation build-automation release-automation maven cmake bazel java cpp c cxx security-scanning vulnerability-scanning codeql dependency-management supply-chain-security testing pytest shellcheck semantic-versioning semver pr-validation auto-merge dependabot renovate maven-central ossrh docker multi-platform cross-platform linux macos windows gpg-signing artifact-attestation sbom license-compliance
Build & Test - CI workflows for continuous integration and testing Release & Deploy - Automated release pipelines for multiple targets Security - Vulnerability scanning, dependency review, and CodeQL analysis Validation - PR validation, semantic commit checking, and branch naming Automation - Auto-merge, submodule updates, and maintenance workflows
This repository contains production-ready, reusable GitHub Actions workflows that can be called from any Artagon project. These workflows provide:
- Consistent CI/CD - Standardized build, test, and deployment pipelines
- Version Control - Pin to specific workflow versions for stability
- Security - Built-in security scanning and best practices
- Flexibility - Configurable inputs for project-specific needs
- maven_ci.yml - Continuous integration (build, test, verify)
- maven-build.yml - Build without deploy
- maven-deploy.yml - Deploy snapshots to OSSRH
- maven-release.yml - Full release process
- maven_release_tag.yml - Release from git tag
- maven_release_branch.yml - Release from release branch
- maven-central-release.yml - Maven Central deployment
- maven-github-release.yml - GitHub release creation
- maven_security_scan.yml - Security vulnerability scanning
- cmake_c_ci.yml - C project CI with CMake
- cmake_cpp_ci.yml - C++ project CI with CMake
- cmake_c_release.yml - C project release
- cmake_cpp_release.yml - C++ project release
- cmake_cpack_release.yml - Multi-format packages (DEB, RPM, TGZ)
- bazel_multi_ci.yml - Bazel project CI
- bazel_multi_release.yml - Bazel project release
- update-submodule.yml - Automated submodule updates
# .github/workflows/ci.yml
name: CI
on:
push:
branches: [main, develop]
pull_request:
branches: [main]
jobs:
ci:
uses: artagon/artagon-workflows/.github/workflows/maven_ci.yml@v1
secrets: inherit# .github/workflows/ci.yml
name: CI
on:
push:
branches: [main]
pull_request:
branches: [main]
jobs:
ci:
uses: artagon/artagon-workflows/.github/workflows/cmake_cpp_ci.yml@v1
with:
cmake-options: '-DCMAKE_BUILD_TYPE=Release'
secrets: inherit# .github/workflows/ci.yml
name: CI
on:
push:
branches: [main]
pull_request:
branches: [main]
jobs:
ci:
uses: artagon/artagon-workflows/.github/workflows/bazel_multi_ci.yml@v1
with:
bazel-configs: 'release,debug'
secrets: inheritWorkflows are versioned using git tags. Pin to a specific version for stability:
# Pin to major version (recommended)
uses: artagon/artagon-workflows/.github/workflows/maven_ci.yml@v1
# Pin to specific release
uses: artagon/artagon-workflows/.github/workflows/maven_ci.yml@v1.2.0
# Use latest (not recommended for production)
uses: artagon/artagon-workflows/.github/workflows/maven_ci.yml@mainArtagon projects follow a release branch strategy for stable, predictable releases:
mainbranch: Always has SNAPSHOT versions (e.g.,1.0.9-SNAPSHOT)release-X.Y.Zbranches: Have release versions without SNAPSHOT (e.g.,1.0.8)- Tags: Created on release branches (e.g.,
v1.0.8)
# 1. Ensure main is at next SNAPSHOT version
main: 1.0.9-SNAPSHOT
# 2. Create release branch from commit at desired SNAPSHOT
git checkout -b release-1.0.8 <commit-at-1.0.8-SNAPSHOT>
git push origin release-1.0.8
# 3. Trigger release workflow from release branch
# The workflow removes -SNAPSHOT and creates v1.0.8 tag
# 4. Result
main: 1.0.9-SNAPSHOT (unchanged)
release-1.0.8: 1.0.8 (frozen for hotfixes)
tag v1.0.8: created- β Main branch always has SNAPSHOT versions
- β Release branches never have SNAPSHOT versions
- β
Releases are only created from
release-*branches - β Release branches are kept for hotfixes (not deleted)
- β Tags are created on release branches
For detailed instructions, see RELEASE.md.
- RELEASE.md - Maven release process and language-specific guide index
- Java Release Strategy - Maven, Gradle, SNAPSHOT versions, Maven Central
- C Release Strategy - CMake, Autotools, tag-based releases, ABI stability
- C++ Release Strategy - CMake, Bazel, LTS support, ABI/API management
- Rust Release Strategy - Cargo, crates.io, MSRV policy, SemVer
- OSS Release Strategies Analysis - Industry research and best practices
- Maven Workflows - Detailed Maven workflow documentation
- C/C++ Workflows - C/C++ workflow documentation
- Bazel Workflows - Bazel workflow documentation
- Examples - Complete workflow usage examples
All workflows support multiple language versions:
- Java: 17, 21, 25 (default)
- CMake: 3.20+
- Bazel: 7.x (default)
Automatic dependency caching for faster builds:
- Maven dependencies
- Bazel cache
- CMake build cache
- Dependency vulnerability scanning
- GPG signing for releases
- Secret management via GitHub Secrets
- Linux (ubuntu-latest)
- macOS (optional)
- Windows (optional for some workflows)
See CONTRIBUTING.md for guidelines on adding or modifying workflows.
Dual-licensed under AGPL-3.0 and Commercial licenses. See LICENSE for details.
- artagon-common - Project templates, configs, and scripts
- artagon-license - License management
For issues, questions, or contributions:
- GitHub Issues: https://github.com/artagon/artagon-workflows/issues
- Documentation: https://github.com/artagon/artagon-workflows/tree/main/docs