DevOps & CI/CD
Skill ID: ivx-devops-cicd
name: ivx-devops-cicd description: >- Set up CI/CD pipelines, build automation, and release workflows for IntelliVerseX SDK games across all 10 supported platforms. Use when the user says "CI/CD", "GitHub Actions", "build pipeline", "automated builds", "release pipeline", "version bumping", "asset bundles", "cloud build", "test automation", "code signing", "deploy", "continuous integration", or needs help with any build, test, or release automation. version: "1.0.0" author: "IntelliVerse-X team@intelli-verse-x.ai" allowed-tools: - Read - Write - Edit - Glob - Grep - Shell
Overview
The DevOps module provides ready-to-use CI/CD pipeline templates, build automation scripts, and release workflows for all 10 supported engines. One command generates a complete GitHub Actions pipeline tailored to your engine, target platforms, and release strategy.
Source Code Push
│
▼
CI Pipeline (GitHub Actions)
│
├── Lint & Validate ──► Code quality gates
├── Build ──► Per-platform binaries
├── Test ──► Unit + integration tests
├── Asset Bundle ──► CDN upload
└── Release ──► Store submission / deploy
│
▼
Release Artifacts + Changelogs
1. Quick Setup
Generate Pipeline
using IntelliVerseX.DevOps;
await IVXPipelineGenerator.Instance.GenerateAsync(new PipelineConfig
{
Engine = GameEngine.Unity,
Platforms = new[] { Platform.Android, Platform.iOS, Platform.WebGL },
TestFramework = TestFramework.UnityTestFramework,
AssetBundleCDN = "s3://my-bucket/bundles",
ReleaseStrategy = ReleaseStrategy.SemVer,
EnableCodeSigning = true,
});
Or use the CLI:
ivx-pipeline init --engine unity --platforms android,ios,webgl
2. GitHub Actions Workflow Templates
Unity Pipeline
| Job | Steps | Triggers |
| Lint | EditorConfig check, namespace validation, asmdef verification | Every push |
| Test | Unity Test Framework (EditMode + PlayMode) | Every push |
| Build Android | Unity batch build, AAB signing, Play Store upload | Tag / manual |
| Build iOS | Unity batch build, Xcode archive, TestFlight upload | Tag / manual |
| Build WebGL | Unity batch build, deploy to hosting | Tag / manual |
| Asset Bundles | Build bundles, upload to CDN, update manifest | Asset changes |
Unreal Pipeline
| Job | Steps | Triggers |
| Compile | UnrealBuildTool compile check | Every push |
| Test | Unreal Automation Tool tests | Every push |
| Build | Cook + Package per platform | Tag / manual |
| Deploy | Upload to Steam / Epic / console dev kits | Tag / manual |
Godot Pipeline
| Job | Steps | Triggers |
| Lint | GDScript linter (gdtoolkit) | Every push |
| Test | GUT (Godot Unit Testing) | Every push |
| Export | Godot headless export per platform | Tag / manual |
| Deploy | Upload to itch.io / Steam / web hosting | Tag / manual |
JavaScript/Web Pipeline
| Job | Steps | Triggers |
| Lint | ESLint + TypeScript check | Every push |
| Test | Jest / Vitest | Every push |
| Build | Webpack / Vite bundle | Every push |
| Deploy | CDN / Vercel / Netlify deploy | Tag / manual |
3. Version Management
IVXVersionManager
Automated SemVer version bumping across all SDK files:
await IVXVersionManager.Instance.BumpAsync(VersionBump.Minor);
Files Updated
| Engine | Version Files |
| Unity | package.json, ProjectSettings/ProjectSettings.asset |
| Unreal | *.uplugin, DefaultGame.ini |
| Godot | project.godot, plugin.cfg |
| JavaScript | package.json |
| Java | build.gradle |
| Flutter | pubspec.yaml |
| C++ | CMakeLists.txt, version header |
Changelog Generation
var changelog = await IVXVersionManager.Instance.GenerateChangelogAsync(
format: ChangelogFormat.KeepAChangelog,
sinceTag: "v1.2.0"
);
await changelog.SaveAsync("CHANGELOG.md");
Parses conventional commits (feat:, fix:, breaking:) into categorized changelogs.
4. Asset Bundle Pipeline
Build and Upload
var bundleResult = await IVXAssetPipeline.Instance.BuildBundlesAsync(new BundleBuildConfig
{
Platforms = new[] { Platform.Android, Platform.iOS },
CompressionMode = BundleCompression.LZ4,
OutputPath = "build/bundles",
IncrementalBuild = true,
});
await IVXAssetPipeline.Instance.UploadToCDNAsync(new CDNUploadConfig
{
Provider = CDNProvider.S3,
Bucket = "my-game-assets",
Region = "us-east-1",
VersionTag = currentVersion,
});
Manifest Management
var manifest = await IVXAssetPipeline.Instance.GetManifestAsync();
Debug.Log($"Bundle count: {manifest.Bundles.Count}");
Debug.Log($"Total size: {manifest.TotalSizeMB:F1} MB");
5. Test Automation
Test Runner Configuration
var testConfig = new IVXTestRunnerConfig
{
Framework = TestFramework.UnityTestFramework,
RunEditModeTests = true,
RunPlayModeTests = true,
CodeCoverageMinPercent = 60,
FailOnWarnings = false,
OutputFormat = TestOutputFormat.JUnit,
OutputPath = "test-results/",
};
var results = await IVXTestRunner.Instance.RunAsync(testConfig);
Debug.Log($"Pass: {results.PassCount}, Fail: {results.FailCount}");
Debug.Log($"Coverage: {results.CodeCoverage:P1}");
Per-Engine Test Frameworks
| Engine | Framework | CLI Command |
| Unity | Unity Test Framework | unity -batchmode -runTests |
| Unreal | Automation Tool | RunTests commandlet |
| Godot | GUT | godot --headless -s gut_cli.gd |
| JavaScript | Jest / Vitest | npm test |
| Java | JUnit | ./gradlew test |
| Flutter | flutter_test | flutter test |
| C++ | Google Test | ctest |
6. Code Signing
Signing Configuration
var signingConfig = new IVXSigningConfig
{
Android = new AndroidSigningConfig
{
KeystorePath = "secrets/release.keystore",
KeystorePassword = Environment.GetEnvironmentVariable("KEYSTORE_PASS"),
KeyAlias = "release",
KeyPassword = Environment.GetEnvironmentVariable("KEY_PASS"),
},
iOS = new iOSSigningConfig
{
ProvisioningProfile = "secrets/release.mobileprovision",
CertificatePath = "secrets/distribution.p12",
CertificatePassword = Environment.GetEnvironmentVariable("CERT_PASS"),
TeamId = "ABCDE12345",
},
macOS = new macOSSigningConfig
{
DeveloperIdApplication = "Developer ID Application: Your Name",
NotarizeAppleId = Environment.GetEnvironmentVariable("APPLE_ID"),
NotarizePassword = Environment.GetEnvironmentVariable("APPLE_PASS"),
},
};
All secrets are stored as GitHub Actions secrets and injected via environment variables.
7. Release Workflows
Release Strategy Options
| Strategy | Description | Best For |
SemVer | Major.Minor.Patch with conventional commits | Libraries, SDKs |
CalVer | Year.Month.Build (e.g. 2026.04.1) | Live service games |
Sprint | Sprint number + build (e.g. S12.45) | Agile teams |
BuildNumber | Auto-incrementing build number | Continuous deployment |
Store Submission
await IVXReleaseManager.Instance.SubmitAsync(new SubmissionConfig
{
Platform = Platform.Android,
Track = ReleaseTrack.Internal,
ArtifactPath = "build/app-release.aab",
ReleaseNotes = changelogMarkdown,
});
Supported Stores
| Store | Submission Method | Automation |
| Google Play | fastlane supply or Play Console API | Full |
| Apple App Store | fastlane deliver or App Store Connect API | Full |
| Steam | steamcmd | Full |
| itch.io | butler push | Full |
| Epic Games Store | BuildPatchTool | Semi (manual review) |
| Meta Quest Store | CLI upload | Semi |
| WebGL hosting | S3/Vercel/Netlify deploy | Full |
8. Environment Management
Staging Environments
environments:
development:
nakama_url: "http://localhost:7350"
satori_url: "http://localhost:7450"
asset_cdn: "http://localhost:8080"
staging:
nakama_url: "https://staging-nakama.example.com"
satori_url: "https://staging-satori.example.com"
asset_cdn: "https://staging-cdn.example.com"
production:
nakama_url: "https://nakama.example.com"
satori_url: "https://satori.example.com"
asset_cdn: "https://cdn.example.com"
IVXEnvironmentManager.Instance.SetEnvironment("staging");
| Engine | Build Runner | Container | Signing |
| Unity | GameCI Docker | unityci/editor | Android keystore, iOS cert, macOS notarize |
| Unreal | Self-hosted runner | Custom UE image | Platform-specific |
| Godot | GitHub-hosted | barichello/godot-ci | Android keystore |
| JavaScript | GitHub-hosted | node:20 | npm publish token |
| Java | GitHub-hosted | gradle:jdk17 | Android keystore, Maven GPG |
| Flutter | GitHub-hosted | cirrusci/flutter | Android keystore, iOS cert |
| C++ | GitHub-hosted | Ubuntu/Windows/macOS | CMake + platform tools |
| Platform | CI/CD Notes |
| Meta Quest | Use Meta's ovr-platform-util CLI for APK upload. Requires Quest Developer Hub. |
| SteamVR | Standard Steam pipeline via steamcmd. Include VR manifest in depot config. |
| Vision Pro | Standard Xcode archive → App Store Connect pipeline. Requires visionOS SDK. |
| Platform | CI/CD Notes |
| PlayStation | Requires Sony's proprietary SDK and dev kits. CI runs on self-hosted runners with NDA tools. |
| Xbox | Requires GDK build tools. Partner Center submission via API or CLI. |
| Switch | Requires Nintendo SDK on self-hosted runners. Submission via Nintendo Developer Portal. |
WebGL / Browser
| Feature | WebGL Notes |
| Deploy | Deploy to any static hosting (S3, Vercel, Netlify, GitHub Pages). |
| CDN | Configure cache headers for asset bundles. Use content-hash filenames for cache busting. |
| Compression | Enable Brotli or gzip compression for WebGL builds. |
Checklist