top of page

10 CI/CD Build Configurations You Can Copy and Run Today

Every BuildNinja customer asks the same question: "Do you have an example for my tech stack?"


Now we do. Ten of them. Each configuration below builds a real open-source project, ranging from a minimal Node.js app to ripgrep (59K+ GitHub stars). You can clone the repository, point BuildNinja to any YAML file, and run your first build in under five minutes.



Quick Reference

Configuration

Stack

Real Project

Requirements

Node.js

Sample app

Node.js 18+

Rust

ripgrep (59K+ stars)

Rust 1.85+

pnpm/TypeScript

Reactive Resume (25K+ stars)

Node.js 18+, pnpm

TypeScript

Meta's Lexical (22K+ stars)

Node.js 18+

Python/Vite

Open WebUI (75K+ stars)

Node.js 18+, Python 3.9+

Java/Ant

Ant sample

JDK 8+, Ant

.NET

Web app

.NET SDK 6.0+

Ruby

Ruby app

Ruby 3.0+, Bundler

.NET/MSBuild

MSTest app

.NET SDK 8.0, Windows

.NET/VSTest

VSTest app

.NET SDK 8.0, Windows


Node.js with npm



Start here if you're new to BuildNinja. This is the simplest possible configuration to validate your agent setup and YAML workflow.

name: NodeJS_Sample_Build
description: Node.js application with npm
version: 1.0

settings:
  vcs-steps:
    - key: vcs_git
      name: Checkout Repository
      disabled: false
      args:
        authType: anonymous
        branch: main
        url: https://github.com/abheekm/node-js-sample.git
      argsProtected: {}

  build-steps:
    - key: runner_cmd
      name: Install Dependencies
      disabled: false
      workDir: ""
      args:
        commands: npm install
        continueOnError: false
      argsProtected: {}

  artifacts:
    - name: Build Output
      condition: buildSucceeds
      paths:
        - node_modules

Rust with Cargo (ripgrep)



Uses --release for optimized binaries. Debug builds can run 10–15× slower for large Rust projects.

name: Rust_Cargo_Build
description: ripgrep - Fast recursive grep written in Rust (59K+ stars)
version: 1.0

settings:
  vcs-steps:
    - key: vcs_git
      name: Checkout Repository
      disabled: false
      args:
        authType: anonymous
        branch: master
        url: https://github.com/BurntSushi/ripgrep.git
      argsProtected: {}

  build-steps:
    - key: runner_cmd
      name: Build Release
      disabled: false
      workDir: ""
      args:
        commands: cargo build --release
      argsProtected: {}

    - key: runner_cmd
      name: Run Tests
      disabled: false
      workDir: ""
      args:
        commands: cargo test
      argsProtected: {}

  artifacts:
    - name: Build Output
      condition: buildSucceeds
      paths:
        - target/release

pnpm Monorepo (Reactive Resume)



A complex monorepo with a React frontend and NestJS backend. The pnpm build command automatically respects the workspace dependency graph. Database services are not required for this build.

name: Monorepo_PNPM_Build
description: Reactive Resume - Privacy-focused resume builder with 970K+ users
version: 1.0

settings:
  vcs-steps:
    - key: vcs_git
      name: Checkout Repository
      disabled: false
      args:
        authType: anonymous
        branch: main
        url: https://github.com/AmruthPillai/Reactive-Resume.git
      argsProtected: {}

  build-steps:
    - key: runner_cmd
      name: Install Dependencies
      disabled: false
      workDir: ""
      args:
        commands: pnpm install
      argsProtected: {}

    - key: runner_cmd
      name: Build
      disabled: false
      workDir: ""
      args:
        commands: pnpm build
      argsProtected: {}

  artifacts:
    - name: Build Output
      condition: buildSucceeds
      paths:
        - dist

TypeScript Monorepo (Lexical)



Meta’s extensible, framework-agnostic text editor framework with WCAG compliance.

name: TypeScript_Lexical_Build
description: Lexical - Meta's extensible text editor framework (22K+ stars)
version: 1.0

settings:
  vcs-steps:
    - key: vcs_git
      name: Checkout Repository
      disabled: false
      args:
        authType: anonymous
        branch: main
        url: https://github.com/facebook/lexical.git
      argsProtected: {}

  build-steps:
    - key: runner_cmd
      name: Install Dependencies
      disabled: false
      workDir: ""
      args:
        commands: npm install
      argsProtected: {}

    - key: runner_cmd
      name: Build
      disabled: false
      workDir: ""
      args:
        commands: npm run build
      argsProtected: {}

  artifacts:
    - name: Build Output
      condition: buildSucceeds
      paths:
        - packages

Python + Vite (Open WebUI)



This configuration builds only the Vite frontend. Backend Python services are not executed.

name: Python_Vite_Build
description: Open WebUI - Self-hosted AI interface with 75K+ stars
version: 1.0

settings:
  vcs-steps:
    - key: vcs_git
      name: Checkout Repository
      disabled: false
      args:
        authType: anonymous
        branch: main
        url: https://github.com/open-webui/open-webui.git
      argsProtected: {}

  build-steps:
    - key: runner_cmd
      name: Install Dependencies
      disabled: false
      workDir: ""
      args:
        commands: npm install
      argsProtected: {}

    - key: runner_cmd
      name: Build
      disabled: false
      workDir: ""
      args:
        commands: npm run build
      argsProtected: {}

  artifacts:
    - name: Build Output
      condition: buildSucceeds
      paths:
        - build

Java with Apache Ant



Designed for enterprise Java environments that still rely on Apache Ant.

name: Apache_Ant_Build
description: Sample Ant-based Java project
version: 1.0

