Installing Acron in CI¶
On your own machine the launcher signs in to the Acron archive for you. A CI job has no one to sign in, so it uses an archive read token instead.
Get a token¶
Read tokens are issued by Acron: ask support@acronengine.com for one for your subscription. The token reads the engine, its SDKs and Acron Studio from the archive; keep it secret, and ask for it to be revoked if it leaks.
Use it¶
uv reads the credentials of the project’s acron-archive index (see
Installing Acron) from two variables; acronmanager reads the same two
for the SDKs:
UV_INDEX_ACRON_ARCHIVE_USERNAME=ci
UV_INDEX_ACRON_ARCHIVE_PASSWORD=<the token>
The index itself is named in the project’s pyproject.toml, as the
launcher writes it:
[[tool.uv.index]]
name = "acron-archive"
url = "https://account.acronengine.com/channels/acron/pypi/simple/"
explicit = true
[tool.uv.sources]
acron = { index = "acron-archive" }
Keep both values in your CI service’s secret store, never in the
repository. Continuous Integration for Games describes the workflow
acronmanager ci init writes, which uses these same two secrets.
GitHub Actions¶
Add the two values as repository secrets (Settings > Secrets and variables > Actions), then:
jobs:
test:
runs-on: ubuntu-24.04
env:
UV_INDEX_ACRON_ARCHIVE_USERNAME: ${{ secrets.UV_INDEX_ACRON_ARCHIVE_USERNAME }}
UV_INDEX_ACRON_ARCHIVE_PASSWORD: ${{ secrets.UV_INDEX_ACRON_ARCHIVE_PASSWORD }}
steps:
- uses: actions/checkout@v4
- uses: astral-sh/setup-uv@v6
- run: uv sync
- run: uv run python -c "import acron; print(acron.__version__)"
GitLab CI¶
Add the two values as masked CI/CD variables (Settings > CI/CD > Variables) under the same names; GitLab hands them to every job’s environment:
test:
image: ghcr.io/astral-sh/uv:python3.14-bookworm
script:
- uv sync
- uv run python -c "import acron; print(acron.__version__)"
If uv sync answers 401 Unauthorized, the variables are missing or the
token was revoked.