ジョブの更新
定義されたジョブに変更を加え、更新されたジョブを、コンソールまたは CLI を使用して実行できます。 ジョブに対する変更には、コード・コンテナー・イメージ、コードの引数やコマンド、ランタイム・インスタンス・リソース、環境変数の更新などがあります。
ジョブが実行されるたびに、イメージにタグが指定されていない限り、参照されているコンテナー・イメージの最新バージョンがジョブ実行に使用されます。 イメージにタグが指定されている場合、タグ付けされたイメージがジョブ実行に使用されます。
実行依頼されたバッチ・ジョブは、可能な限り並列実行されます。 実行依頼されたジョブの数またはサイズが、構成されている割り当て量制限 (実行インスタンスの最大数など) を超えた場合、Code Engine は、十分な量のジョブが終了するまで、ジョブをキューに入れてジョブの実行を遅らせます。 メモリーや CPU など、ジョブの割り当て量と制限について詳しくは、Code Engine の制限と割り当て量を参照してください。
ジョブの作成方法や以前の更新方法に関係なく、以下の任意の方法でジョブの更新および参照されるコードの更新を行うことができます。
-
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 に処理させることができます。 その後、イメージが成熟すると、目的の特定のイメージを参照するようにジョブを更新できます。 必要に応じて、このプロセスを繰り返すことができます。
更新されたジョブを実行すると、イメージにタグが指定されていない限り、参照されたコンテナー・イメージの最新バージョンがジョブ実行に使用されます。 イメージにタグが指定されている場合、タグ付けされたイメージがジョブ実行に使用されます。
コンソールでのジョブの更新
ジョブが作動可能状態の場合は、ジョブを更新できます。 以前に作成した myjob
ジョブを更新して、コンテナー・イメージを icr.io/codeengine/firstjob
から icr.io/codeengine/testjob
に変更してから、環境変数を更新します。 要求がこの icr.io/codeengine/testjob
サンプル・ジョブに送信されると、ジョブは環境変数
TARGET
を読み取り、 "Hello ${TARGET}!"
を出力します。 この環境変数が空の場合は、"Hello World!"
が返されます。 この例で使用されるコードについて詳しくは、 testjob
を参照してください。
-
「ジョブ」ページに移動します。
- Code Engineプロジェクトのページ」からプロジェクト名をクリックする。 「ジョブ」 をクリックして、ジョブおよびジョブ実行を処理します。
- ジョブ」ページで 「ジョブ」 タブをクリックし、更新したいジョブ名をクリックします。
-
「構成」 タブで、ジョブのイメージ参照を更新します。 イメージの名前を指定するか、イメージを構成します。 画像の名前を'
icr.io/codeengine/firstjob
から'icr.io/codeengine/testjob
に更新する。 「デプロイ」 をクリックします。 -
**「ジョブの実行依頼」**をクリックします。
-
「ジョブの実行依頼」ペインで、すべてのデフォルト値を受け入れ、ジョブの実行依頼を再度クリックしてジョブを実行します。
-
このジョブのジョブ・ログをコンソールで表示すると、ジョブの出力に
Hello World!
と表示されています。 -
ジョブをもう一度更新して環境変数を追加するために、ジョブ・ページに移動します。
-
環境変数 をクリックしてタブを開き、環境変数の追加をクリックします。
TARGET
という名前のリテラル環境変数を、値にSunshine
を指定して追加します。icr.io/codeengine/testjob
は、メッセージHello <value_of_TARGET>!>
を出力します。 -
「完了 (Done)」 をクリックします。
-
**「保存」**をクリックして、ジョブに対する更新を保存します。
-
ジョブの実行依頼 をクリックして、更新したジョブをサブミットします。
-
「ジョブの実行依頼」ペインから、今回は CPU 値を、指定されたメモリーに対して有効ないずれかの CPU 選択項目に変更します。 有効なメモリーと CPU の組み合わせを使用する必要があることに注意してください。 **「ジョブの実行依頼 (Submit job)」**をもう一度クリックして、このジョブを実行します。 「ジョブの詳細 (job details)」ページに、ジョブの状況が表示されます。 ジョブ詳細の
Configuration
セクションの更新された CPU 値に注目してください。 -
このジョブのジョブ・ログをコンソールで表示すると、更新されたジョブの出力に
Hello Sunshine!
と表示されます。
CLI でのジョブの更新
CLI を使用して、既存のジョブ構成を更新したり、新しいジョブ実行への変更を指定したりできます。
CLI でのジョブ構成の更新
ibmcloud ce job update
コマンドを使用して、既存のジョブ構成を更新できます。
-
job update
コマンドを使用して、他のイメージを参照するようにmyjob
ジョブを更新できます。ibmcloud ce job update --name myjob --image icr.io/codeengine/testjob
ibmcloud ce job get -n myjob
コマンドを実行して、更新されたジョブの詳細を表示します。出力例
Name: myjob ID: abcdefgh-abcd-abcd-abcd-1a2b3c4d5e6f Project Name: myproject Project ID: 01234567-abcd-abcd-abcd-abcdabcd1111 Age: 3m6s Created: 2021-06-04T11:56:22-04:00 Last Job Run: Name: myjob-jobrun-abcde Age: 32d Created: 2021-08-06T13:50:02-04:00 Image: icr.io/codeengine/testjob Resource Allocation: CPU: 1 Memory: 4G Runtime: Mode: task Array Indices: 0 Array Size: 1 Max Execution Time: 7200 Retry Limit: 3 [...]
-
ibmcloud ce jobrun submit
コマンドを実行して、この更新されたジョブ構成を参照するジョブを実行します。jobrun submit
コマンドの場合、--job
オプションを使用して、定義されたジョブ構成を参照します。--name
オプションが指定されている場合は--job
オプションは必要ありませんが、以下のサンプル・コマンドは、--name
オプションを使用してこのジョブ実行の名前を指定します。ibmcloud ce jobrun submit --name myjobrun1 --job myjob
-
ibmcloud ce jobrun get -n myjobrun1
を実行して、このジョブ実行の詳細を表示します。 参照されるイメージはicr.io/codeengine/testjob
であり、これは更新されたジョブ構成に基づいていることに注意してください。出力例
Getting jobrun 'myjobrun1'... Getting instances of jobrun 'myjobrun1'... Getting events of jobrun 'myjobrun1'... [...] Name: myjobrun1 ID: abcdefgh-abcd-abcd-abcd-1a2b3c4d5e6f Project Name: myproject Project ID: 01234567-abcd-abcd-abcd-abcdabcd1111 Age: 3m6s Created: 2021-06-15T11:56:22-04:00 Job Ref: myjob Image: icr.io/codeengine/testjob Resource Allocation: CPU: 1 Ephemeral Storage: 4G Memory: 4G Runtime: Mode: task Array Indices: 0 Array Size: 1 JOP_ARRAY_SIZE Value: 1 Max Execution Time: 7200 Retry Limit: 3 Status: Completed: 11s Instance Statuses: Succeeded: 1 Conditions: Type Status Last Probe Last Transition Pending True 15s 15s Running True 11s 11s Complete True 11s 11s Events: Type Reason Age Source Messages Normal Updated 16s (x3 over 20s) batch-job-controller Updated JobRun "myjobrun1" Normal Completed 16s batch-job-controller JobRun completed successfully Instances: Name Running Status Restarts Age myjobrun1-0-0 0/1 Succeeded 0 20s
CLI でのジョブ実行の更新
ibmcloud ce jobrun resubmit
コマンドを使用して、ジョブ実行の変更を指定できます。 jobrun submit
コマンドは以前のジョブ実行を参照するジョブ実行を再実行依頼します。
-
jobrun resubmit
コマンドを使用して、myjobrun1
ジョブ実行を再実行依頼して、配列インデックスを0
から1-4
に変更します。--name
オプションはjobrun resubmit
コマンドでは必要ありませんが、以下のサンプル・コマンドは、--name
オプションを指定してこのジョブ実行の名前を指定します。ibmcloud ce jobrun resubmit -jobrun myjobrun1 --array-indices "1-4" --name myjobrunresubmit
-
ibmcloud ce jobrun get -n myjobrunresubmit
コマンドを実行して、更新されたジョブ実行の詳細を表示します。 このジョブ実行の配列インデックスの値が更新されていることに注目してください。出力例
Getting jobrun 'myjobrunresubmit'... Getting instances of jobrun 'myjobrunresubmit'... Getting events of jobrun 'myjobrunresubmit'... [...] Name: myjobrunresubmit2 ID: abcdefgh-abcd-abcd-abcd-1a2b3c4d5e6f Project Name: myproject Project ID: 01234567-abcd-abcd-abcd-abcdabcd1111 Age: 3m6s Created: 2021-06-04T11:56:22-04:00 Job Ref: myjob Image: icr.io/codeengine/testjob Resource Allocation: CPU: 1 Ephemeral Storage: 4G Memory: 4G Runtime: Mode: task Array Indices: 1-4 Array Size: 4 JOP_ARRAY_SIZE Value: 4 Max Execution Time: 7200 Retry Limit: 3 Status: Completed: 34s Instance Statuses: Succeeded: 4 Conditions: Type Status Last Probe Last Transition Pending True 38s 38s Running True 36s 36s Complete True 34s 34s Events: Type Reason Age Source Messages Normal Updated 36s (x7 over 40s) batch-job-controller Updated JobRun "myjobrunresubmit" Normal Completed 36s batch-job-controller JobRun completed successfully Instances: Name Running Status Restarts Age myjobrunresubmit-1-0 0/1 Succeeded 0 40s myjobrunresubmit-2-0 0/1 Succeeded 0 40s myjobrunresubmit-3-0 0/1 Succeeded 0 40s myjobrunresubmit-4-0 0/1 Succeeded 0 40s
CLI を使用して実行依頼 (または再実行依頼) された、定義されたジョブ構成を参照しないジョブ実行は、コンソールには表示されません。