com um clique
ci-cd-automation
Continuous integration and deployment pipelines, automated testing, build automation, and team workflows for game development.
Menu
Continuous integration and deployment pipelines, automated testing, build automation, and team workflows for game development.
Asset pipeline optimization, compression, streaming, and resource management for efficient game development and delivery.
Game audio systems, music, spatial audio, sound effects, and voice implementation. Build immersive audio experiences with professional middleware integration.
Digital Audio Workstation usage, music composition, interactive music systems, and game audio implementation for immersive soundscapes.
Comprehensive game design theory covering MDA framework, player psychology, balance principles, and progression systems. Master why games are fun.
Master game engines - Unity, Unreal Engine, Godot. Engine-specific workflows, systems architecture, and production best practices.
Game server architecture, scalability, matchmaking, and backend systems for online games. Build robust, scalable multiplayer infrastructure.
| name | ci-cd-automation |
| version | 2.0.0 |
| description | Continuous integration and deployment pipelines, automated testing, build automation, and team workflows for game development. |
| sasmp_version | 1.3.0 |
| bonded_agent | 06-tools-pipeline |
| bond_type | PRIMARY_BOND |
| parameters | [{"name":"platform","type":"string","required":false,"validation":{"enum":["github_actions","gitlab_ci","jenkins","azure_devops"]}},{"name":"engine","type":"string","required":false,"validation":{"enum":["unity","unreal","godot","custom"]}}] |
| retry_policy | {"enabled":true,"max_attempts":3,"backoff":"exponential"} |
| observability | {"log_events":["start","complete","error","deploy"],"metrics":["build_time_seconds","success_rate","cache_hit_rate"]} |
┌─────────────────────────────────────────────────────────────┐
│ CI/CD PIPELINE STAGES │
├─────────────────────────────────────────────────────────────┤
│ TRIGGER: [Push] [PR] [Tag] [Schedule] [Manual] │
│ ↓ │
│ VALIDATE (< 5 min): │
│ Lint → Compile Check → Asset Validation │
│ ↓ │
│ TEST (10-30 min): │
│ Unit Tests → Integration → PlayMode Tests │
│ ↓ │
│ BUILD (Parallel): │
│ [Windows] [Linux] [macOS] [WebGL] [Android] [iOS] │
│ ↓ │
│ DEPLOY: │
│ [Dev auto] → [Staging gate] → [Prod approval] │
└─────────────────────────────────────────────────────────────┘
# ✅ Production-Ready: Unity CI/CD Pipeline
name: Unity Build Pipeline
on:
push:
branches: [main, develop]
pull_request:
branches: [main]
workflow_dispatch:
inputs:
buildType:
description: 'Build type'
required: true
default: 'development'
type: choice
options:
- development
- release
env:
UNITY_LICENSE: ${{ secrets.UNITY_LICENSE }}
jobs:
test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
lfs: true
- uses: actions/cache@v3
with:
path: Library
key: Library-${{ hashFiles('Assets/**', 'Packages/**', 'ProjectSettings/**') }}
restore-keys: Library-
- uses: game-ci/unity-test-runner@v4
with:
testMode: all
artifactsPath: test-results
checkName: Test Results
- uses: actions/upload-artifact@v3
if: always()
with:
name: Test Results
path: test-results
build:
needs: test
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
targetPlatform:
- StandaloneWindows64
- StandaloneLinux64
- WebGL
steps:
- uses: actions/checkout@v4
with:
lfs: true
- uses: actions/cache@v3
with:
path: Library
key: Library-${{ matrix.targetPlatform }}-${{ hashFiles('Assets/**', 'Packages/**') }}
- uses: game-ci/unity-builder@v4
with:
targetPlatform: ${{ matrix.targetPlatform }}
versioning: Semantic
buildMethod: BuildScript.PerformBuild
- uses: actions/upload-artifact@v3
with:
name: Build-${{ matrix.targetPlatform }}
path: build/${{ matrix.targetPlatform }}
retention-days: 14
deploy-staging:
needs: build
if: github.ref == 'refs/heads/develop'
runs-on: ubuntu-latest
environment: staging
steps:
- uses: actions/download-artifact@v3
with:
name: Build-WebGL
path: build/
- name: Deploy to Staging
run: |
# Deploy to staging server
aws s3 sync build/ s3://game-staging-bucket/
# ✅ Production-Ready: Unreal CI/CD
name: Unreal Build Pipeline
on:
push:
branches: [main]
jobs:
build:
runs-on: [self-hosted, unreal]
steps:
- uses: actions/checkout@v4
with:
lfs: true
- name: Build Development
run: |
& "$env:UE_ROOT/Engine/Build/BatchFiles/RunUAT.bat" `
BuildCookRun `
-project="${{ github.workspace }}/MyGame.uproject" `
-platform=Win64 `
-clientconfig=Development `
-build -cook -stage -pak -archive `
-archivedirectory="${{ github.workspace }}/Build"
- uses: actions/upload-artifact@v3
with:
name: UnrealBuild-Win64
path: Build/
BUILD TIME OPTIMIZATION:
┌─────────────────────────────────────────────────────────────┐
│ STRATEGY │ TIME SAVINGS │ EFFORT │
├────────────────────────┼──────────────┼───────────────────┤
│ Library caching │ 30-50% │ Low │
│ Parallel builds │ 40-60% │ Low │
│ Self-hosted runners │ 20-40% │ Medium │
│ Incremental builds │ 50-80% │ Medium │
│ Asset bundles split │ 30-50% │ High │
└─────────────────────────────────────────────────────────────┘
// ✅ Production-Ready: PlayMode Test
[TestFixture]
public class PlayerMovementTests
{
private GameObject _player;
private PlayerController _controller;
[UnitySetUp]
public IEnumerator SetUp()
{
var prefab = Resources.Load<GameObject>("Prefabs/Player");
_player = Object.Instantiate(prefab);
_controller = _player.GetComponent<PlayerController>();
yield return null;
}
[UnityTest]
public IEnumerator Player_MovesForward_WhenInputApplied()
{
var startPos = _player.transform.position;
_controller.SetInput(Vector2.up);
yield return new WaitForSeconds(0.5f);
Assert.Greater(_player.transform.position.z, startPos.z);
}
[UnityTearDown]
public IEnumerator TearDown()
{
Object.Destroy(_player);
yield return null;
}
}
┌─────────────────────────────────────────────────────────────┐
│ PROBLEM: Build times too long (>30 min) │
├─────────────────────────────────────────────────────────────┤
│ SOLUTIONS: │
│ → Enable Library folder caching │
│ → Use self-hosted runners with SSDs │
│ → Parallelize platform builds │
│ → Split large asset bundles │
└─────────────────────────────────────────────────────────────┘
┌─────────────────────────────────────────────────────────────┐
│ PROBLEM: Flaky tests causing failures │
├─────────────────────────────────────────────────────────────┤
│ SOLUTIONS: │
│ → Use test timeouts │
│ → Isolate tests properly │
│ → Add retry logic for network tests │
│ → Quarantine unstable tests │
└─────────────────────────────────────────────────────────────┘
┌─────────────────────────────────────────────────────────────┐
│ PROBLEM: Cache not restoring correctly │
├─────────────────────────────────────────────────────────────┤
│ SOLUTIONS: │
│ → Check cache key hash inputs │
│ → Verify cache path is correct │
│ → Use restore-keys for partial matches │
│ → Check cache size limits │
└─────────────────────────────────────────────────────────────┘
| Strategy | Rollback Time | Risk | Best For |
|---|---|---|---|
| Blue-Green | Instant | Low | Web builds |
| Canary | Minutes | Low | Mobile apps |
| Rolling | Minutes | Medium | Game servers |
| Big Bang | Hours | High | Console releases |
Use this skill: When setting up build pipelines, automating testing, or improving team workflows.