リポジトリー・ソース・コードからのジョブの作成

IBM Cloud® Code Engine コンソールおよび CLI を使用して、Git リポジトリーにあるソース・コードからジョブを直接作成できます。 Code Engine でイメージをビルドする場合の利点を参照してください。

コンソールからのリポジトリー・ソース・コードからのジョブの作成

コンソールを使用して、ソース・コードから直接ジョブを作成できます。

始める前に、ビルドの計画を立てます。 Dockerfile の作成についてのヒントも確認してください。 ジョブを実行するたびに、ビルド・プロセス中に最新バージョンの従属ビルド成果物 (ビルドパックおよびコンテナー・イメージを含む) が使用され、結果のコンテナー・イメージに組み込まれます。

Code Engine は、アカウント内の IBM Cloud® Container Registry 名前空間にイメージを自動的にプッシュ (アップロード) し、名前空間を作成することもできます。 イメージを別のContainer Registryアカウントまたはプライベート Docker Hub アカウントにプッシュするには、コンテナー・レジストリーへのアクセスを参照してください。

イメージ・レジストリーにアクセスするために必要な許可については、イメージ・レジストリーの権限のセットアップを参照してください。

  1. Code Engine コンソールを開きます。
  2. 「始めましょう」 を選択します。
  3. **「ジョブ」**を選択します。
  4. ジョブの名前を入力します。 ジョブには、プロジェクト内で固有の名前を使用します。
  5. 選択可能なプロジェクトのリストからプロジェクトを選択します。 新規作成することもできます。 ジョブを作成するには、選択したプロジェクトがなければならないことに注意してください。
  6. **「ソース・コード (Source code)」**を選択します。
  7. **「ビルドの詳細を指定 (Specify build details)」**をクリックします。
  8. ソース・リポジトリー (例えば、https://github.com/IBM/CodeEngine) を選択します。 資格情報を必要としないサンプル・ソースを使用しているため、コード・リポジトリー・アクセスにはNoneを選択します。 オプションでブランチ名を指定できます。 ブランチ名を指定せず、このフィールドを空のままにすると、Code Engineは指定されたリポジトリーのデフォルト・ブランチを自動的に使用します。 次へ をクリックします。
  9. ビルドの方式およびビルドのリソースを選択します。 ビルド・オプションについて詳しくは、ビルドの計画を参照してください。 **「次へ」**をクリックします。
  10. ビルド出力のイメージを保管する場所に関するレジストリー情報を指定します。 コンテナのレジストリの場所を選択 IBM Registry Dallas。 プライベート・レジストリーである場合は、そのレジストリーへのアクセスをセットアップする必要があります。
  11. 既存の登記上の秘密を選択するか、新しい*を作成します。 アカウント内の IBM Cloud Container Registry インスタンスにイメージをビルドする場合は、Code Engine managed secretを選択し、Code Engine にシークレットを作成して管理させることができます。
  12. イメージの名前空間、名前、タグを選択します。 アカウント内の IBM Cloud Container Registry インスタンスにイメージをビルドする場合は、既存の名前空間を選択するか、Code Engine に名前空間を作成して管理させることができます。
  13. 「完了 (Done)」 をクリックします。
  14. 環境変数やランタイム設定のデフォルト値を変更します。 これらのオプションについて詳しくは、ジョブを作成および実行する際のオプションを参照してください。
  15. 「作成」 をクリックします。
  16. ビルド実行が実行依頼されると、ビルドされたコンテナー・イメージが Container Registry に送信され、ジョブがそのビルドされたイメージを参照できるようになります。 ジョブの準備ができたら、ジョブの実行依頼をクリックして、現在の構成に基づいてジョブを実行します。

完了したビルド実行は、最終的に自動的に削除されます。 ビルド実行がビルド構成に基づいている場合、ビルド実行が成功すると、このビルド実行は 3 時間後に削除されます。 ビルド実行が成功しなかった場合、このビルド実行は 48 時間後に削除されます。

これでジョブとジョブの実行が作成されたので、ジョブ・ページからジョブ構成とジョブ実行に関する詳細を表示できます。

お困りですか? ビルドに関するトラブルシューティングのヒントを確認してください。

CLI を使用したリポジトリー・ソース・コードからのジョブの作成

CLI を使用して、リポジトリー・ソース・コードから直接ジョブを作成できます。 **job create**コマンドを使用して、Git リポジトリー・ソースからイメージをビルドし、ジョブの構成を定義します。

開始前に

このシナリオでは、Code Engine は Git リポジトリー・ソースからイメージをビルドし、そのイメージをコンテナー・レジストリーに自動的にアップロードしてから、このビルドされたイメージを**job create**コマンドで参照するためのジョブ構成を作成します。 イメージを IBM Cloud Container Registry アカウント内に配置する場合は、ジョブの名前と Git リポジトリーの URL のみを指定する必要があります。 この場合、Code Engine が自動的に名前空間を管理します。 ただし、別のコンテナ・レジストリを使いたい場合は、そのコンテナ・レジストリのイメージとレジストリ・シークレットを指定する必要がある。 **ibmcloud ce jobrun submit**コマンドを使用して、ビルドされたイメージを参照するジョブを実行します。 オプションの完全なリストについては、ibmcloud ce job createおよび ibmcloud ce jobrun submitコマンドを参照してください。

イメージ・レジストリーにアクセスするために必要な許可については、イメージ・レジストリーの権限のセットアップを参照してください。

  1. **job create**コマンドを使用して、https://github.com/IBM/CodeEngineビルド・ソースからビルドされたイメージを参照するmyjob-repoジョブを作成します。 このコマンドは、イメージを自動的にビルドし、そのイメージをアカウント内の IBM Cloud® Container Registry 名前空間にアップロードします。このジョブのジョブ実行は、このビルドされたイメージを参照します。 --build-context-dirオプションを指定すると、ビルドはhelloworldディレクトリー内のソースを使用します。 このコマンド例では、デフォルトのdockerfile戦略と、デフォルトのmediumビルド・サイズを使用します。 リポジトリーのブランチ名が--build-commitオプションで指定されていないため、Code Engine は指定されたリポジトリーのデフォルト・ブランチを自動的に使用します。 --waitオプションを追加することにより、ジョブ作成がイメージ・ビルドの完了を待機することを指定します。

    ibmcloud ce job create --name myjob-repo --build-source https://github.com/IBM/CodeEngine --build-context-dir helloworld --wait
    

    出力例

    Creating job 'myjob-repo'...
    Submitting build run 'myjob-repo-run-220420-15590196'...
    Creating image 'private.us.icr.io/ce--abcde-glxo4kabcde/job-myjob-repo'...
    Waiting for build run to complete...
    Build run status: 'Running'
    Build run completed successfully.
    Run 'ibmcloud ce buildrun get -n myjob-repo-run-220420-15590196' to check the build run status.
    OK
    

    --wait を指定したので、job create コマンドの出力は、ジョブが作成される前のビルド実行の進行に関する情報を提供する。

    この例では、ビルドされたイメージが IBM Cloud Container Registry 内のce--abcde-glxo4kabcde名前空間にアップロードされます。

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

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

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

    • 名前の先頭と末尾は小文字の英数字でなければなりません。
    • 名前は 63 文字以下でなければならず、文字、数字、およびハイフン (-) を使用できます。
    --build-source ソース・コードが含まれている Git リポジトリーの URL (例: https://github.com/IBM/CodeEngine)。
    --build-context-dir buildpacks ファイルまたは Dockerfile を含むリポジトリー内のディレクトリー。 この値はオプションです。
    --wait ジョブを作成する前にイメージ・ビルドが完了するのを待機することを指定します。
  2. (オプション) **job get**コマンドを使用して、ビルドに関する情報を含む、ジョブに関する情報を表示します。

    ibmcloud ce job get --name myjob-repo
    

    出力例

    [...]
    Name:          myjob-repo
    ID:            abcdefgh-abcd-abcd-abcd-1a2b3c4d5e6f  
    Project Name:  myproject  
    Project ID:    01234567-abcd-abcd-abcd-abcdabcd1111
    Age:           2d15h
    Created:       2022-04-14T16:10:11-04:00
    
    Image:                private.us.icr.io/ce--abcde-glxo4kabcde/job-myjob-repo
    
    Resource Allocation:
      CPU:     1
      Memory:  4G
    Registry Secrets:
      ce-auto-icr-private-us-south
    
    Runtime:
        Mode:                  task
        Array Indices:         0
        Array Size:            1
        Max Execution Time:    7200
        Retry Limit:           3
    
    Build Information:
      Build Run Name:     myjob-repo-run-220420-15590196
      Build Type:         git
      Build Strategy:     dockerfile-medium
      Timeout:            600
      Source:             https://github.com/IBM/CodeEngine
      Context Directory:  helloworld
      Dockerfile:         Dockerfile
    
      Build Run Summary:  Succeeded
      Build Run Status:   Succeeded
      Build Run Reason:   All Steps have completed executing
      Run 'ibmcloud ce buildrun get -n myjob-repo-run-220420-15590196' for details.
    
  3. ジョブが作成され、イメージがビルドされたので、ビルドされたイメージを参照するジョブを実行します。 このコマンド例は、myjob-repoジョブ構成に基づいてmyjobrun-repoジョブ実行を実行します。

    ibmcloud ce jobrun submit --name myjobrun-repo --job myjob-repo
    
  4. (オプション) ジョブ実行の詳細を表示します。

    ibmcloud ce jobrun get --name myjobrun-repo
    

    出力例

    Getting jobrun 'myjobrun-local'...
    Getting instances of jobrun 'myjobrun-local'...
    Getting events of jobrun 'myjobrun-local'...
    Run 'ibmcloud ce jobrun events -n myjobrun-local' to get the system events of the job run instances.
    Run 'ibmcloud ce jobrun logs -f -n myjobrun-local' to follow the logs of the job run instances.
    OK
    
    Name:          myjobrun-local
    ID:            abcdefgh-abcd-abcd-abcd-1a2b3c4d5e6f  
    Project Name:  myproject  
    Project ID:    01234567-abcd-abcd-abcd-abcdabcd1111
    Age:           2d15h
    Created:       2022-04-14T16:10:11-04:00
    
    Job Ref:              myjob-repo
    Image:                private.us.icr.io/ce--abcde-glxo4kabcde/job-myjob-repo
    Resource Allocation:
      CPU:                1
      Ephemeral Storage:  400M
      Memory:             4G
    Registry Secrets:
      ce-auto-icr-private-us-south
    
    Runtime:
        Mode:                  task
        Array Indices:         0
        Array Size:            1
        JOP_ARRAY_SIZE Value:  1
        Max Execution Time:    7200
        Retry Limit:           3
    
    Status:
      Completed:          90s
      Instance Statuses:
        Succeeded:  1
      Conditions:
        Type      Status  Last Probe  Last Transition
        Pending   True    101s        101s
        Running   True    91s         91s
        Complete  True    90s         90s
    
    Events:
      Type    Reason     Age                 Source                Messages
      Normal  Updated    91s (x4 over 102s)  batch-job-controller  Updated JobRun "myjobrun-repo"
      Normal  Completed  91s                 batch-job-controller  JobRun completed successfully
    
    Instances:
      Name               Running  Status     Restarts  Age
      myjobrun-repo-0-0  0/1      Succeeded  0         102s
    

これで、ジョブが作成され、リポジトリー・ソース・コードから実行されたので、ibmcloud ce job updateコマンドを使用して、必要に応じてジョブを更新できます。 ジョブの更新について詳しくは、ジョブの更新を参照してください。 ジョブで使用するためにソースを更新する場合は、**job update**コマンドで--build-sourceオプションを指定する必要があります。

ジョブがリポジトリー・ソース・コードから、または CLI を使用して ローカル・ソース から作成される場合、結果のビルド実行はビルド構成に基づきません。 完了したビルド実行は、最終的に自動的に削除されます。 ビルド構成に基づいていないビルド実行は、ビルド実行が成功した場合、1 時間後に削除されます。 ビルド実行が成功しなかった場合、このビルド実行は 24 時間後に削除されます。 CLI で表示できるのは、このビルド実行に関する情報のみです。 このビルド実行をコンソールで表示することはできません。

次のステップ

  • ジョブを作成した後、そのジョブを実行するためにジョブをサブミットします。 ジョブの実行を参照してください。 ジョブは複数回実行できます。

  • ジョブの実行後に、ジョブおよびジョブ実行の詳細を表示するには、アクセス・ジョブの詳細を参照してください。

  • ジョブが作成されたので、ジョブをイベント・ドリブンにすることを検討してください。 イベント・サブスクリプションを使用すると、定期的なスケジュールによってジョブをトリガーしたり、ファイルのアップロードなどのイベントに反応するようにジョブを設定したりすることができます。

  • ジョブの作成方法や以前の更新方法に関係なく、以下の任意の方法でジョブの更新および参照されるコードの更新を行うことができます。

    • Open Container Initiative(OCI)標準に従ってコンテナ・イメージを持っている場合は、ジョブを作成(または更新)するときに、コンテナ・レジストリの場所を指すイメージへの参照だけを提供する必要があります。 パブリックレジストリ または プライベートレジストリ にあるイメージからジョブを作成(または更新)し、ジョブの実行から参照先のイメージにアクセスすることができます。

      job create コマンドを使用してジョブを作成し、 --build-source オプションを指定してローカル・ソースまたはリポジトリー・ソースからコンテナー・イメージをビルドし、別のコンテナー・イメージを指すようにジョブを変更する場合は、まず、ジョブからビルドの関連付けを削除する必要があります。 例えば、 ibmcloud ce job update -n JOB_NAME --build-clear を実行します。 ジョブからビルドの関連付けを削除した後、別のイメージを参照するようにジョブを更新できます。

    • Git リポジトリーにあるソース・コードから開始する場合は、ソースからイメージをビルドし、単一操作を使用してジョブを作成 (または更新) する処理を Code Engine に任せることができます。 このシナリオでは、Code Engine はイメージを IBM Cloud® Container Registry にアップロードします。 詳しくは、リポジトリー・ソース・コードからのジョブの作成を参照してください。 イメージのビルドをさらに制御したい場合は、ジョブを作成 (または更新) してジョブを実行する前に、Code Engine を使用してイメージのビルドを選択することができます。

    • ローカル・ワークステーションにあるソース・コードから開始する場合は、単一 CLI コマンドを使用して、ソースからのイメージのビルドとジョブの作成を Code Engine に処理させることができます。 このシナリオでは、Code Engine はイメージを IBM Cloud® Container Registry にアップロードします。 詳しくは、CLI を使用したローカル・ソース・コードからのジョブの作成を参照してください。 イメージのビルドをもっとコントロールしたい場合は、ジョブを作成(または更新)してジョブを実行する前に、Code Engineで イメージのビルド)を選択することができます。

    例えば、ジョブのソースの開発を進化させながら、ローカル・ソースのビルドを Code Engine に処理させることができます。 その後、イメージが成熟すると、目的の特定のイメージを参照するようにジョブを更新できます。 必要に応じて、このプロセスを繰り返すことができます。

    更新されたジョブを実行すると、イメージにタグが指定されていない限り、参照されたコンテナー・イメージの最新バージョンがジョブ実行に使用されます。 イメージにタグが指定されている場合、タグ付けされたイメージがジョブ実行に使用されます。

コード・サンプルがさらに必要ですか? IBM Cloud Code Engine GitHub repoをチェックアウトします。