使用 CLI 從本端原始碼建立工作
您可以透過 IBM Cloud® Code Engine CLI,直接從本地工作站上的原始碼建立您的工作。 使用 job create 指令可從本端來源建置映像檔,並定義工作的配置以參照此建置映像檔。
當您提交從本端目錄取回程式碼的建置時,您的原始碼會壓縮成保存檔。Code Engine 會自動將映像檔上傳至帳戶中的 IBM Cloud® Container Registry 名稱空間,然後建立工作以參照此建置映像檔。 請注意,您只能將 IBM Cloud Container Registry 作為本端建置的目標。 在此實務範例中,您只需要提供工作的名稱,以及本端來源的路徑。 如需選項的完整清單,請參閱 ibmcloud ce job create 指令。
如需存取映像檔登錄所需許可權的相關資訊,請參閱 設定映像檔登錄的權限。
您可以選擇使用 .ceignore 檔案來忽略原始碼內的某些檔案型樣,其行為與 .gitignore 檔案類似。 例如,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 來 建置映像檔。
-
如果您是從位於本端工作站上的原始碼開始,則可以選擇讓 Code Engine 負責從來源建置映像檔,並使用 單一 CLI 指令來建立工作。 在此實務範例中,Code Engine 會將映像檔上傳至 IBM Cloud® Container Registry。 若要進一步瞭解,請參閱 使用 CLI 從本端原始碼建立工作。 如果您想要進一步控制映像檔的建置,則可以在建立 (或更新) 工作並執行工作之前,選擇使用 Code Engine 來 建置映像檔。
例如,您可以選擇讓 Code Engine 處理本端來源的建置,同時發展工作的來源開發。 然後,在映像檔成熟之後,您可以更新工作以參照您想要的特定映像檔。 您可以視需要重複此程序。
當您執行更新的工作時,除非為映像檔指定標籤,否則會使用所參照儲存器映像檔的最新版本來執行工作。 如果為映像檔指定標籤,則會使用標記映像檔來執行工作。
-
尋找更多程式碼範例? 請參閱 「IBM Cloud Code Engine」GitHub 儲存庫中的範例。