IBM Cloud Docs
プライベート・コード・リポジトリーへのアクセス

プライベート・コード・リポジトリーへのアクセス

ソース・コードは、GitHub や GitLab などのコード・リポジトリーに保管します。 Code Engine では、プライベート・コード・リポジトリーへのアクセスを追加し、そのリポジトリーをビルドから参照することができます。

プライベート・コード・リポジトリーへのアクセスを作成した後、リポジトリーからコードをプルしてビルドし、アプリまたはジョブをデプロイするという作業を、IBM Cloud® Code Engine で行うことができます。

コード・リポジトリーのアクセスの作成

プライベート・コード・リポジトリーへのアクセス権限を作成すると、資格情報が Code Engine に保存されます。 これらの資格情報は、 SSH シークレットと呼ばれます。

開始前に

コード・リポジトリーの SSH 鍵の選択

GitHub と GitLab のどちらの場合も、ソース・リポジトリーに接続する SSH 鍵として 2 種類の中から選択することができます。

  1. ソース・コード・リポジトリーに関連付けられた SSH 鍵。この鍵には、この SSH 鍵を登録したリポジトリーに対するアクセス権限しかありません。 このアクセス権限は、デフォルトでは読み取り専用です。これは、Code Engineがソース・コードをダウンロードするために必要なレベルです。 必要に応じて、書き込みアクセス権を選択できます。 指定されたリポジトリーのみへのアクセスを制御するために、特定のリポジトリーを有効範囲とする SSH 鍵を設定する場合は、このオプションを選択することを検討してください。

  2. ユーザー (自分のユーザー・アカウントや、組織で使用できる機能 ID など) に関連付けられた SSH 鍵。 この SSH 鍵には、ユーザー・アカウントからのリポジトリー・アクセス権があります。Code Engineには、ソース・コードをダウンロードするための読み取りアクセス権が必要です。

    ユーザー・アカウントを有効範囲とする SSH 鍵を設定すると、フル・アカウントへのアクセスが可能になるため、このオプションを選択する場合は、セキュリティーへの影響を認識しておくことが重要です。

SSH 鍵ファイルはセキュア・パスフレーズを使って作成しないでください。その操作を行うと、build コマンドが失敗します。

コンソールからのプライベート・リポジトリー・アクセスの追加

始めに、プロジェクトを作成します

  1. プロジェクトが Active ステータスになったら、 Code Engine Projectsページでプロジェクト名をクリックします。
  2. 「コンポーネント」ページで、**「シークレットおよび構成マップ (Secrets and configmaps)」**をクリックします。
  3. 「シークレットおよび構成マップ (Secrets and configmaps)」ページで**「作成」**をクリックして、シークレットを作成します。
  4. 「シークレットまたは構成マップの作成 (Create secret or configmap)」ページで、以下の手順を実行します。
    1. 「SSH シークレット」 を選択し、 「次へ」 をクリックします。
    2. 例えば、 mysecret-ssh
    3. このシークレットの SSH 秘密鍵を追加します。
    4. **「作成」**をクリックして、シークレットを作成します。

シークレットがコンソールから作成されたので、シークレットとコンフィグマップページに行き、定義されたシークレットとコンフィグマップのリストを見る。 必要に応じて、フィルターを適用してリストをカスタマイズすることができます。

イメージのビルド時にアクセスを作成できます。

CLI を使用したプライベート・リポジトリー・アクセスの追加

CLI バージョン 1.42.0 以降、CLI でのシークレットの定義と操作は secret コマンドグループに統一されました。 ibmcloud ce secret コマンドを参照してください。 basic_auth, generic, hmac, ssh, tls, registry のように秘密のカテゴリーを指定するには --format オプションを使用する。 を使い続けることができる。 repo コマンドグループを使い続けることもできるが、統一された secret コマンドグループ SSHキーでサービスにアクセスするためのシークレットを作成するには、例えば GitHub や GitLab, のような Git リポジトリに認証するために ibmcloud ce secret create --format ssh コマンドを使う。 SSHシークレットは、 Git リポジトリのアクセスシークレットとしても使用されます。 Code Engine でのシークレットの扱いについて詳しくは、 シークレットの扱いを ご覧ください。

SSHシークレットには、コンテナイメージを構築するためのソースコードを含むプライベートリポジトリにアクセスするための認証情報が含まれています。 SSHシークレットは、 Git リポジトリのアクセスシークレットとしても使用されます。

