Xema

Dev builds

Xema is released on two channels. Stable is what a live call centre runs. Dev is the canary: every change reaches it as soon as it is merged, and stable only after it has run there. Use dev on a test server, to try a fix or a feature before it is released, or to help find what breaks before your agents do.

A dev build has been through the same automated checks as a stable one, and nothing more. It has not been run on a live site yet; that is what dev is for.

What a dev build is

Each part of Xema is released on its own, as soon as a change to it is merged, so a dev server can take one part without the others. Every release has a version number — 2.0.3228 — that only ever grows, and says which version of Xema it belongs to. The dev channel keeps the ten newest of each part.

A version number means the same code on both channels. When a dev build reaches stable it keeps its number: dev's 2.0.3228 is stable's 2.0.3228. So a server can move between the channels and always knows where it stands.

Everything is checked the same way on both channels: every file is checked against the size and checksum the channel lists before it replaces anything, and a release is applied by its own xema.

A new server on dev

Run the installer with -d:

curl -fsSL https://www.xema.in/install-xema.sh | sudo bash -s -- -d

It puts the xema command in place and records that this server takes dev builds; nothing else on the server is touched. From there, set it up as in your first server, or convert a V1 server as in moving a V1 server to V2.

Moving a server to dev

xema channel                 # which channel this server takes releases from
sudo xema channel set dev
sudo xema update             # the newest xema from dev
sudo xema upgrade --dry-run  # what would change, from which version to which
sudo xema upgrade

Going back to stable

sudo xema channel set stable

An upgrade never goes backwards. A dev server usually runs newer versions than stable has, so until stable reaches them sudo xema upgrade keeps those parts as they are and says so; once stable has caught up there is nothing to change, and from then on the server moves forward with stable. sudo xema upgrade --dry-run shows the versions either side.

What to tell us

When something on a dev build is not right, the version tells us which build it is:

xema --version
xema status

xema status shows the version each part of Xema is on. Send both with what you saw.