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`の認証情報が参照されていなさそう。 ==ここで詰まった==