IBM Cloud Docs
ジョブの更新

ジョブの更新

定義されたジョブに変更を加え、更新されたジョブを、コンソールまたは 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を参照してください。

  1. 「ジョブ」ページに移動します。

    • Code Engineプロジェクトのページ」からプロジェクト名をクリックする。 「ジョブ」 をクリックして、ジョブおよびジョブ実行を処理します。
    • ジョブ」ページで 「ジョブ」 タブをクリックし、更新したいジョブ名をクリックします。
  2. 「構成」 タブで、ジョブのイメージ参照を更新します。 イメージの名前を指定するか、イメージを構成します。 画像の名前を'icr.io/codeengine/firstjob から'icr.io/codeengine/testjob に更新する。 「デプロイ」 をクリックします。

  3. **「ジョブの実行依頼」**をクリックします。

  4. 「ジョブの実行依頼」ペインで、すべてのデフォルト値を受け入れ、ジョブの実行依頼を再度クリックしてジョブを実行します。

  5. このジョブのジョブ・ログをコンソールで表示すると、ジョブの出力に Hello World! と表示されています。

  6. ジョブをもう一度更新して環境変数を追加するために、ジョブ・ページに移動します。

  7. 環境変数 をクリックしてタブを開き、環境変数の追加をクリックします。 TARGET という名前のリテラル環境変数を、値に Sunshine を指定して追加します。 icr.io/codeengine/testjob は、メッセージ Hello <value_of_TARGET>!>を出力します。

  8. 「完了 (Done)」 をクリックします。

  9. **「保存」**をクリックして、ジョブに対する更新を保存します。

  10. ジョブの実行依頼 をクリックして、更新したジョブをサブミットします。

  11. 「ジョブの実行依頼」ペインから、今回は CPU 値を、指定されたメモリーに対して有効ないずれかの CPU 選択項目に変更します。 有効なメモリーと CPU の組み合わせを使用する必要があることに注意してください。 **「ジョブの実行依頼 (Submit job)」**をもう一度クリックして、このジョブを実行します。 「ジョブの詳細 (job details)」ページに、ジョブの状況が表示されます。 ジョブ詳細のConfigurationセクションの更新された CPU 値に注目してください。

  12. このジョブのジョブ・ログをコンソールで表示すると、更新されたジョブの出力に Hello Sunshine! と表示されます。

CLI でのジョブの更新

CLI を使用して、既存のジョブ構成を更新したり、新しいジョブ実行への変更を指定したりできます。

CLI でのジョブ構成の更新

ibmcloud ce job update コマンドを使用して、既存のジョブ構成を更新できます。

  1. 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
    [...]
    
  2. ibmcloud ce jobrun submit コマンドを実行して、この更新されたジョブ構成を参照するジョブを実行します。 jobrun submit コマンドの場合、--job オプションを使用して、定義されたジョブ構成を参照します。 --name オプションが指定されている場合は --job オプションは必要ありませんが、以下のサンプル・コマンドは、--name オプションを使用してこのジョブ実行の名前を指定します。

    ibmcloud ce jobrun submit --name myjobrun1 --job myjob
    
  3. 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 コマンドは以前のジョブ実行を参照するジョブ実行を再実行依頼します。

  1. jobrun resubmit コマンドを使用して、myjobrun1 ジョブ実行を再実行依頼して、配列インデックスを 0 から 1-4 に変更します。 --name オプションは jobrun resubmit コマンドでは必要ありませんが、以下のサンプル・コマンドは、--name オプションを指定してこのジョブ実行の名前を指定します。

    ibmcloud ce jobrun resubmit -jobrun myjobrun1 --array-indices "1-4" --name myjobrunresubmit
    
  2. 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 を使用して実行依頼 (または再実行依頼) された、定義されたジョブ構成を参照しないジョブ実行は、コンソールには表示されません。