settings:
  vcs-steps:
    - key: vcs_git
      name: Checkout Repository
      disabled: false
      args:
        authType: anonymous
        branch: master
        url: https://github.com/piona/ant-sample.git
      argsProtected: {}

  build-steps:
    - key: runner_cmd
      name: Compile
      disabled: false
      workDir: ""
      args:
        commands: ant compile
      argsProtected: {}

    - key: runner_cmd
      name: Build
      disabled: false
      workDir: ""
      args:
        commands: ant build
      argsProtected: {}

    - key: runner_cmd
      name: Generate JAR
      disabled: false
      workDir: ""
      args:
        commands: ant jar
      argsProtected: {}

  artifacts:
    - name: Build Output
      condition: buildSucceeds
      paths:
        - build

ASP.NET Core



A minimal .NET build using a single command.

name: ASP_NET_Core_Build
description: ASP.NET Core web application build
version: 1.0

settings:
  vcs-steps:
    - key: vcs_git
      name: Checkout Repository
      disabled: false
      args:
        authType: anonymous
        branch: qa
        url: https://github.com/abheekm/ASP_NET_Core_App.git
      argsProtected: {}

  build-steps:
    - key: runner_cmd
      name: Build Solution
      disabled: false
      workDir: ""
      args:
        commands: dotnet build ASP_NET_Core_App.sln
      argsProtected: {}

  artifacts:
    - name: Build Output
      condition: buildSucceeds
      paths:
        - bin
        - obj

Ruby with RSpec



Ruby build using Bundler and RSpec tests. Gems are installed globally for demonstration purposes. In production, prefer managing dependencies through the Gemfile.

name: Ruby_RSpec_Build
description: Ruby application with RSpec tests
version: 1.0

settings:
  vcs-steps:
    - key: vcs_git
      name: Checkout Repository
      disabled: false
      args:
        authType: anonymous
        branch: main
        url: https://github.com/abheekm/Ruby_App.git
      argsProtected: {}

  build-steps:
    - key: runner_cmd
      name: Bundle Install
      disabled: false
      workDir: ""
      args:
        commands: bundle install
      argsProtected: {}

    - key: runner_cmd
      name: Install RSpec
      disabled: false
      workDir: ""
      args:
        commands: gem install rspec
        continueOnError: false
      argsProtected: {}

    - key: runner_cmd
      name: Install Unit Gem
      disabled: false
      workDir: ""
      args:
        commands: gem install unit
        continueOnError: false
      argsProtected: {}

    - key: runner_cmd
      name: Run Tests
      disabled: false
      workDir: ""
      args:
        commands: rspec ./spec/calculator_spec.rb
        continueOnError: false
      argsProtected: {}

  artifacts:
    - name: Build Output
      condition: buildSucceeds
      paths:
        - spec

.NET with MSBuild Runner



BuildNinja's runner_msbuild provides native Visual Studio solution integration with better diagnostics than dotnet build.

name: MSBuild_Runner_Demo
description: MSBuild runner demonstration
version: 1.0

settings:
  vcs-steps:
    - key: vcs_git
      name: Checkout Repository
      disabled: false
      args:
        authType: anonymous
        branch: main
        url: https://github.com/abheekm/MSTest_Runner_App.git
      argsProtected: {}

  build-steps:
    - key: runner_msbuild
      name: Build Solution
      disabled: false
      workDir: ""
      args:
        solution: MSTest_Runner_App.sln
        configuration: Debug
        parameters: ""
      argsProtected: {}

  artifacts:
    - name: Build Output
      condition: buildSucceeds
      paths:
        - bin

.NET with VSTest Runner



BuildNinja's runner_vstest executes tests with automatic TRX report generation.

name: VSTest_Runner_Build
description: .NET build demonstrating VSTest runner
version: 1.0

settings:
  vcs-steps:
    - key: vcs_git
      name: Checkout Repository
      disabled: false
      args:
        authType: anonymous
        branch: master
        url: https://github.com/abheekm/VSTest_Runner_App.git
      argsProtected: {}

  build-steps:
    - key: runner_cmd
      name: Build Solution
      disabled: false
      workDir: ""
      args:
        commands: dotnet build VSTest_Runner_App.sln
      argsProtected: {}

    - key: runner_vstest
      name: Run VSTest
      disabled: false
      workDir: ""
      args:
        testAssembly: bin\Debug\net8.0\VSTest_Runner_App.dll
      argsProtected: {}

  artifacts:
    - name: Build Output
      condition: buildSucceeds
      paths:
        - bin
        - TestResults

How to Run These Configurations


  1. Install and start BuildNinja.

docker pull grapehub/buildninja-server:1.0.0
docker pull grapehub/buildninja-agent:1.0.0
  1. Clone the quickstart repository.

  1. Create a build in BuildNinja UI.

    1. Open http://localhost:8800.

    2. Go to Projects → New Build Configuration.

    3. Add VCS Settings in the UI → point to the cloned repository.

    4. Add Execution Step → Config File Runner.

    5. Enter path: nodejs-sample/buildninja.yaml.

    6. Click Run Build.


New to BuildNinja?

If you haven’t installed BuildNinja yet, follow Setting Up BuildNinja in 5 Minutes: A Complete CI/CD Guide for Modern Developers to get the server and agent running before trying these configurations.

Note: VCS settings such as repository URL, branch, and authentication are configured through the BuildNinja UI only. The YAML configuration files control build execution, runners, and artifacts.

Resources



Questions or Feedback?


Contact us at hello@grapehub.io.

All sample configurations are MIT licensed. Source projects retain their respective licenses.

Comments


bottom of page