Warning
Demonstration use only — not a CloudBees product.
This repository is part of a hands-on workshop for CloudBees Unify. It is a reference application built to teach concepts such as feature flags and progressive delivery, and it is not an official, supported, or maintained CloudBees product.
It is not safe for production use. Authentication, access control, input handling and network safeguards have been deliberately simplified for teaching and have known security gaps. Run it only for the duration of a workshop or demonstration and tear it down afterwards. Do not use it with live data from personal, customer, or business accounts, or with any confidential information, and do not use it as a template for production code without a full security review.
The recall information it displays comes from public FDA and CPSC sources and is shown for demonstration only; it is not compliance or legal advice.
Provided "as is", without warranty of any kind, under the terms of the LICENSE.
Build and release a five-component application with CloudBees Unify, then change its behaviour live with a feature flag.
Recall Tracker helps a company track product recalls that affect it. A user describes their business, the app searches live FDA and CPSC recall data, and builds a compliance matrix of what they need to act on.
It is a real application rather than a demo shell — five services with genuine boundaries between them:
┌───────────────────┐
you ── HTTPS ──►│ recall-web-ui │ pages, and the browser-side flags
└───────────────────┘
│ /api
┌───────────────────┐
│ recall-core-api │ the API surface everything talks to
└───────────────────┘
│
┌───────────┴───────────┐
┌───────────────────┐ ┌───────────────────┐
│ recall-ai-service │ │ recall-worker │ backend services:
│ Recall Advisor │ │ FDA / CPSC │ no route from outside
└───────────────────┘ └───────────────────┘
└───────────┬───────────┘
┌───────────────────┐
│ recall-db │ migrations run first
└───────────────────┘
Only recall-web-ui has a route in from the internet. recall-db has to be deployed
before everything else, and recall-web-ui after recall-core-api.
That shape is the reason this workshop exists. A pipeline with a single service is straightforward and trivializes the issues of more complex applications — deployment ordering, coordinated releases, changing one service's behaviour without touching its neighbours, working out which service actually broke, etc...
Each of the five repositories becomes a Component: a repository with workflows in
it. A sixth, app-recall-tracker, holds no application code — it is the Application,
and its workflows release the other five together, in order, through three
Environments with an approval gate after the DEV environment.
By the end you will have a running copy of Recall Tracker with your own URL, and you will change what it does while it is running, without deploying anything.
| Session | Focus | You finish with |
|---|---|---|
| 1 | The building blocks of Unify | All five components building real images |
| 2 | Release orchestration | One Application releasing all five, gated, across three environments |
| 3 | Feature management | Behaviour you change live, without deploying |
| Module | Covers | Time |
|---|---|---|
| 00 — Before we start | Accounts and repository copies. Pre-work. | 15 min |
| 01 — Orientation | The vocabulary and the map. | 25 min |
| 02 — Configuration | Every value set, and Verify Setup passing. | 30 min |
| 03 — Your first component | recall-db built, pushed and deployed. |
45 min |
| 04 — The remaining components | The other four built. Five images, five artifacts. | 45 min |
| 05 — The Application | Five components into one releasable unit. | 40 min |
| 06 — Release orchestration | One gated release across three environments. Your URL. | 50 min |
| 07 — Discovery, and where flags come from | Live recall data, then five flags nobody created. | 35 min |
| 08 — Flipping flags | Behaviour changed live, nothing redeployed. | 40 min |
| 09 — Progressive rollout and targeting | Percentage splits, and rules per user. | 40 min |
| 10 — Wrap-up | What you built, and where to go next. | 20 min |
Raise your hand and ask the facilitator.