GiantCroissant.Lunar.Build 0.1.1-ci.108

This is a prerelease version of GiantCroissant.Lunar.Build.
There is a newer prerelease version of this package available.
See the version list below for details.
dotnet add package GiantCroissant.Lunar.Build --version 0.1.1-ci.108
                    
NuGet\Install-Package GiantCroissant.Lunar.Build -Version 0.1.1-ci.108
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="GiantCroissant.Lunar.Build" Version="0.1.1-ci.108" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="GiantCroissant.Lunar.Build" Version="0.1.1-ci.108" />
                    
Directory.Packages.props
<PackageReference Include="GiantCroissant.Lunar.Build" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add GiantCroissant.Lunar.Build --version 0.1.1-ci.108
                    
#r "nuget: GiantCroissant.Lunar.Build, 0.1.1-ci.108"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package GiantCroissant.Lunar.Build@0.1.1-ci.108
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=GiantCroissant.Lunar.Build&version=0.1.1-ci.108&prerelease
                    
Install as a Cake Addin
#tool nuget:?package=GiantCroissant.Lunar.Build&version=0.1.1-ci.108&prerelease
                    
Install as a Cake Tool

GiantCroissant Lunar Build System

License Build Status

A powerful, configuration-driven build infrastructure for Unity projects with .NET solutions, designed to streamline development workflows and CI/CD pipelines.

Features

  • Unified Build System: Single build configuration for all project types
  • Cross-Platform: Windows, Linux, and macOS
  • Extensible Architecture: Modular components for custom scenarios
  • CI/CD Ready: Seamless integration with GitHub Actions
  • Mobile Support: Android and iOS components and validation

Supported Project Types

  • .NET Libraries: Create and publish NuGet packages
  • .NET Executables: Build and package CLI tools
  • Unity Packages: Manage and deploy Unity packages
  • Unity Player Builds: Multi-platform builds (Android, iOS, Windows)

Quick Start

Prerequisites

Installation

  1. Clone the repository:

    git clone https://github.com/your-org/giantcroissant-lunar-build.git
    cd giantcroissant-lunar-build
    
  2. Restore dependencies:

    dotnet restore build/nuke/Lunar.Build.sln
    
  3. Run the build:

    cd build/nuke
    ./build.ps1
    

Documentation

Local-first build order (canonical) and responsibilities

This repository participates in a strict local-first flow with giantcroissant-lunar-report. LOCAL is the source of truth; CI must mirror it.

Important: This local-first flow is canonical for development and must still be validated (“testified”) on CI. CI should mirror the same ordering and feed policy.

