https://jfrog.com/blog/how-to-use-cargo-repositories-in-artifactory/
[[JFrog Artifactory]]を使って[[Cargo]]のオリジナルリポジトリを作ってみた。
```console
$ cargo --version
cargo 1.52.0 (69767412a 2021-04-21)
```
## [[Cargo]]の設定
[[JFrog Artifactory]]のプロジェクトやリポジトリ作成は省略する。詰まったら [[📘JFrog Artifactoryで自分だけのPythonパッケージリポジトリを作ってみた]] も参考に。
[Cargo Registry \- JFrog \- JFrog Documentation](https://www.jfrog.com/confluence/display/JFROG/Cargo+Registry)を参考にする。
- [[Cargo]]は1.49.0以上をサポート
- デフォルトのアップロード先は `crates/{package_name}/{package_name}-{version}.crate.`
## [[Rust]]プロジェクトの作成
[[Cargoでlibパッケージをリリースできる状態にする#Rust プロジェクトの作成]]を参考にする。
[[Cargo]]のレジストリに[[JFrog Artifactory]]を指定するため、`Set Me Up`を開いて設定を参照する。
![[Pasted image 20210901163602.png]]
プロジェクトの`.cargo/`配下に[[config.toml]]を作成する。`<artprod.mycompany>`は[[JFrog Platform]]の利用ドメインに書き換える。
==⚠ インストールのときはプロジェクト配下を認識しないのでグロバールのがいいかも。。==
```toml:.cargo/config.toml
# Makes artifactory the default registry and saves passing --registry parameter
[registry]
default = "artifactory"
[registries.artifactory]
index = "https://<artprod.mycompany>/artifactory/git/xxx-cargo-local.git"
# For sending credentials in git requests.
# Not required if anonymous access is enabled
[net]
git-fetch-with-cli = true
```
## パッケージ作成
リリースビルドする。
```console
cargo build --release
```
## publish
ログインコマンドで認証情報を設定する。成功すると`%CARGO_HOME%\credentials`ファイルができる。
```console
cargo login --registry artifactory "Bearer <token>"
```
`--dry-run`で確認する。
```console
cargo publish --dry run
```
結果が問題なさそうなら`--dry-run`を外す。
```console
cargo publish
```
## インストールしてみる
適当にプロジェクトを作成し、`.cargo/config.toml`を作成する。
```
cargo install <yourlib>
```
しかし、`crates.io`を見にいってしまう..。`%CARGO_HOME%`配下に`config.toml`を置き直してみる。
```
cargo install <yourlib>
```
これならいける?
```
xxx-cargo-testlib = { version = "0.1.0", registry = "artifactory" }
```
アクセス先はOK。ただ401エラーになる。認証が通っていないため、`credentials`の認証情報が参照されていなさそう。
==ここで詰まった==