Skip to content

Local GitLab + Runner Setup

Use this when no remote GitLab is available yet and you want to validate .gitlab-ci.yml locally.

Start local GitLab

  1. Start services:
  2. docker compose -f doc/operations/local-dev/docker-compose.gitlab.yaml up -d
  3. Watch startup logs:
  4. docker logs -f gpuaas-gitlab
  5. Open GitLab:
  6. http://localhost:8929

Get root password

  • docker exec -it gpuaas-gitlab grep 'Password:' /etc/gitlab/initial_root_password

Register runner (Docker executor)

  1. In GitLab UI, create a runner token (project/group/instance).
  2. Register:
  3. docker exec -it gpuaas-gitlab-runner gitlab-runner register
  4. Use values:
  5. GitLab URL: http://gitlab:8929/
  6. Executor: docker
  7. Default Docker image: golang:1.26
  8. Mount Docker socket already configured by compose

Note: inside the runner container, use http://gitlab:8929/ (service name), not localhost.

Local CI dry run (without GitLab server)

Run all reusable CI scripts in pipeline order: - bash scripts/ci/gitlab_local_dry_run.sh

This validates the same gates used by .gitlab-ci.yml and catches most issues before pushing to remote.

Stop local GitLab

  • docker compose -f doc/operations/local-dev/docker-compose.gitlab.yaml down