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 が必要です。
開始前に
- Code Engine の CLI 環境をセットアップします。
- プロジェクトを作成して使用できるようにします。
- ソースは、ローカル・ワークステーション上のアクセス可能な場所になければなりません。
この例では、https://github.com/IBM/CodeEngineサンプル、特にhelloworldサンプルを使用します。
-
以下のコマンドを使用して、
https://github.com/IBM/CodeEngineサンプル・ソースをローカル・ワークステーションにダウンロードします。git clone https://github.com/IBM/CodeEngine -
CodeEngine\helloworldディレクトリーに変更します。 -
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ジョブを作成する前にイメージ・ビルドが完了するのを待機することを指定します。 -
(オプション) **
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.. [...] -
ジョブが作成され、イメージがビルドされたので、ビルドされたイメージを参照するジョブを実行します。 このコマンド例は、
myjob-localジョブ構成に基づいてmyjobrun-localジョブ実行を実行します。ibmcloud ce jobrun submit --name myjobrun-local --job myjob-local -
(オプション) ジョブ実行の詳細を表示します。
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 リポジトリをご覧ください。