CLI で SSH シークレットを作成するには、 secret create --format ssh コマンドを使用します。 このコマンドは、名前とキー・パスを必要とします。また、既知の hosts ファイルへのパスなど、その他のオプション引数も許可します。 オプションの完全なリストについては、 ibmcloud ce secret create --format ssh コマンドを参照してください。

例えば、次のコマンドは github.com のリポジトリに myrepossh という SSH 秘密鍵を作成し、その秘密鍵はシステムのデフォルトの場所にある個人の SSH 秘密鍵を使用します。

Mac OS または Linux®

ibmcloud ce secret create --format ssh --name myrepossh --key-path $HOME/.ssh/id_rsa --known-hosts-path $HOME/.ssh/known_hosts

Windows

ibmcloud ce secret create --format ssh --name myrepossh --key-path "%HOMEPATH%\.ssh\id_rsa" --known-hosts-path "%HOMEPATH%\.ssh\known_hosts"

以下の表は、この例の repo create コマンドで使用されるオプションの要約です。 コマンドとそのオプションについて詳しくは、ibmcloud ce repo create コマンドを参照してください。

コマンドの説明
オプション 説明
--name

SSH シークレットの名前。 プロジェクト内で固有の名前を使用します。 この値は必須です。

  • 名前の先頭と末尾は小文字の英数字でなければなりません。
  • 名前は 253 文字以下でなければならず、小文字、数字、ピリオド (.)、およびハイフン (-) を使用できます。
--key-path 暗号化されていない SSH 秘密鍵のローカル・パス。 個人用の SSH 秘密鍵を使用する場合、このファイルは通常 $HOME/.ssh/id_rsa (Mac OS または Linux) あるいは %HOMEPATH%.ssh\id_rsa (Windows) にあります。 この値は必須です。
--known-hosts-path 既知のホストのファイルのパス。 この値は、過去にアクセスしたホスト、具体的には GitHub ホストまたは GitLab ホストでの認証にのみ秘密鍵を使用するようにするためのセキュリティー機能です。 このファイルは通常、$HOME/.ssh/known_hosts (Mac OS または Linux) または %HOMEPATH%.ssh\known_hosts (Windows) にあります。

ビルドでのプライベート Git リポジトリーの参照

コンソールからイメージをビルドする際に、既存のアクセスを参照することもアクセスを作成することもできます。

コンソールからのビルドでのプライベート Git リポジトリーの参照

ビルドでプライベート Git リポジトリーを参照するには、以下のようにします。

  1. Code Engine ダッシュボードに進みます。
  2. プロジェクトを選択します (またはプロジェクトを作成します)。
  3. 「プロジェクト」ページで、**「イメージ・ビルド (Image builds)」**をクリックします。
  4. 「イメージ・ビルド」 タブで、 「作成」 をクリックします。
  5. プライベート・リポジトリーを指定してアクセスを追加するには、リポジトリーへの URL を**「コード・リポジトリー URL (Code repo URL)」**フィールドに入力してから、既存のコード・リポジトリー・アクセスを選択するか、アクセスを作成します。
  6. ビルドに関する情報の指定が終わったら、**「完了」**をクリックします。

イメージのビルドについて詳しくは、コンテナー・イメージのビルドを参照してください。

コード・レポ URL は、 https://github.ibm.com/codeengine/ui のような HTTPS URL ではなく、 git@github.com:IBM/CodeEngine.git のような SSH URL でなければならない。

CLI を使用したビルドでの SSH シークレットの参照

ビルドでSSHシークレットを使用するには、 --git-repo-secret オプションを使用します。 build create または build update コマンドを使う。 SSHシークレットは、 Git リポジトリのアクセスシークレットとしても使用されます。

既存のビルドがある場合は、build update コマンドを使用してそのビルドを更新できます。

ibmcloud ce build update --name mybuild --git-repo-secret myrepossh

新規ビルドを作成する場合は、CLI を使用したビルド構成の作成を参照してください。

Git リポジトリへのアクセスに関する次のステップ

Git リポジトリーにアクセスするために SSH シークレットを作成した後、プライベート・リポジトリー内のソース・コードから イメージをビルド できます。 --git-repo-secret オプションを指定して build create コマンドを実行するときに、SSH 秘密を指定します。