This project has been archived by its maintainers, and is no longer receiving any updates.
cal-gitlab-packages
Download and upload package files for GitLab projects and groups.
Part of the data-diode mirroring system — the send side downloads packages from a source GitLab, and the recv side uploads them to a destination GitLab.
Installation
pip install cal-gitlab-packages
Usage
# Download package files from a group
cal-gitlab-packages download -u https://gitlab.com -p myorg/public -o ./packages
# Download with manifest for incremental runs
cal-gitlab-packages download -u https://gitlab.com -p myorg -o ./packages -m manifest.json
# Upload package files to a target GitLab
cal-gitlab-packages upload -u https://gitlab.example.com -p target-group -i ./packages -t TOKEN
Commands
download
Download package files from GitLab package registries. Supports generic and PyPI package types, version filtering, manifest-based incremental downloads, size limits, and parallel threads.
Uses the group-level packages API for efficient fetching and stores a last_seen_at timestamp in the manifest for fast no-change detection.
Saves .package-meta.json alongside downloaded files so the upload command knows which registry API to use (generic vs PyPI).
upload
Upload package files to GitLab. Routes uploads by package type:
- generic — Uploaded via PUT to the generic package registry
- pypi — Uploaded via multipart POST to the PyPI package registry (wheels and sdists)
Checks existing files by SHA256 before uploading and handles 409/403 responses as idempotent success.
Configuration
Settings can be provided via CLI args, environment variables, or a config file at ~/.config/cal-gitlab-packages/config.json:
{
"gitlab_url": "https://gitlab.example.com",
"token": "glpat-xxxxxxxxxxxx",
"base_group": "myorg",
"output": "./downloads",
"version_filter": "release",
"max_file_size": "100M",
"max_total_size": "5G",
"parallel": 32,
"project_exclude": ["some/project"]
}
Licence
MIT License — Copyright (c) 2026 Cyber Assessment Labs
Metadata
Release files for cal-gitlab-packages 1.1.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| cal_gitlab_packages-1.1.0-py3-none-any.whl | Python 3 | none | any | Details |
Release files / cal_gitlab_packages-1.1.0-py3-none-any.whl
| Download URL | cal_gitlab_packages-1.1.0-py3-none-any.whl |
|---|---|
| Size | 41.8 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
0ac3e5dcc121aa7e84f3fd7f4d138673ee40daf3abc09fe9c896f38145ae970f
|
|
BLAKE2b-256 checksum How to use checksums |
edb389dab48b649c2ed6c86cf156ad1d14daac46f8d00a2e05ecff6e60db55da
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.14.2
|