Skip to main content

Gitlabracadabra

🧹 GitLabracadabra 🧙

⚗ Adds some magic to GitLab 🔮

GitLab'racadabra is a GitOps way to configure a GitLab instance from a YAML configuration, using the API.

It is able to create GitLab's groups, projects, users and application settings.

👍 It's also able to mirror :

It is based on Python GitLab.

Table of Contents

Installation

Using Debian packages

Debian package is available from artifacts and can be installed with:

apt install gitlabracadabra_*.deb

gitlabracadabra --verbose --dry-run

Note: Debian 12 bookworm or later is required.

Using pip

pip install gitlabracadabra

Using docker image

There are also Docker/OCI images.

Example usage:

sudo docker run -ti \
  -v "$HOME/.python-gitlab.cfg:/home/gitlabracadabra/.python-gitlab.cfg:ro" \
  -v "$PWD/gitlabracadabra.yml:/app/gitlabracadabra.yml:ro" \
  'registry.gitlab.com/gitlabracadabra/gitlabracadabra:v2.8.1' \
  --verbose --dry-run

Other images are available. Examples:

  • registry.gitlab.com/gitlabracadabra/gitlabracadabra/main: Current main
  • registry.gitlab.com/gitlabracadabra/gitlabracadabra/main:b1cd3482bf9583c5db863c359e12cafcdb7119bf: A specific commit of main

From source

Local installation (in $HOME/.local):

# On Debian or Ubuntu
sudo apt install -y --no-install-recommends \
  python3-build \
  python3-github \
  python3-gitlab \
  python3-html5lib \
  python3-jsonschema \
  python3-packaging \
  python3-pygit2 \
  python3-semantic-version \
  python3-vcr \
  python3-venv \
  python3-yaml \
  python3-pip \
  python3-coverage \
  python3-pytest
# On Alpine
sudo apk add \
  py3-build \
  py3-pygithub \
  py3-requests-toolbelt \
  py3-html5lib \
  py3-jsonschema \
  py3-packaging \
  py3-pygit2 \
  py3-semantic-version \
  py3-vcrpy \
  py3-yaml \
  py3-pip \
  py3-coverage \
  py3-pytest
# On others
pip install build

# Build and install
python3 -m build
version="$(grep __version__ gitlabracadabra/__init__.py  | awk -F "'" '{print $2}')"
pip install --user "dist/gitlabracadabra-$version"*.whl

# Test
pytest-3  # or pytest
~/.local/bin/gitlabracadabra --verbose --dry-run

Configuration

GitLabracadabra uses the same configuration file as Python GitLab CLI to store connection parameters.

Example ~/.python-gitlab.cfg:

[global]
default = gitlab

[gitlab]
url = https://gitlab.com
private_token = T0K3N

More information in Python GitLab documentation.

Alternatively, you can use the following environment variables:

  • GITLAB_URL: GitLab URL
  • GITLAB_PRIVATE_TOKEN or GITLAB_OAUTH_TOKEN: authentication
  • GITLAB_TLS_VERIFY: either true or false, or a CA path. Ignored when emty.

Action file(s)

GitLabracadabra actions are configured with a YAML file.

See GitLabracadabra's own action file or read:

Using gitlabracadabra in GitLab CI

Since job token probably won't have enough permissions, you'll need to use a personal access token:

