從儲存庫原始碼建立工作
您可以使用 IBM Cloud® Code Engine 主控台及 CLI,直接從位於 Git 儲存庫中的原始碼建立工作。 瞭解當您 使用 Code Engine 建置映像檔時有哪些優點可用。
從主控台從儲存庫原始碼建立工作
您可以使用主控台直接從原始碼建立工作。
開始之前,請 規劃建置。 您也可以找到 建立 Dockerfile 的提示。 每次執行工作時,都會在建置程序期間使用最新版本的相依建置構件 (包括建置套件及容器映像檔),並將其包含在產生的容器映像檔中。
Code Engine 可以自動將映像檔推送 (上傳) 至帳戶中的 IBM Cloud® Container Registry 名稱空間,甚至為您建立名稱空間。 若要將映像檔推送至不同的 Container Registry 帳戶或專用 Docker Hub 帳戶,請參閱 存取容器登錄。
如需存取映像檔登錄所需許可權的相關資訊,請參閱 設定映像檔登錄的權限。
- 開啟 Code Engine 主控台。
- 選取 我們走。
- 選擇工作。
- 輸入作業的名稱。 為您的作業使用在專案中唯一的名稱。
- 從可用項目清單中選擇一個項目。 您也可以 建立新的。 請注意,您必須具有選取的專案才能建立工作。
- 選取 原始碼。
- 按一下 指定建置詳細資料。
- 選取來源儲存庫,例如
https://github.com/IBM/CodeEngine。 因為我們使用不需要認證的範例來源,所以請選取None以取得 Code repo 存取權。 您可以選擇性地提供分支名稱。 如果您未提供分支名稱,且將欄位保留空白,則 Code Engine 會自動使用指定儲存庫的預設分支。 按下一步。 - 選取建置的策略及建置的資源。 如需建置選項的相關資訊,請參閱 規劃建置。 按下一步。
- 提供建置輸出映像檔儲存位置的登錄資訊。 選取儲存器登錄位置,例如
IBM Registry Dallas。 如果您的登錄是專用的,則必須對它 設定存取權。 - 選擇現有的註冊表機密或建立新的註冊表機密。 如果您要將映像檔建置至帳戶中的 IBM Cloud Container Registry 實例,則可以選取
Code Engine managed secret,並讓 Code Engine 為您建立並管理密鑰。 - 選取映像檔的名稱空間、名稱及標籤。 如果您要將映像檔建置至帳戶中的 IBM Cloud Container Registry 實例,則可以選取現有名稱空間,或讓 Code Engine 為您建立並管理名稱空間。
- 按一下完成。
- 修改環境變數或執行時期設定的任何預設值。 如需這些選項的相關資訊,請參閱 用於建立及執行工作的選項。
- 按一下建立。
- 提交建置執行之後,建置容器映像檔會傳送至 Container Registry,然後您的工作就可以參照建置映像檔。 當工作備妥時,請按一下 提交工作,以根據現行配置來執行工作。
最終會自動刪除完成的建置執行。 當您的建置執行是以建置配置為基礎時,如果建置執行成功,則會在 3 小時之後刪除這項建置執行。 如果建置執行不成功,則會在 48 小時之後刪除此建置執行。
現在,您已建立工作並 執行工作,您可以從工作頁面檢視工作配置及工作執行的詳細資料。
需要協助嗎? 請參閱 建置的疑難排解提示。
使用 CLI 從儲存庫原始碼建立工作
您可以使用 CLI 直接從儲存庫原始碼建立工作。 使用 job create 指令,從 Git 儲存庫來源建置映像檔,並定義工作的配置。
開始之前
- 設定 Code Engine CLI 環境。
- 建立並使用專案。
在此實務範例中,Code Engine 會從 Git 儲存庫來源建置映像檔,自動將映像檔上傳至容器登錄,然後建立工作配置以使用 job create 指令參照此建置映像檔。 如果映像檔位於 IBM Cloud Container Registry 帳戶中,則您只需要提供工作的名稱及 Git 儲存庫的 URL。 在此情況下,Code Engine 會為您管理名稱空間。 不過,如果您想要使用不同的容器登錄,則必須指定該容器登錄的映像檔及登錄密鑰。
使用 ibmcloud ce jobrun submit 指令來執行參照已建置映像檔的工作。 如需選項的完整清單,請參閱 ibmcloud ce job create 及 ibmcloud ce jobrun submit 指令。
如需存取映像檔登錄所需許可權的相關資訊,請參閱 設定映像檔登錄的權限。
-
使用
job create指令來建立myjob-repo工作,以參照從https://github.com/IBM/CodeEngine建置來源建置的映像檔。 此指令會自動建置映像檔,並將映像檔上傳至帳戶中的 IBM Cloud® Container Registry 名稱空間,針對此工作執行參照此建置映像檔。 藉由指定--build-context-dir選項,建置會使用helloworld目錄中的原始檔。 此範例指令使用預設dockerfile策略,以及預設medium建置大小。 因為儲存庫的分支名稱未使用--build-commit選項指定,所以 Code Engine 會自動使用指定儲存庫的預設分支。 透過新增--wait選項,指定工作建立要等待映像檔建置完成。ibmcloud ce job create --name myjob-repo --build-source https://github.com/IBM/CodeEngine --build-context-dir helloworld --wait輸出範例
Creating job 'myjob-repo'... Submitting build run 'myjob-repo-run-220420-15590196'... Creating image 'private.us.icr.io/ce--abcde-glxo4kabcde/job-myjob-repo'... Waiting for build run to complete... Build run status: 'Running' Build run completed successfully. Run 'ibmcloud ce buildrun get -n myjob-repo-run-220420-15590196' to check the build run status. OK因為我們已指定
--wait選項,所以job create指令的輸出會提供在建立工作之前建置執行進度的相關資訊。在此範例中,建置映像檔會上傳至 IBM Cloud Container Registry中的
ce--abcde-glxo4kabcde名稱空間。下表彙總在此範例中與
job create指令搭配使用的選項。 如需指令及其選項的相關資訊,請參閱ibmcloud ce job create指令。命令說明 選項 說明 --name工作名稱。 請使用專案內唯一的名稱。 此值是必要項目。
-名稱必須以小寫英數字元開頭及結尾。
-名稱必須是 63 個字元或更少,且可以包含字母、數字及連字號 (-)。--build-source包含原始碼之 Git 儲存庫的 URL; 例如, https://github.com/IBM/CodeEngine。--build-context-dir儲存庫中包含建置套件檔案或 Dockerfile 的目錄。 這是選用值。 --wait指定在建立工作之前等待映像檔建置完成。 -
(選用) 使用
job get指令來顯示工作的相關資訊,包括建置的相關資訊。ibmcloud ce job get --name myjob-repo輸出範例
[...] Name: myjob-repo 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-repo 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-repo-run-220420-15590196 Build Type: git Build Strategy: dockerfile-medium Timeout: 600 Source: https://github.com/IBM/CodeEngine Context Directory: helloworld 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-repo-run-220420-15590196' for details. -
現在已建立工作並建置映像檔,請執行參照已建置映像檔的工作。 此範例指令會根據
myjob-repo工作配置來執行myjobrun-repo工作執行。ibmcloud ce jobrun submit --name myjobrun-repo --job myjob-repo -
(選用) 檢視工作執行的詳細資料。
ibmcloud ce jobrun get --name myjobrun-repo輸出範例
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-repo Image: private.us.icr.io/ce--abcde-glxo4kabcde/job-myjob-repo 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: 90s Instance Statuses: Succeeded: 1 Conditions: Type Status Last Probe Last Transition Pending True 101s 101s Running True 91s 91s Complete True 90s 90s Events: Type Reason Age Source Messages Normal Updated 91s (x4 over 102s) batch-job-controller Updated JobRun "myjobrun-repo" Normal Completed 91s batch-job-controller JobRun completed successfully Instances: Name Running Status Restarts Age myjobrun-repo-0-0 0/1 Succeeded 0 102s
既然已從儲存庫原始碼建立並執行您的工作,您可以使用 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 儲存庫。