IBM Cloud Docs
CLI を使用したローカル・ソース・コードからのジョブの作成

CLI を使用したローカル・ソース・コードからのジョブの作成

IBM Cloud® Code Engine CLI を使用して、ローカル・ワークステーション上のソース・コードから直接ジョブを作成できます。 **job create**コマンドを使用して、ローカル・ソースからイメージをビルドし、このビルドされたイメージを参照するようにジョブの構成を定義します。

ローカル・ディレクトリーからコードをプルするビルドを実行依頼すると、ソース・コードがアーカイブ・ファイルにパックされます。Code Engine は、アカウント内の IBM Cloud® Container Registry 名前空間にイメージを自動的にアップロードしてから、このビルドされたイメージを参照するジョブを作成します。 ローカル・ビルドのターゲットにできるのは IBM Cloud Container Registry のみであることに注意してください。 このシナリオでは、ジョブの名前とローカル・ソースへのパスのみを指定する必要があります。 オプションの完全なリストについては、ibmcloud ce job create コマンドを参照してください。

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

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

このシナリオでは、IBM Cloud® Container Registry が必要です。

開始前に

この例では、https://github.com/IBM/CodeEngineサンプル、特にhelloworldサンプルを使用します。

  1. 以下のコマンドを使用して、https://github.com/IBM/CodeEngineサンプル・ソースをローカル・ワークステーションにダウンロードします。

    git clone https://github.com/IBM/CodeEngine
    
  2. CodeEngine\helloworldディレクトリーに変更します。

  3. CodeEngine\helloworldディレクトリーからmyjob-localジョブを作成します。このジョブは、ローカル・ワークステーション上のCodeEngine\helloworldソースから作成されたイメージを使用します。 このコマンドにより、イメージが自動的にビルドされ、アカウント内の IBM Cloud Container Registry 名前空間にプッシュされます。 既存の Container Registry 名前空間がない場合は、Code Engine によって自動的に作成されます。 --waitオプションを追加することにより、ジョブ作成がイメージ・ビルドの完了を待機することを指定します。

    ibmcloud ce job create --name myjob-local --build-source . --wait
    

    .は、ビルド・ソースが現行作業ディレクトリーにあることを示します。

    出力例

    Creating job 'myjob-local'...
    Packaging files to upload from source path '.'...
    Submitting build run 'myjob-local-run-220420-150457582'...
    Creating image 'private.us.icr.io/ce--abcde-glxo4kabcde/job-myjob-local'...
    Waiting for build run to complete...
    Build run status: 'Running'
    Build run completed successfully.
    Run 'ibmcloud ce buildrun get -n myjob-local-run-220420-150457582' to check the build run status.
    OK
    

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

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

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

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

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

    • 名前の先頭と末尾は小文字の英数字でなければなりません。
    • 名前は 63 文字以下でなければならず、文字、数字、およびハイフン (-) を使用できます。
    --build-source ローカル・ソースへのパス。
    --wait ジョブを作成する前にイメージ・ビルドが完了するのを待機することを指定します。
  4. (オプション) **job get**コマンドを使用して、ビルドに関する情報を含む、ジョブに関する情報を表示します。

    ibmcloud ce job get --name myjob-local
    

    出力例

    [...]
    Name:          myjob-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
    
    Image:                private.us.icr.io/ce--abcde-glxo4kabcde/job-myjob-local
    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-local-run-220420-150457582
      Build Type:         local
      Build Strategy:     dockerfile-medium
      Timeout:            600
      Source:             .
      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-local-run-220420-150457582' for details..
    [...]
    
  5. ジョブが作成され、イメージがビルドされたので、ビルドされたイメージを参照するジョブを実行します。 このコマンド例は、myjob-localジョブ構成に基づいてmyjobrun-localジョブ実行を実行します。

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

    ibmcloud ce jobrun get --name myjobrun-local
    

    出力例

    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-local
    Image:                private.us.icr.io/ce--abcde-glxo4kabcde/job-myjob-local
    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:          2m40s
      Instance Statuses:
        Succeeded:  1
      Conditions:
        Type      Status  Last Probe  Last Transition
        Pending   True    2m44s       2m44s
        Running   True    2m40s       2m40s
        Complete  True    2m40s       2m40s
    
    Events:
      Type    Reason     Age                    Source                Messages
      Normal  Updated    2m41s (x3 over 2m45s)  batch-job-controller  Updated JobRun "myjobrun-local"
      Normal  Completed  2m41s                  batch-job-controller  JobRun completed successfully
    
    Instances:
      Name                Running  Status     Restarts  Age
      myjobrun-local-0-0  0/1      Succeeded  0         2m45s
    

これで、ジョブが作成され、リポジトリー・ソース・コードから実行されたので、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をチェックアウトします。