Files
call-center/docs/runbooks/gitlab-server-deploy.md
T

2.3 KiB

GitLab -> Server Deploy

This project is prepared for a GitLab-first delivery flow:

  1. Push source code to GitLab.
  2. GitLab CI runs tests.
  3. GitLab CI builds and pushes container images to GitLab Container Registry.
  4. The server only receives the deployment bundle and pulls images from the registry.

For a same-host shell-runner flow that rebuilds call-center-app directly on push to main, see:

  • docs/runbooks/gitlab-cicd.md

Files used

  • .gitlab-ci.yml
  • deployment/docker-compose.server.registry.yml
  • deployment/docker-compose.asterisk.server.registry.yml
  • deployment/.env.images.example

GitLab CI variables

Required for image publishing:

  • CI_REGISTRY
  • CI_REGISTRY_USER
  • CI_REGISTRY_PASSWORD
  • CI_REGISTRY_IMAGE

Required for the optional deploy job:

  • DEPLOY_HOST
  • DEPLOY_USER
  • DEPLOY_PATH
  • DEPLOY_SSH_PRIVATE_KEY

DEPLOY_PATH should point to a minimal runtime directory on the server, for example:

/opt/call-center

The server runtime directory should contain:

  • .env.production
  • .data_local/
  • .asterisk_assets/ (can stay empty)
  • deployment/

Server deploy bundle

The server no longer needs the full project checkout. It only needs:

  • deployment/
  • .env.production
  • .data_local/
  • .asterisk_assets/ if you use custom prompt files

The app image is resolved through APP_IMAGE. The Asterisk image is resolved through ASTERISK_IMAGE.

Store them in deployment/.env.images, for example:

APP_IMAGE=registry.gitlab.example.com/group/project/app:<tag>
ASTERISK_IMAGE=registry.gitlab.example.com/group/project/asterisk:<tag>

Manual server deploy

From the server:

cd /opt/call-center/deployment
docker login <registry>
docker compose --env-file .env.images -f docker-compose.server.registry.yml pull
docker compose --env-file .env.images -f docker-compose.server.registry.yml up -d
docker compose --env-file .env.images -f docker-compose.asterisk.server.registry.yml pull
docker compose --env-file .env.images -f docker-compose.asterisk.server.registry.yml up -d

Notes

  • deployment/docker-compose.server.yml is still the source-build variant.
  • deployment/docker-compose.server.registry.yml is the registry/pull-only variant for the server.
  • The deploy job in .gitlab-ci.yml is manual on the default branch by design.