IBM Cloud Docs
パブリック・リポジトリーからソースをプルするビルド構成を作成します

パブリック・リポジトリーからソースをプルするビルド構成を作成します

ソースがパブリック・リポジトリーにある場合は、パブリック・リポジトリーからソースをプルする場所に関する情報を含む設定を使用してビルド構成を作成します。 ビルド出力では、レジストリの詳細と、ビルドしたイメージにレジストリからアクセスするためのレジストリ・シークレットを指定できます。 あるいは、ソースからイメージを作成し、そのイメージを IBM Cloud Container Registry に保管する処理を Code Engine に任せることもできます。 この場合、レジストリ・シークレットやイメージ・レジストリの場所を指定する必要はありません。

ビルド構成を作成してもイメージは作成されませんが、イメージをビルドするための構成が作成されます。 イメージを作成するには、ビルド構成を参照するビルドを実行する必要があります。 ビルドを実行するまでは、ビルド構成が検証されることも、イメージを作成するために使用されることもありません。 ビルド構成を使用すると、特定のイメージの複数のビルドを後で作成することができます。これはソース・リポジトリーに変更が適用された場合などに便利です。

.gitignore ファイルと同様に動作する .ceignore ファイルを使用して、ソース・コード内の特定のファイル・パターンを無視することを選択できます。 例えば、node.js アプリケーションの.ceignoreファイルのエントリーには、node_modulesおよび.npmが含まれる場合があります。 無視するファイルパターンのサンプルについては、 GitHubの.gitignoreリポジトリを参照してください。

コンソール (パブリック・リポジトリー) からのビルド構成の作成

  1. Code Engine ダッシュボードに進みます。

  2. コンテナー・レジストリーを追加したプロジェクトを選択します。

  3. 「プロジェクト」ページで、**「イメージ・ビルド (Image builds)」**をクリックします。

  4. 「イメージ・ビルド」 タブで、 「作成」 をクリックします。 表示される**「ビルドの詳細を指定 (Specify build details)」**サイド・パネルで、ビルドの詳細を入力します。

  5. **「ソース」**セクションで、ビルドの名前、ソース・リポジトリーの URL、およびコード・リポジトリー・アクセスを入力します。

    • コードがパブリック・レポにある場合は、HTTPS URLを使用し、コード・レポへのアクセスは None を選択してください。 HTTPS URL の例は、https://github.com/IBM/CodeEngine です。
    • コードがプライベート・リポジトリー内にある場合は、コード・リポジトリー URL に SSH URL を使用し、既存のコード・リポジトリー・アクセスの名前を選択するか、コード・リポジトリー・アクセスを作成します。 SSH URL の例は、git@github.com:IBM/CodeEngine.git です。
    • 必要に応じて、ソース・ブランチ名を選択します。 ブランチ名を指定せず、このフィールドを空のままにすると、Code Engineは指定されたリポジトリーのデフォルト・ブランチを自動的に使用します。 他にもブランチ名、タグ、またはコミット ID を入力することができます。

    **「次へ」**をクリックして先に進みます。

  6. **「戦略 (Strategy)」**セクションで、使用する戦略を選択します。

    • **「Dockerfile」**を選択した場合は、Dockerfile の代替パスも指定できます。
    • **「ビルド・リソース (Build resources)」**で、ビルドのサイズを選択します。

    **「次へ」**をクリックして先に進みます。

  7. 出力セクションで、コンテナー・イメージの詳細を入力します。

    • 既存のレジストリ秘密を選択するか、レジストリ秘密の作成をクリックして新しいものを追加します。
    • あなたのアカウントにあるContainer Registryインスタンスにイメージを構築する場合、Code Engine managed secret を選択するとCode Engineがあなたのためにシークレットを作成し管理します。
    • 続いて、ビルドするイメージの名前空間、リポジトリー、およびタグを選択します。 Code Engineが Container Registryに名前空間を作成し、管理してくれます。
    • イメージが Container Registry に存在する場合は、既存のイメージから選択するか、新しいリポジトリーまたはタグを入力することができます。
  8. **「完了」**をクリックして、ビルドの作成を終了します。

ビルド構成を作成した後、 ビルドを実行 してイメージ・ファイルを作成する必要があります。 イメージ・ファイルが作成されたら、新しく作成したイメージ・ファイルを使用して アプリをデプロイ したり、 ジョブを実行 したりすることができます。