Phases

  • Phase 1 — Report Abstractions (built by report repo)

    • Path: giantcroissant-lunar-report/src/Lunar.NfunReport.Abstractions
    • Package: GiantCroissant.Lunar.NfunReport.Abstractions
    • Output: <report>/build/_artifacts/{version}/nuget-packages/*.nupkg → synced to ../../../packages/nuget-repo (flat + hierarchical)
  • Phase 2 — Build repo packages (built by this repo)

    • Paths → Packages (non-exhaustive):
      • src/Lunar.Build.AbstractionsGiantCroissant.Lunar.Build.Abstractions
      • src/Lunar.Build.ReportingContextAdapterGiantCroissant.Lunar.Build.ReportingContextAdapter
      • build/nuke/components/CodeQualityGiantCroissant.Lunar.Build.CodeQuality
      • build/nuke/components/ConfigurationGiantCroissant.Lunar.Build.Configuration
      • build/nuke/components/CoreAbstractionsGiantCroissant.Lunar.Build.CoreAbstractions
      • build/nuke/components/DocumentationGiantCroissant.Lunar.Build.Documentation
      • build/nuke/components/MobileGiantCroissant.Lunar.Build.Mobile
      • build/nuke/components/NuGetGiantCroissant.Lunar.Build.NuGet
    • Output: <build>/build/_artifacts/{version}/nuget-packages/*.nupkg → synced to ../../../packages/nuget-repo (flat + hierarchical)
  • Phase 3 — Report Core, Reporting utilities, Meta (built by report repo)

    • Guard: report repo enforces GiantCroissant.Lunar.Build.* presence in ../../../packages/nuget-repo in BOTH flat and hierarchical layouts before packing Core/Reporting/Meta.
    • Paths → Packages:
      • giantcroissant-lunar-report/src/Lunar.NfunReport.CoreGiantCroissant.Lunar.NfunReport.Core
      • giantcroissant-lunar-report/build/nuke/components/ReportingGiantCroissant.Lunar.NfunReport.Build.Reporting
      • giantcroissant-lunar-report/build/nuke/Lunar.NfunReport.csprojGiantCroissant.Lunar.NfunReport (meta)

Feed and configuration

  • Repo-root nuget.config (both repos) lists sources in order:
  • No packageSourceMapping for GiantCroissant.*; source order enforces “local first, nuget.org second”.
  • Workspace feed holds both layouts:
    • Flat: C:/lunar-snake/packages/nuget-repo/<id>.<version>.nupkg
    • Hierarchical: C:/lunar-snake/packages/nuget-repo/<id>/<version>/<id>.<version>.nupkg

Versioning

  • Always use GitVersion. If unavailable, builds fall back to 0.0.0.
  • Pack with ContinuousIntegrationBuild=true and UpdateVersionProperties=false.

Minimal command sequence

# 1) Report repo (Phase 1)
cd ..\giantcroissant-lunar-report
dotnet tool restore
./build/nuke/build.ps1 PackAbstractions
./build/nuke/build.ps1 SyncNugetPackagesToLocalFeeds

# 2) Build repo (Phase 2) — this repo
cd ..\giantcroissant-lunar-build
dotnet tool restore
./build/nuke/build.ps1 NuGetWorkflow

# 3) Report repo (Phase 3)
cd ..\giantcroissant-lunar-report
./build/nuke/build.ps1 NuGetWorkflow

CI note

  • The same ordering must be honored in CI. CI should still validate ("testify") this local-first flow by:
    • Using the repo-root nuget.config (local-first) unless explicitly testing nuget.org-only component restores.
    • Pre-creating the runner-local feed directory and syncing component packages before meta pack.
    • Running the equivalent targets (NuGetWorkflow / publish) with GitVersion.

Project Discovery

  • Source of truth: projects.discovery in build/nuke/build-config.json.
  • Precedence: parameter overrides → config values → defaults.
  • Resolution: entries are resolved against both EffectiveRootDirectory and the config file directory; supports files, directories (expanded to **/*.csproj), and wildcard patterns.
  • Example:
{
  "projects": {
    "discovery": {
      "sourceDirectory": "build/nuke",
      "entries": [
        "components/Configuration/Lunar.Build.Configuration.csproj",
        "components/NuGet/Lunar.Build.NuGet.csproj",
        "components/CodeQuality/Lunar.Build.CodeQuality.csproj",
        "components/CoreAbstractions/Lunar.Build.CoreAbstractions.csproj",
        "components/Mobile/Lunar.Build.Mobile.csproj",
        "components/Mobile/iOS/Lunar.Build.Mobile.iOS.csproj",
        "components/Mobile/Android/Lunar.Build.Mobile.Android.csproj"
      ],
      "excludePatterns": ["Tests.csproj", ".Tests.csproj"]
    }
  }
}
  • Schema: build/nuke/components/Configuration/schemas/project-discovery.schema.json (referenced by the root schema).
  • Note: legacy projectGroups[*].explicitProjects are no longer used for discovery; the build now consumes projects.discovery via IProjectDiscoveryComponent.

Project Structure

giantcroissant-lunar-build/
├─ build/                 # Build system components and configurations
├─ docs/                  # Documentation
├─ projects/              # Example and test projects
├─ scripts/               # Utility scripts
└─ .github/               # GitHub workflows and templates

Contributing

We welcome contributions! Contributing guidelines will be added soon.

License

This project is licensed under the MIT License. A LICENSE file will be added to the repository.

Support

For support, please open an issue in the repository issue tracker.

Changelog

Changelog will be provided once releases are stabilized.


<div align="center"> Made with care by the GiantCroissant Team </div>

There are no supported framework assets in this package.

Learn more about Target Frameworks and .NET Standard.

NuGet packages

This package is not used by any NuGet packages.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
0.1.1-ci.111 24 9/15/2025
0.1.1-ci.110 19 9/15/2025
0.1.1-ci.109 21 9/15/2025
0.1.1-ci.108 22 9/15/2025
0.1.1-ci.107 21 9/15/2025
0.1.1-ci.104 19 9/15/2025
0.1.1-ci.90 124 9/8/2025
0.1.1-ci.40 64 9/6/2025