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.