Skip to main content

Deterministic orchestration of white-label app builds

Project description

🚀 ReleasePilot — Deterministic orchestration of white-label app builds

CI Python License Last Commit Open Issues

PyPI Version PyPI Downloads PyPI

ReleasePilot is an assisted release orchestrator that executes yarn commands in an organized, deterministic, and controlled manner, based on variables provided by the operator (platform, contractor, environment, and command).

Its primary goal is to standardize and automate the build, packaging, and delivery process of white-label applications, while respecting the specific differences between contractors, environments, and platforms — without sacrificing human control at critical steps.

ReleasePilot is intentionally designed to orchestrate commands, not to encapsulate low-level logic or highly specific operational flows. For this reason, granular commands, deep customizations, or platform-specific behaviors must live in dedicated build flows, which are then invoked by yarn.

The orchestrator’s responsibility is to order, coordinate, and operate these commands in a consistent, predictable, and auditable way. To enable this, the package.json must define script aliases that follow the ReleasePilot convention:

{platform}:{contractor}:{environment}:{command}

This allows yarn to act as the execution layer, while ReleasePilot acts as the orchestration layer.


🎯 Purpose

ReleasePilot was created to solve a recurring problem in white-label ecosystems:

How can we execute multiple build commands in a consistent, predictable, and auditable way when each application varies by contractor, environment, and platform?

The answer is not blind automation — it is conscious orchestration.


✨ Key Features

  • 🎛️ Orchestration of yarn commands based on operational variables

  • 📱 Multi-platform support (android, ios)

  • 🏢 Automatic discovery of contractors via directory structure

  • 🧪 Automatic discovery of environments per contractor

  • ⚙️ Supported commands: add, build, deploy

  • 🔁 “All” option available in every selection step

  • ⏸️ Assisted execution with human checkpoints between:

    • Environments
    • Contractors
  • 📌 Execution planning identical to the real execution order

  • 📦 Final, traceable release summary

  • 🧩 Simple, pythonic code with no external dependencies


🧠 Operational Philosophy

ReleasePilot does not execute commands randomly.

It:

  • Organizes
  • Orders
  • Operates

Each yarn command is executed within a well-defined context, ensuring that:

  • Builds are not mixed across contractors
  • Environments are strictly respected
  • Artifacts can be safely retrieved between steps
  • The operator has full visibility into what is being executed

📂 Expected Project Structure

project-root/
├─ contractor/
│  ├─ quickup/
│  │  ├─ sandbox/
│  │  ├─ alfa/
│  │  └─ beta/
│  ├─ kompa/
│     ├─ sandbox/
│     ├─ beta/
│     └─ prod/

The project name is automatically inferred from the root directory name.


🧾 Command Pattern

ReleasePilot executes commands following this convention:

yarn {platform}:{contractor}:{environment}:{command}

Example

yarn android:quickup:beta:build

🚀 Installation

Requirements

  • Python 3.9+
  • Node.js + Yarn
  • Git (optional, but recommended for traceability)

🍎 macOS Installation (recommended)

On macOS, the recommended and reliable way to install ReleasePilot as a global CLI is using pipx. This avoids permission issues, conflicts with the system Python, and ensures proper isolation.

1️⃣ Install pipx

python3 -m pip install --user pipx
python3 -m pipx ensurepath

⚠️ After this step, close and reopen your terminal.


2️⃣ Navigate to the project directory

cd release-pilot   # directory containing pyproject.toml

3️⃣ Install ReleasePilot globally

pipx install .

The command will now be available globally as:

release-pilot

▶️ Quick Test

release-pilot

If the interactive menu appears, the installation was successful ✅


🔍 Optional Checks

which release-pilot
pipx list

Expected output (example):

~/.local/bin/release-pilot

🧹 Updating ReleasePilot

After updating the code or version:

pipx reinstall release-pilot

❌ Uninstalling

pipx uninstall release-pilot

⚠️ Important Notes for macOS

  • Do not use sudo pip install
  • Do not use the system Python to install CLIs
  • Do not manually copy binaries
  • For Python CLI tools, pipx is always the correct choice

🧠 Rule of Thumb

Python library → pip install Python CLI tool → pipx install


📌 Execution Planning

Before executing any command, ReleasePilot displays the complete execution plan, in the exact order in which commands will run.

This eliminates ambiguity and ensures full predictability.


✅ Final Release Summary

At the end of execution, ReleasePilot presents a consolidated summary including:

  • 📁 Project
  • 📦 Contractors
  • 🌿 Git branch / version
  • 🧪 Environments
  • 📱 Platforms
  • ⚙️ Total executed commands

This summary improves auditability, communication, and release traceability.


🛡️ Ideal Use Cases

  • White-label app builds
  • Sandbox / alfa / beta / production environments
  • Teams supporting multiple clients
  • Sensitive or regulated releases
  • Teams that require control + automation

🔮 Future Enhancements

  • --dry-run mode
  • Non-interactive execution (--ci)
  • Summary export (.txt / .md)
  • Commit hash and SemVer tag support
  • Slack / Jira / Discord / Telegram integrations
  • Persistent execution logs

📜 License

MIT License.


Perfeito — segue uma seção “Author” no padrão profissional de projetos open source, limpa, objetiva e com o tom certo (nem pessoal demais, nem corporativo demais).

Você pode copiar e colar diretamente no README.md.


👤 Author

André Argôlo CTO • Software Architect • DevOps


🧭 About

André Argôlo is a software architect and technology leader with extensive experience in designing and operating mission-critical systems. His work focuses on building scalable platforms, improving developer experience, and creating pragmatic tooling that balances automation with human control — especially in regulated and high-responsibility environments.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

release_pilot-1.0.4.tar.gz (7.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

release_pilot-1.0.4-py3-none-any.whl (8.0 kB view details)

Uploaded Python 3

File details

Details for the file release_pilot-1.0.4.tar.gz.

File metadata

  • Download URL: release_pilot-1.0.4.tar.gz
  • Upload date:
  • Size: 7.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for release_pilot-1.0.4.tar.gz
Algorithm Hash digest
SHA256 a199e44b84ad23c8888dd5c3d4e8b1e685a878b746fd4731f7848e71004e803d
MD5 07c221b49ed8821b46016a4151a0e1ad
BLAKE2b-256 c5db6a00678055e491a2944aebb441859b5318cf5b3ba4e6f46facf24b8a2105

See more details on using hashes here.

Provenance

The following attestation bundles were made for release_pilot-1.0.4.tar.gz:

Publisher: release.yml on argolo/release-pilot

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file release_pilot-1.0.4-py3-none-any.whl.

File metadata

  • Download URL: release_pilot-1.0.4-py3-none-any.whl
  • Upload date:
  • Size: 8.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for release_pilot-1.0.4-py3-none-any.whl
Algorithm Hash digest
SHA256 290ed7ec5c0d9468aaab3c0a1d9d990f1fe912b86d5b03141750f2e879ec6df6
MD5 b59ef2dbdbb5c61666bcfb3199211002
BLAKE2b-256 932ce87d34c3390fa5be0b9901a9b4f87443dd45398be974176a6aad2e7b2ab5

See more details on using hashes here.

Provenance

The following attestation bundles were made for release_pilot-1.0.4-py3-none-any.whl:

Publisher: release.yml on argolo/release-pilot

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page