GiantCroissant.Lunar.Build
0.1.1-ci.104
See the version list below for details.
dotnet add package GiantCroissant.Lunar.Build --version 0.1.1-ci.104
NuGet\Install-Package GiantCroissant.Lunar.Build -Version 0.1.1-ci.104
<PackageReference Include="GiantCroissant.Lunar.Build" Version="0.1.1-ci.104" />
<PackageVersion Include="GiantCroissant.Lunar.Build" Version="0.1.1-ci.104" />
<PackageReference Include="GiantCroissant.Lunar.Build" />
paket add GiantCroissant.Lunar.Build --version 0.1.1-ci.104
#r "nuget: GiantCroissant.Lunar.Build, 0.1.1-ci.104"
#:package GiantCroissant.Lunar.Build@0.1.1-ci.104
#addin nuget:?package=GiantCroissant.Lunar.Build&version=0.1.1-ci.104&prerelease
#tool nuget:?package=GiantCroissant.Lunar.Build&version=0.1.1-ci.104&prerelease
GiantCroissant Lunar Build System
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
- .NET 6.0+ SDK
- Unity 2020.3+ (for Unity projects)
- Git
Installation
Clone the repository:
git clone https://github.com/your-org/giantcroissant-lunar-build.git cd giantcroissant-lunar-build
Restore dependencies:
dotnet restore build/nuke/Lunar.Build.sln
Run the build:
cd build/nuke ./build.ps1
Documentation
- Docs Index – Overview and navigation
- Quick Start Guide – How to use the build system
- Getting Started – Onboarding and platform setup
- Reference – CLI/targets, performance, inventory
- NuGet Local Feed & Meta Pinning – Local feed, packageSourceMapping, and meta dependency pinning best practices
- Workspace Artifacts and Feed Policy – SSOT, artifacts location, and workspace feed rules
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)
- Path:
Phase 2 — Build repo packages (built by this repo)
- Paths → Packages (non-exhaustive):
src/Lunar.Build.Abstractions
→GiantCroissant.Lunar.Build.Abstractions
src/Lunar.Build.ReportingContextAdapter
→GiantCroissant.Lunar.Build.ReportingContextAdapter
build/nuke/components/CodeQuality
→GiantCroissant.Lunar.Build.CodeQuality
build/nuke/components/Configuration
→GiantCroissant.Lunar.Build.Configuration
build/nuke/components/CoreAbstractions
→GiantCroissant.Lunar.Build.CoreAbstractions
build/nuke/components/Documentation
→GiantCroissant.Lunar.Build.Documentation
build/nuke/components/Mobile
→GiantCroissant.Lunar.Build.Mobile
build/nuke/components/NuGet
→GiantCroissant.Lunar.Build.NuGet
- Output:
<build>/build/_artifacts/{version}/nuget-packages/*.nupkg
→ synced to../../../packages/nuget-repo
(flat + hierarchical)
- Paths → Packages (non-exhaustive):
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.Core
→GiantCroissant.Lunar.NfunReport.Core
giantcroissant-lunar-report/build/nuke/components/Reporting
→GiantCroissant.Lunar.NfunReport.Build.Reporting
giantcroissant-lunar-report/build/nuke/Lunar.NfunReport.csproj
→GiantCroissant.Lunar.NfunReport
(meta)
- Guard: report repo enforces
Feed and configuration
- Repo-root
nuget.config
(both repos) lists sources in order:local-packages
→../../../packages/nuget-repo
(relative to repo root)nuget.org
→ https://api.nuget.org/v3/index.json
- No
packageSourceMapping
forGiantCroissant.*
; 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
- Flat:
Versioning
- Always use GitVersion. If unavailable, builds fall back to
0.0.0
. - Pack with
ContinuousIntegrationBuild=true
andUpdateVersionProperties=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.
- Using the repo-root
Project Discovery
- Source of truth:
projects.discovery
inbuild/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 consumesprojects.discovery
viaIProjectDiscoveryComponent
.
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>
Learn more about Target Frameworks and .NET Standard.
-
net9.0
- GiantCroissant.Lunar.Build.CodeQuality (>= 0.1.1-ci.104)
- GiantCroissant.Lunar.Build.Configuration (>= 0.1.1-ci.104)
- GiantCroissant.Lunar.Build.CoreAbstractions (>= 0.1.1-ci.104)
- GiantCroissant.Lunar.Build.Mobile (>= 0.1.1-ci.104)
- GiantCroissant.Lunar.Build.Mobile.Android (>= 0.1.1-ci.104)
- GiantCroissant.Lunar.Build.Mobile.iOS (>= 0.1.1-ci.104)
- GiantCroissant.Lunar.Build.NuGet (>= 0.1.1-ci.104)
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 | 23 | 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 |