- パッケージ・レジストリをConanリモートとして追加します。
- パッケージレジストリへの認証
- Conanパッケージの発行
- CI/CDを使用したConanパッケージの公開
- Conan パッケージのインストール
- Conan パッケージの削除
- パッケージレジストリでConanパッケージを検索します。
- パッケージレジストリから Conan パッケージ情報を取得
- サポートされているCLIコマンド
- トラブルシューティング
パッケージレジストリのConanパッケージ
プロジェクトのパッケージ・レジストリにConanパッケージを公開してください。そして、依存関係として使用する必要がある場合は、パッケージをインストールしてください。
Conanパッケージをパッケージレジストリに公開するには、パッケージレジストリをリモートとして追加し、認証します。
その後、conan
コマンドを実行し、パッケージをパッケージレジストリに公開することができます。
Conan パッケージマネージャクライアントが使用する特定の API エンドポイントについては、Conan API ドキュメントを参照してください。
パッケージ・レジストリをConanリモートとして追加します。
conan
コマンドを実行するには、プロジェクトまたはインスタンスの Conan リモートとして Package Registry を追加する必要があります。その後、パッケージレジストリにパッケージを発行したり、パッケージレジストリからパッケージをインストールしたりできます。
プロジェクトのリモートの追加
GitLab 13.4 で導入されました。
リモートを設定することで、コマンドごとにリモート名を指定することなくプロジェクト内のパッケージを操作することができます。
プロジェクトにリモートを設定する場合、パッケージ名に制限はありません。しかし、コマンドにはユーザーとチャンネルを含む完全なレシピを含める必要があります。例えば、package_name/version@user/channel
。
リモートを追加するには
-
ターミナルで次のコマンドを実行します:
conan remote add gitlab https://gitlab.example.com/api/v4/projects/<project_id>/packages/conan
-
Conan コマンドの最後に
--remote=gitlab
を追加して、リモートを使用します。使用例:
conan search Hello* --remote=gitlab
インスタンスにリモートを追加します。
GitLab インスタンス全体のパッケージにアクセスするには、単一のリモートを使用します。
ただし、このリモートを使うときは、パッケージの命名に関する制限に従わなければなりません。
リモートを追加するには
-
ターミナルで次のコマンドを実行します:
conan remote add gitlab https://gitlab.example.com/api/v4/packages/conan
-
Conan コマンドの最後に
--remote=gitlab
を追加して、リモートを使用します。使用例:
conan search 'Hello*' --remote=gitlab
インスタンスremotesのパッケージレシピ命名規則
Conanの標準的なレシピの命名規則はpackage_name/version@user/channel
ですが、インスタンスリモートを使用している場合、レシピuser
はプラス記号 (+
) でプロジェクトパスを区切ったものでなければなりません。
レシピ名の例
プロジェクト | Package | 対応 |
---|---|---|
foo/bar | my-package/1.0.0@foo+bar/stable | はい |
foo/bar-baz/buz | my-package/1.0.0@foo+bar-baz+buz/stable | はい |
gitlab-org/gitlab-ce | my-package/1.0.0@gitlab-org+gitlab-ce/stable | はい |
gitlab-org/gitlab-ce | my-package/1.0.0@foo/stable | なし |
プロジェクト・リモートは、より柔軟な命名規則を持っています。
パッケージレジストリへの認証
GitLabでは、パッケージのアップロード、非公開プロジェクトや内部プロジェクトからのパッケージのインストールに認証が必要です。(ただし、公開プロジェクトのパッケージは認証なしでインストールできます)。
パッケージレジストリへの認証を行うには、次のいずれかが必要です:
- スコープを
api
に設定した個人アクセストークン。 -
read_package_registry
、write_package_registry
、またはその両方にスコープが設定されたデプロイトークン。 - CI ジョブ トークン。
unable to find the package in remote
が表示されます。GitLab リモートへの認証情報の追加
トークンを GitLab リモートと関連付けることで、Conan コマンドのたびに明示的にトークンを追加する必要がなくなります。
前提条件:
- 認証トークンが必要です。
- Conanリモートが設定されている必要があります。
ターミナルでこのコマンドを実行します。この例では、リモート名はgitlab
です。リモートの名前を使用してください。
conan user <gitlab_username or deploy_token_username> -r gitlab -p <personal_access_token or deploy_token>
これで、--remote=gitlab
でコマンドを実行すると、ユーザー名とパスワードがリクエストに含まれるようになります。
プロジェクトのデフォルトリモートを設定する(オプション)
リモートを指定せずに GitLab パッケージレジストリとやりとりしたい場合は、Conan にパッケージレジストリを使うように指示します。
ターミナルで次のコマンドを実行します:
conan remote add_ref Hello/0.1@mycompany/beta gitlab
Hello/0.1@user/channel
のデフォルトのリモートはHello/0.2@user/channel
では動作しません。デフォルトのユーザーやリモートを設定しない場合でも、コマンドにユーザーやリモートを含めることができます:
`CONAN_LOGIN_USERNAME=<gitlab_username or deploy_token_username> CONAN_PASSWORD=<personal_access_token or deploy_token> <conan command> --remote=gitlab
Conanパッケージの発行
Conanパッケージをパッケージレジストリに公開することで、プロジェクトにアクセスできる人であれば誰でも依存関係としてパッケージを使用することができます。
前提条件:
- Conanリモートが設定されている必要があります。
- パッケージレジストリによる認証を設定する必要があります。
- ローカルにConanパッケージが存在すること。
- インスタンスリモートの場合、パッケージは命名規則を満たす必要があります。
- プロジェクトのホームページにあるプロジェクトIDが必要です。
パッケージを公開するには、conan upload
コマンドを使ってください:
conan upload Hello/0.1@mycompany/beta --all
CI/CDを使用したConanパッケージの公開
GitLab CI/CDでConanコマンドを使用するには、コマンドの個人アクセストークンの代わりにCI_JOB_TOKEN
。
.gitlab-ci.yml
ファイルで、各 Conan コマンドにCONAN_LOGIN_USERNAME
とCONAN_PASSWORD
を指定することができます。例えば
image: conanio/gcc7
create_package:
stage: deploy
script:
- conan remote add gitlab ${CI_API_V4_URL}/projects/$CI_PROJECT_ID/packages/conan
- conan new <package-name>/0.1 -t
- conan create . <group-name>+<project-name>/stable
- CONAN_LOGIN_USERNAME=ci_user CONAN_PASSWORD=${CI_JOB_TOKEN} conan upload <package-name>/0.1@<group-name>+<project-name>/stable --all --remote=gitlab
environment: production
CIファイルのベースとして使用する追加のConanイメージは、Conanドキュメントで入手できます。
同じレシピのパッケージの再パブリッシュ
既存のパッケージと同じレシピ(package-name/version@user/channel
)を持つパッケージを公開すると、重複ファイルは正常にアップロードされ、UI からアクセスできるようになります。しかし、パッケージがインストールされると、最近公開されたパッケージのみが返されます。
Conan パッケージのインストール
パッケージ レジストリから Conan パッケージをインストールして、依存関係として使用できるようにします。インスタンスまたはプロジェクトのスコープからパッケージをインストールできます。複数のパッケージが同じレシピを持つ場合、パッケージをインストールすると、最も新しく公開されたパッケージが取得されます。
Conan パッケージは、conanfile.txt
ファイルを使用して依存関係としてインストールされることがよくあります。
前提条件:
-
依存関係としてパッケージをインストールするプロジェクトで、
conanfile.txt
を開きます。または、プロジェクトのルートにconanfile.txt
という名前のファイルを作成します。 -
ファイルの
[requires]
セクションに Conan レシピを追加します:[requires] Hello/0.1@mycompany/beta [generators] cmake
-
プロジェクトのルートに、
build
ディレクトリを作成し、そのディレクトリに移動します:mkdir build && cd build
-
conanfile.txt
にリストされている依存関係をインストールします:conan install .. <options>
~/.conan/data
を削除して、キャッシュに保存されているパッケージをクリーンアップします。Conan パッケージの削除
GitLabパッケージレジストリからConanパッケージを削除するには2つの方法があります。
-
コマンドラインから Conan クライアントを使う方法:
conan remove Hello/0.2@user/channel --remote=gitlab
このコマンドに明示的にリモートを含める必要があります。そうしないと、パッケージはローカルシステムのキャッシュからのみ削除されます。
このコマンドはパッケージレジストリからすべてのレシピとバイナリパッケージファイルを削除します。 -
GitLab ユーザーインターフェースから:
プロジェクトのデプロイ > パッケージレジストリに移動します。リポジトリを削除({remove}) を選択してパッケージを削除します。
パッケージレジストリでConanパッケージを検索します。
完全なパッケージ名、部分的なパッケージ名、または正確なレシピで検索するには、conan search
コマンドを実行してください。
-
特定のパッケージ名で全てのパッケージを検索するには
conan search Hello --remote=gitlab
-
He
で始まるすべてのパッケージのように、パッケージ名の一部を検索する場合:conan search He* --remote=gitlab
検索範囲は Conan リモート設定に依存します:
-
インスタンスにリモートを設定している場合、検索対象にはアクセス権限のあるすべてのプロジェクトが含まれます。これには、非公開プロジェクトだけでなく、すべての公開プロジェクトも含まれます。
-
プロジェクトに対してリモートを設定している場合、検索対象には、アクセス権限を持っている限り、対象プロジェクト内のすべてのパッケージが含まれます。
パッケージレジストリから Conan パッケージ情報を取得
conan info
コマンドはパッケージに関する情報を返します:
conan info Hello/0.1@mycompany/beta
サポートされているCLIコマンド
GitLab Conanリポジトリは以下のConan CLIコマンドをサポートしています:
-
conan upload
:レシピとパッケージファイルをパッケージレジストリにアップロードします。 -
conan install
:パッケージレジストリから Conan パッケージをインストールします。conanfile.txt
ファイルを使用します。 -
conan search
:パッケージ・レジストリから公開パッケージや閲覧権限のある非公開パッケージを検索します。 -
conan info
:パッケージレジストリから指定されたパッケージの情報を閲覧します。 -
conan remove
:パッケージレジストリからパッケージを削除します。
トラブルシューティング
出力を冗長に
イシューのトラブルシューティング時に、より冗長な出力を行います:
export CONAN_TRACE_FILE=/tmp/conan_trace.log # Or SET in windows
conan <command>
Conanのドキュメントにロギングのヒントがあります。
SSLエラー
自己署名証明書を使用している場合、コナンでSSLエラーを管理するには2つの方法があります:
-
conan remote
、SSL検証を無効にします。 - サーバーの
crt
ファイルをcacert.pem
ファイルに追加します。
詳しくはConan Documentationをご覧ください。