default:
  image:
    name: 'registry.gitlab.com/gitlabracadabra/gitlabracadabra:v2.8.1'
    entrypoint: [""]
  before_script:
    - |
        cat << EOF > ~/.python-gitlab.cfg
        [global]
        default = gitlab
        [gitlab]
        url = ${CI_SERVER_URL:-https://gitlab.com}
        private_token = ${GITLAB_PRIVATE_TOKEN}
        # job_token = ${GITLAB_JOB_TOKEN}
        EOF

stages:
  - test
  - deploy

test:
  stage: test
  script:
    - gitlabracadabra --verbose --dry-run
  rules:
    - if: '$CI_COMMIT_BRANCH != "main"'

apply:
  stage: deploy
  script:
    - gitlabracadabra --verbose
  rules:
    - if: '$CI_COMMIT_BRANCH == "main"'

Contributing

  • File bugs and feature requests in GitLab issues. Security issues should be marked as confidential.

  • Propose documentation or code improvements in GitLab merge requests.

    This repository enforces commit message convention, to check this locally install the commitlint hook:

    npm install  @commitlint/{config-conventional,cli}
    echo 'npx commitlint --edit' >> .git/hooks/commit-msg
    chmod +x .git/hooks/commit-msg
    

See also:

Download files

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

Source Distribution

gitlabracadabra-2.8.1.tar.gz (582.0 kB view details)

Uploaded Source

Built Distribution

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

gitlabracadabra-2.8.1-py3-none-any.whl (131.7 kB view details)

Uploaded Python 3

File details

Details for the file gitlabracadabra-2.8.1.tar.gz.

File metadata

  • Download URL: gitlabracadabra-2.8.1.tar.gz
  • Upload date:
  • Size: 582.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: Hatch/1.17.0 {"ci":null,"cpu":"x86_64","distro":{"id":"trixie","libc":{"lib":"glibc","version":"2.41"},"name":"Debian GNU/Linux","version":"13"},"implementation":{"name":"CPython","version":"3.13.5"},"installer":{"name":"hatch","version":"1.17.0"},"openssl_version":"OpenSSL 3.5.6 7 Apr 2026","python":"3.13.5","system":{"name":"Linux","release":"6.12.94+deb13-amd64"}} HTTPX2/2.5.0

File hashes

Hashes for gitlabracadabra-2.8.1.tar.gz
Algorithm Hash digest
SHA256 637c6a146c40d7a08f3cc9423f8745aaea3c0f87e941e63f497911a7aa133eb7
MD5 4e5396cb778d1c7bfa380b90a9f4b4a1
BLAKE2b-256 af4c73fb54a7221dfdc77cf1475cb74c41364d00ca70b24dec2197729b9a0ff8

See more details on using hashes here.

File details

Details for the file gitlabracadabra-2.8.1-py3-none-any.whl.

File metadata

  • Download URL: gitlabracadabra-2.8.1-py3-none-any.whl
  • Upload date:
  • Size: 131.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: Hatch/1.17.0 {"ci":null,"cpu":"x86_64","distro":{"id":"trixie","libc":{"lib":"glibc","version":"2.41"},"name":"Debian GNU/Linux","version":"13"},"implementation":{"name":"CPython","version":"3.13.5"},"installer":{"name":"hatch","version":"1.17.0"},"openssl_version":"OpenSSL 3.5.6 7 Apr 2026","python":"3.13.5","system":{"name":"Linux","release":"6.12.94+deb13-amd64"}} HTTPX2/2.5.0

File hashes

Hashes for gitlabracadabra-2.8.1-py3-none-any.whl
Algorithm Hash digest
SHA256 240574d2d7cde6cc7dfbd1e6d502e1a30e9f3a4e43576888f1ca80975c3fefb2
MD5 5885c2dacc9c272f4c99ace6af292596
BLAKE2b-256 1057d9db073971112568bd7c7da35fd74855ab74c4d6c7bcfdb593cc07ef99a3

See more details on using hashes here.

Release history Release notifications | RSS feed

This release

2.8.1 This release

2 files

2.8.0

2 files

2.7.1

2 files

2.7.0

2 files

2.6.0

2 files

2.5.1

2 files

2.5.0

2 files

2.4.0

2 files

2.3.0

2 files

2.2.0

2 files

2.1.0

2 files

2.0.0

2 files

1.13.0

2 files

1.12.0

3 files

1.11.0

2 files

1.10.0

2 files

1.9.1

2 files

1.9.0

2 files

1.8.1

2 files

1.7.0

3 files

1.6.0

3 files

1.5.0

3 files

1.4.0

3 files

1.3.0

3 files

1.2.0

3 files

1.1.0

3 files

1.0.0

3 files

0.9.1

3 files

0.9.0

3 files

0.8.0

3 files

0.7.0

3 files

0.6.0

3 files

0.5.0

3 files

0.1.0

2 files

Supported by

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