Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

325 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Release Wizard

Release Wizard

A visual release pipeline builder for orchestrating multi-service deployments across TeamCity, GitHub, and Slack.


Release Wizard lets you design release pipelines as visual DAGs (directed acyclic graphs), connect them to your CI/CD infrastructure, and execute them with real-time monitoring. Build a pipeline once as a reusable project template, then run it repeatedly to create releases.

Key Features

Visual Pipeline Editor — Drag-and-drop canvas for building release DAGs. Blocks connect sequentially, in parallel, or nested inside containers for hierarchical pipelines. Undo/redo, auto-save, and concurrent edit locking included.

Block Types:

  • TeamCity Build — trigger builds, download artifacts, track sub-builds
  • GitHub Action — dispatch workflows
  • GitHub Publication — trigger release workflows
  • Slack Message — post notifications via webhooks
  • Container — nest an entire sub-pipeline inside a single block

Live Release Monitoring — Real-time execution tracking via WebSockets. Watch blocks transition through pending/running/success/failed states, view error logs, and browse artifact trees.

Automation Triggers — Schedule releases with cron expressions, expose webhook URLs for external systems, or monitor Maven repositories for new artifact versions to auto-trigger pipelines.

Team Collaboration — Role-based access control, team invitations, project ownership by team, and full audit logging of all actions.

Multi-Platform Client — Runs as a desktop app (JVM) or in the browser (WebAssembly/JS). Same Compose Multiplatform codebase for both.

Architecture

Three Gradle modules, all under the com.github.mr3zee package:

┌─────────────┐     ┌─────────────┐
│  composeApp  │     │   server    │
│  (Desktop +  │     │  (Ktor +    │
│   Web UI)    │     │  PostgreSQL)│
└──────┬───────┘     └──────┬──────┘
       │                    │
       └────────┬───────────┘
                │
         ┌──────┴──────┐
         │   shared    │
         │  (Models +  │
         │   Logic)    │
         └─────────────┘
  • shared/ — Kotlin Multiplatform library (JVM, JS, WasmJS). Domain models, DAG validation, serialization, and constants.
  • composeApp/ — Compose Multiplatform client. All UI code lives in commonMain. Desktop (JVM) and Web (Wasm/JS) targets.
  • server/ — Ktor backend with PostgreSQL. Handles auth, execution engine, integrations, WebSocket updates, and REST API.

Tech Stack

Layer Technology Version
Language Kotlin 2.3.0
UI Compose Multiplatform 1.10.0
Server Ktor 3.3.3
Database PostgreSQL + Exposed ORM 1.1.1
DI Koin 4.1.1
Build Gradle (Kotlin DSL) wrapper included

Getting Started

Prerequisites

  • JDK 21+
  • Docker & Docker Compose

Local Development

# Start PostgreSQL
docker compose up -d

# Generate .env with secrets (first time only)
./scripts/setup-local-env.sh

# Run the server (http://localhost:8080)
source .env && ./gradlew :server:run

Desktop App

./gradlew :composeApp:run

Web App (Wasm)

./gradlew :composeApp:wasmJsBrowserDevelopmentRun

Test Panel (Mock Services)

A Compose Desktop app that mocks TeamCity, Slack, and GitHub APIs on localhost:8111 for local integration testing without real external services.

# Terminal 1 — start the test panel
./gradlew :testPanel:run

# Terminal 2 — start the server with DEV_MODE
source .env && DEV_MODE=true ./gradlew :server:run

When DEV_MODE=true and the seed admin is configured, the server auto-creates a "Dev Team" with three connections pre-configured to point to the test panel. The test panel UI lets you manually control build states, view Slack messages, manage GitHub workflow runs, and send webhook status updates.

Split Mode (Frontend Hot-Reload)

Run backend and frontend in separate terminals for faster UI iteration:

# Terminal 1
source .env && ./gradlew :server:run

# Terminal 2 (http://localhost:8081)
./gradlew :composeApp:wasmJsBrowserDevelopmentRun

Testing

./gradlew :shared:jvmTest          # Shared unit tests
./gradlew :server:test             # Server tests (H2 in-memory DB)
./gradlew :composeApp:jvmTest      # Compose UI tests (mock HTTP)
./gradlew :e2eTest:test            # End-to-end (embedded server + UI)
./gradlew :server:integrationTest  # Integration tests (real APIs, requires Docker + credentials)

Security

  • Argon2 password hashing
  • AES-256 encryption for stored credentials
  • Encrypted sessions with CSRF protection
  • SSRF protection on webhook URLs
  • Rate limiting on auth endpoints
  • Account lockout after failed login attempts

Language Packs

Seven themed text packs for fun: English (default), Gen Z, Rick and Morty, Helldivers, All Lies, Emojis, and Rick Roll.

License

All rights reserved.

About

Release process wizard - docs, pipeline, automation

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages