Packages and Git
The namespace you already have on Orkestia Registry is the name for pip, npm, and Git. Images stay at registry.orkestia.dev. Wheels and npm packages use packages.orkestia.dev. Git uses git.orkestia.dev.
In Cockpit, open Registry under Your Orkestia bill. That page shows your namespace. Replace acme in the examples below with that name. The username is the namespace. The password is the one-hour password you create there. From the API, registry.native.login returns username and token. The token is the password, and it is shown once. Create a new password for each CI job and let it expire.
pip
The index is https://packages.orkestia.dev/<namespace>/simple/. Twine uploads to https://packages.orkestia.dev/<namespace>/.
pip install \
--index-url "https://acme:${PASSWORD}@packages.orkestia.dev/acme/simple/" \
my-library
TWINE_USERNAME=acme \
TWINE_PASSWORD="$PASSWORD" \
twine upload --repository-url https://packages.orkestia.dev/acme/ dist/*
npm
The registry is https://packages.orkestia.dev/<namespace>/npm/. Packages are @<namespace>/<name>. The same password is the bearer token.
Name the package @acme/my-library and add this .npmrc in the project:
@acme:registry=https://packages.orkestia.dev/acme/npm/
//packages.orkestia.dev/acme/npm/:_authToken=${PASSWORD}
npm publish
npm install @acme/my-library
Git
Repligit is an addon an owner or an admin turns on with repligit.native.enable. The remote is https://git.orkestia.dev/<namespace>/<repo>.git.
An owner or an admin creates the repository with repligit.repo.create. For each session, an organization member runs repligit.credential.mint with these inputs:
repository_uuid: the valuerepligit.repo.createreturned.pusher_uuid: your own user id, aswhoamishows it. It is an explicit input, not taken from the caller.scope:readorwrite.ttl_seconds: up to 3600.
It returns a token, shown once. Clone with your namespace as the username and that token as the password:
git clone https://git.orkestia.dev/acme/my-repo.git
A tag on that remote can publish a wheel or an npm package into the same namespace. An owner or an admin runs repligit.publish with the repository, the tag, and the format wheel or npm. A git push does not publish by itself.
What the tag must contain:
- Wheel: a
pyproject.tomlwith[project]nameandversion, and a package directory with that name (dashes become underscores). Only that directory goes into the wheel. It must be pure Python with no build step. A library with compiled code, package data rules, or declared dependencies uploads its own wheel with twine instead. - npm: a
package.jsonwhosenameis@<namespace>/<name>.
A tag that does not exist, or a repository of another organization, is refused, and nothing is published.
A pip package and an npm package can have the same name. They are kept apart.
Usage
Package bytes share the 5 GiB registry quota. The Git addon disk is its own 10 GiB. Usage is estimated at Azure cost ×5 and is not a line on the invoice.
The Registry page shows the bytes in use and the quota. Package bytes count toward that quota.
Turn passwords off
Disable stops new passwords. An organization admin runs registry.native.disable.
Purge starts removal. An organization admin runs registry.native.purge. The namespace stays reserved.
An owner or an admin runs repligit.native.disable. New Git credentials stop.
| Workflow | Who | What you get |
|---|---|---|
registry.native.login | The organization | A one-hour password. The username is the namespace |
repligit.native.enable | Owner or admin | The Git addon on your namespace |
repligit.native.status | The organization | Host, namespace, repositories, and the disk |
repligit.repo.create | Owner or admin | A repository at https://git.orkestia.dev/<namespace>/<repo>.git |
repligit.credential.mint | The organization | A read or write token for one repository, up to one hour. The username is the namespace |
repligit.publish | Owner or admin | A tag published as a wheel or an npm package in the same namespace |
registry.native.disable | Admin | New passwords stop |
registry.native.purge | Admin | Removal starts. The namespace stays reserved |
repligit.native.disable | Owner or admin | New Git credentials stop |