CLI (パブリック・リポジトリー) を使用したビルド構成の作成

CLI を使用してビルド構成を作成するには、build create コマンドを使用します。 オプションの全リストについては、ibmcloud ce build create コマンドを参照してください。

**build create**コマンドを使用すると、Code Engine がソースからのイメージの作成を処理し、そのイメージを IBM Cloud Container Registry に保管するようにすることができます。 この自動アクセスの場合、レジストリ・シークレットやイメージ・レジストリの場所を指定する必要はありません。 あるいは、ビルドイメージの出力場所を指定し、レジストリのシークレットを提供することで、Code Engineがアクセスしてビルド結果をレジストリにプッシュできるようになります。

CLI を使用したビルド構成の作成 (パブリック・リポジトリー・ソースとレジストリーへの自動アクセスを使用)

このシナリオでは、Code Engine は、パブリック Git リポジトリー・ソースからイメージを作成し、自動アクセスを使用してそのイメージを IBM Cloud Container Registry に自動的にアップロードします。 Container Registry で Code Engine がこれらのイメージに自動的にアクセスするために必要な許可の設定について詳しくは、イメージ・レジストリーの権限のセットアップを参照してください。

開始前に

  1. パブリック Git リポジトリーからイメージをビルドするためのビルド構成を作成し、Code Engine が自動的にイメージを保管してアクセスできるようにします。 例えば、以下の**build create**コマンドは、パブリック Git リポジトリーhttps://github.com/IBM/CodeEngine内のソースからビルドするhelloworld-buildというビルド構成を作成します。 この例では、コマンドはデフォルトのdockerfile戦略と、デフォルトのmediumビルド・サイズを使用します。 リポジトリーのブランチ名が--commitオプションで指定されていないため、Code Engine は、指定されたリポジトリーのデフォルト・ブランチ (この Git リポジトリーのmain) を自動的に使用します。 イメージ・レジストリの場所やレジストリ・シークレットを指定しないことで、Code Engineはビルド出力を自動アクセスでIBM Cloud Container Registryにプッシュする。

    ibmcloud ce build create --name helloworld-build --source https://github.com/IBM/CodeEngine --context-dir /hello
    

    出力例

    Creating build helloworld-build...
    OK
    

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

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

    ビルドの名前。 プロジェクト内で固有の名前を使用します。 この値は必須です。

    • 名前は小文字で始まる必要があります。
    • 名前は小文字の英数字で終わる必要があります。
    • 名前は 55 文字以下でなければならず、文字、数字、およびハイフン (-) を使用できます。
    --source ソース・コードが含まれている Git リポジトリーの URL (例: https://github.com/IBM/CodeEngine)。
    --context-dir buildpacks ファイルまたは Dockerfile を含むリポジトリー内のディレクトリー。 ビルドパック・ファイルまたは Dockerfile がサブディレクトリーに入っている場合は、この値を指定します。 この値はオプションです。
  2. **build get**コマンドを使用して、ビルドの状況を確認します。

    ibmcloud ce build get --name helloworld-build
    

    出力例

    生成されたイメージの名前と、自動的に作成されたレジストリ・シークレットの名前が、ce-auto-icr-private-<region>.

    Getting build 'helloworld-build'
    OK
    
    Name:          helloworld-build  
    ID:            abcdefgh-abcd-abcd-abcd-1a2b3c4d5e6f  
    Project Name:  myproject  
    Project ID:    01234567-abcd-abcd-abcd-abcdabcd1111
    Age:           2d15h
    Created:       2022-05-24T09:58:43-05:00  
    Build Type:    git  
    Status:        Succeeded  
    Reason:        all validations succeeded
    
    Image:              private.us.icr.io/ce--e97a8-odof2whblw5/build-helloworld-build
    Registry Secret:    ce-auto-icr-private-us-south  
    Build Strategy:     dockerfile-medium
    Timeout:            10m0s
    Source:             https://github.com/IBM/CodeEngine
    Commit:             main
    Context Directory:  /hello
    Dockerfile:         Dockerfile
    
    

ビルド構成を作成した後、 ビルドを実行 してイメージ・ファイルを作成する必要があります。 イメージ・ファイルが作成されたら、新しく作成したイメージ・ファイルを使用して アプリをデプロイ したり、 ジョブを実行 したりすることができます。

CLI を使用したビルド構成の作成 (パブリック・リポジトリー・ソースとユーザー提供のレジストリーへのアクセス権限を使用)

このシナリオでは、Code Engine はパブリック Git リポジトリー・ソースからイメージを作成し、提供されたレジストリー・アクセス権限を使用してイメージをコンテナー・レジストリーにアップロードします。

開始前に

  1. 公開Gitリポジトリからイメージをビルドするビルド設定を作成し、ビルド出力用のイメージ・レジストリの場所をレジストリ・シークレットで指定します。 **build create**コマンドで、--imageオプションを指定してイメージ・レジストリーの場所を指定し、--registry-secretオプションを指定してレジストリーにアクセスします。 例えば、以下のコマンドは、パブリック Git リポジトリー https://github.com/IBM/CodeEngine からビルドする helloworld-build2 というビルド構成を作成し、 myregistry レジストリー・シークレットを使用してそのイメージを us.icr.io/mynamespace/codeengine-helloworld に保管します。 この例では、コマンドはデフォルトの dockerfile戦略と、デフォルトのmediumビルド・サイズを使用します。 リポジトリーのブランチ名が--commitオプションで指定されていないため、Code Engine は、指定されたリポジトリーのデフォルト・ブランチ (この Git リポジトリーのmain) を自動的に使用します。

    dockerfileの値を指定して--strategyオプションを使用する場合は、--dockerfileオプションがdockerfileの名前に正しく設定されていることを確認してください。 --strategy オプションのデフォルト値は Dockerfile です。

    ibmcloud ce build create --name helloworld-build2 --image us.icr.io/mynamespace/codeengine-helloworld --registry-secret myregistry --source https://github.com/IBM/CodeEngine --context-dir /hello
    

    出力例

    Creating build helloworld-build2...
    OK
    

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

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

    ビルドの名前。 プロジェクト内で固有の名前を使用します。 この値は必須です。

    • 名前は小文字で始まる必要があります。
    • 名前は小文字の英数字で終わる必要があります。
    • 名前は 55 文字以下でなければならず、文字、数字、およびハイフン (-) を使用できます。
    --image イメージ・レジストリーのロケーション。 場所の形式は REGISTRY/NAMESPACE/REPOSITORYまたはREGISTRY/NAMESPACE/REPOSITORY:TAGでなければなりません。ここで、TAGはオプションです。 TAG を指定しない場合、そのデフォルトは latest です。
    --registry-secret レジストリへのアクセスに使用されるレジストリ秘密。 レジストリー・シークレットを追加するには、 secret create --format registry コマンドを実行します。 レジストリシークレットは、プライベートレジストリとの認証に使用される。
    --source ソース・コードが含まれている Git リポジトリーの URL (例: https://github.com/IBM/CodeEngine)。
    --context-dir buildpacks ファイルまたは Dockerfile を含むリポジトリー内のディレクトリー。 ビルドパック・ファイルまたは Dockerfile がサブディレクトリーに入っている場合は、この値を指定します。 この値はオプションです。
  2. **build get**コマンドを使用して、ビルドの状況を確認します。

    ibmcloud ce build get --name helloworld-build2
    

    出力例

    Getting build 'helloworld-build2'
    OK
    
    Name:          helloworld-build2  
    ID:            abcdefgh-abcd-abcd-abcd-1a2b3c4d5e6f  
    Project Name:  myproject  
    Project ID:    01234567-abcd-abcd-abcd-abcdabcd1111
    Age:           2d15h
    Created:       2021-03-14T14:48:19-05:00  
    Status:        Succeeded  
    Reason:        all validations succeeded
    
    Image:              us.icr.io/mynamespace/codeengine-helloworld
    Registry Secret:    myregistry
    Build Strategy:     dockerfile-medium
    Timeout:            10m0s
    Source:             https://github.com/IBM/CodeEngine
    Commit:             main
    Context Directory:  /hello
    Dockerfile:         Dockerfile
    
    

ビルド構成を作成した後、 ビルドを実行 してイメージ・ファイルを作成する必要があります。 イメージ・ファイルが作成されたら、新しく作成したイメージ・ファイルを使用して アプリをデプロイ したり、 ジョブを実行 したりすることができます。

コマンド検証失敗のメッセージを受け取った場合は、シークレットが存在することを確認します。 イメージのレジストリ・シークレット --registry-secret を参照し、そのシークレットが存在しない場合は、コンテナ・レジストリへのアクセス を参照してください。 ビルドについて詳しくは、トラブルシューティングのヒントを確認してください。