mirror of
https://github.com/astral-sh/uv.git
synced 2025-07-07 21:35:00 +00:00
Docs: add instructions for publishing to JFrog's Artifactory (#14253)
## Summary Add instructions for publishing to JFrog's Artifactory into [documentation](https://docs.astral.sh/uv/guides/integration/alternative-indexes/). Related issues: https://github.com/astral-sh/uv/issues/9845 https://github.com/astral-sh/uv/issues/10193 ## Test Plan I ran the documentation locally and use npx prettier. --------- Co-authored-by: Ondrej Profant <ondrej.profant@datamole.ai> Co-authored-by: Zanie Blue <contact@zanie.dev>
This commit is contained in:
parent
5cfabd7085
commit
ae500c95d2
1 changed files with 64 additions and 2 deletions
|
@ -368,6 +368,68 @@ $ uv publish
|
||||||
Note this method is not preferable because uv cannot check if the package is already published
|
Note this method is not preferable because uv cannot check if the package is already published
|
||||||
before uploading artifacts.
|
before uploading artifacts.
|
||||||
|
|
||||||
## Other package indexes
|
## JFrog Artifactory
|
||||||
|
|
||||||
uv is also known to work with JFrog's Artifactory.
|
uv can install packages from JFrog Artifactory, either by using a username and password or a JWT
|
||||||
|
token.
|
||||||
|
|
||||||
|
To use it, add the index to your project:
|
||||||
|
|
||||||
|
```toml title="pyproject.toml"
|
||||||
|
[[tool.uv.index]]
|
||||||
|
name = "private-registry"
|
||||||
|
url = "https://<organization>.jfrog.io/artifactory/api/pypi/<repository>/simple"
|
||||||
|
```
|
||||||
|
|
||||||
|
### Authenticate with username and password
|
||||||
|
|
||||||
|
```console
|
||||||
|
$ export UV_INDEX_PRIVATE_REGISTRY_USERNAME="<username>"
|
||||||
|
$ export UV_INDEX_PRIVATE_REGISTRY_PASSWORD="<password>"
|
||||||
|
```
|
||||||
|
|
||||||
|
### Authenticate with JWT token
|
||||||
|
|
||||||
|
```console
|
||||||
|
$ export UV_INDEX_PRIVATE_REGISTRY_USERNAME=""
|
||||||
|
$ export UV_INDEX_PRIVATE_REGISTRY_PASSWORD="$JFROG_JWT_TOKEN"
|
||||||
|
```
|
||||||
|
|
||||||
|
!!! note
|
||||||
|
|
||||||
|
Replace `PRIVATE_REGISTRY` in the environment variable names with the actual index name defined in your `pyproject.toml`.
|
||||||
|
|
||||||
|
### Publishing packages to JFrog Artifactory
|
||||||
|
|
||||||
|
Add a `publish-url` to your index definition:
|
||||||
|
|
||||||
|
```toml title="pyproject.toml"
|
||||||
|
[[tool.uv.index]]
|
||||||
|
name = "private-registry"
|
||||||
|
url = "https://<organization>.jfrog.io/artifactory/api/pypi/<repository>/simple"
|
||||||
|
publish-url = "https://<organization>.jfrog.io/artifactory/api/pypi/<repository>"
|
||||||
|
```
|
||||||
|
|
||||||
|
!!! important
|
||||||
|
|
||||||
|
If you use `--token "$JFROG_TOKEN"` or `UV_PUBLISH_TOKEN` with JFrog, you will receive a
|
||||||
|
401 Unauthorized error as JFrog requires an empty username but uv passes `__token__` for as
|
||||||
|
the username when `--token` is used.
|
||||||
|
|
||||||
|
To authenticate, pass your token as the password and set the username to an empty string:
|
||||||
|
|
||||||
|
```console
|
||||||
|
$ uv publish --index <index_name> -u "" -p "$JFROG_TOKEN"
|
||||||
|
```
|
||||||
|
|
||||||
|
Alternatively, you can set environment variables:
|
||||||
|
|
||||||
|
```console
|
||||||
|
$ export UV_PUBLISH_USERNAME=""
|
||||||
|
$ export UV_PUBLISH_PASSWORD="$JFROG_TOKEN"
|
||||||
|
$ uv publish --index private-registry
|
||||||
|
```
|
||||||
|
|
||||||
|
!!! note
|
||||||
|
|
||||||
|
The publish environment variables (`UV_PUBLISH_USERNAME` and `UV_PUBLISH_PASSWORD`) do not include the index name.
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue