從儲存庫原始碼部署應用程式

您可以透過 IBM Cloud® Code Engine 控制台和命令列介面 (CLI),直接從位於 Git 儲存庫中的原始碼部署您的應用程式。 了解 透過 Code Engine 建立個人形象 時,您能獲得哪些優勢。

從主控台從儲存庫原始碼部署應用程式

您可以使用主控台直接從原始碼部署應用程式。

開始之前,請 規劃建置。 您也可以找到 建立 Dockerfile 的提示

Code Engine 可以自動將映像檔推送 (上傳) 至帳戶中的 IBM Cloud® Container Registry 名稱空間,甚至為您建立名稱空間。 若要將映像檔上傳至不同的 Container Registry 帳戶或專用 Docker Hub 帳戶,請參閱 存取容器登錄

如需存取映像檔登錄所需之許可權的相關資訊,請參閱 設定映像檔登錄的權限

  1. 開啟 Code Engine 主控台。
  2. 選擇「開始建立」。
  3. 請從可用專案清單中選取一個專案。 您也可以 建立新的。 請注意,您必須具有選取的專案才能部署應用程式。
  4. 選擇應用程式
  5. 請輸入應用程式的名稱。 請為您的應用程式指定一個在該專案內具有唯一性的名稱。
  6. 選擇「從原始碼建立容器映像」。
  7. 按一下 指定建置詳細資料
  8. 選取來源儲存庫,例如 https://github.com/IBM/CodeEngine。 因為我們使用不需要認證的範例來源,所以請選取 None 以取得 Code repo 存取權。 您可以選擇性地提供分支名稱。 如果您未提供分支名稱,且將欄位保留空白,則 Code Engine 會自動使用指定儲存庫的預設分支。 按下一步
  9. 選取建置的策略及建置的資源。 如需建置選項的相關資訊,請參閱 規劃建置。 按下一步
  10. 選取容器登錄位置,例如 IBM Registry Dallas,以指定建置輸出映像檔的儲存位置。 如果您的登錄是專用的,則必須對它 設定存取權
  11. 提供建置輸出映像檔儲存位置的登錄資訊。 選擇現有的 Registry 機密,或建立一個新的。 如果您要將映像檔建置至帳戶中的 Container Registry 實例,則可以選取 Code Engine managed secret,並讓 Code Engine 為您建立及管理密碼。
  12. 選取映像檔的名稱空間、名稱及標籤。 如果您要將映像檔建置至帳戶中的 IBM Cloud Container Registry 實例,則可以選取現有名稱空間,或讓 Code Engine 為您建立並管理名稱空間。
  13. 按一下完成
  14. 修改應用程式的任何執行時期設定或環境變數。 如需這些選項的相關資訊,請參閱 應用程式端點可見性的選項部署應用程式的選項
  15. 按一下建立
  16. 提交建置執行之後,建置的容器映像檔會傳送至 Container Registry,然後您的應用程式會為您取回映像檔並部署。 應用程式狀態變更為 備妥之後,您可以測試應用程式。 按一下 測試應用程式,然後在「測試應用程式」窗格中按一下 傳送要求。 若要在網頁中開啟應用程式,請按一下應用程式 URL

最終會自動刪除完成的建置執行。 當您的建置執行是以建置配置為基礎時,如果建置執行成功,則會在 3 小時之後刪除這項建置執行。 若建置執行未成功,該建置執行紀錄將於 48 小時後被刪除。

現在您已部署應用程式,您可以檢視應用程式修訂及任何執行中實例的相關資訊,以及配置詳細資料。

使用 CLI 從儲存庫原始碼部署應用程式

您可以使用 CLI 直接從儲存庫原始碼部署應用程式。 使用 app create 命令,既可從您的 Git 儲存庫原始碼建立映像檔,亦可將您的應用程式部署至該處並引用此已建立的映像檔。

開始之前

在此實務範例中,Code Engine 會從 Git 儲存庫來源建置映像檔,自動將映像檔上傳至容器登錄,然後建立並部署應用程式以參照此建置映像檔。 如果映像要位於 IBM Cloud® Container Registry 帳戶中,您只需要提供應用程式的名稱和 URL 到 Git 儲存庫。 在這種情況下,Code Engine 會為您管理命名空間。 不過,如果您想要使用不同的容器登錄,則必須指定該容器登錄的映像檔及登錄密鑰。 如需選項的完整清單,請參閱 ibmcloud ce app create 指令。

如需存取映像檔登錄所需之許可權的相關資訊,請參閱 設定映像檔登錄的權限

下列範例 application create 指令會建立並部署 myapp 應用程式,該應用程式會參照從 https://github.com/IBM/CodeEngine 建置來源建置的映像檔。 此指令會自動建置映像檔,並將映像檔上傳至帳戶中的 IBM Cloud® Container Registry 名稱空間,且應用程式會參照此建置映像檔。 藉由指定 --build-context-dir 選項,建置會使用 helloworld 目錄中的原始檔。 此範例指令使用預設 dockerfile 策略,以及預設 medium 建置大小。 因為儲存庫的分支名稱未使用 --build-commit 選項指定,所以 Code Engine 會自動使用指定儲存庫的預設分支。

ibmcloud ce application create --name myapp --build-source https://github.com/IBM/CodeEngine --build-context-dir helloworld

輸出範例

Creating application 'myapp'...
Submitting build run 'myapp-run-220411-13abcdefg'...
Creating image 'private.us.icr.io/ce--abcde-4svg40kna19/app-myapp:220411-1756-if8jv'...
Waiting for build run to complete...
Build run status: 'Running'
Build run completed successfully.
Run 'ibmcloud ce buildrun get -n myapp-run-220411-13abcdefg' to check the build run status.
Waiting for application 'myapp' to become ready.
Configuration 'myapp' is waiting for a Revision to become ready.
Ingress has not yet been reconciled.
Waiting for load balancer to be ready.
Run 'ibmcloud ce application get -n myapp' to check the application status.
OK
https://myapp.4svg40kna19.us-south.codeengine.appdomain.cloud

請注意,application create 指令的輸出提供在建立及部署應用程式之前,建置執行進度的相關資訊。

在此範例中,建置映像檔會上傳至 Container Registry中的 ce--abcde-4svg40kna19 名稱空間。

下表彙總在此範例中與 app create 指令搭配使用的選項。 如需指令及其選項的相關資訊,請參閱 ibmcloud ce app create 指令。

命令說明
選項 說明
--name 應用程式的名稱。 請使用專案內唯一的名稱。 此值是必要項目。
-名稱必須以小寫字母開頭。
-名稱必須以小寫英數字元結尾。
-名稱必須是 63 個字元或更少,且可以包含字母、數字及連字號 (-)。
--build-source 包含您原始碼的 Git 套件庫的 URL;例如 https://github.com/IBM/CodeEngine
--build-context-dir 儲存庫中包含建置套件檔案或 Dockerfile 的目錄。 這是選用值。

下列輸出顯示此範例的 application get 指令結果,包括建置的相關資訊。

輸出範例

[...]
Name:          myapp  
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
URL:                https://myapp.4svg40kna19.us-south.codeengine.appdomain.cloud
Cluster Local URL:  http://myapp.4svg40kna19.svc.cluster.local
Console URL:        https://cloud.ibm.com/codeengine/project/us-south/01234567-abcd-abcd-abcd-abcdabcd1111/application/myapp/configuration
Status Summary:  Application deployed successfully
Environment Variables:    
    Type     Name             Value  
    Literal  CE_API_BASE_URL  https://api.private.us-south.codeengine.cloud.ibm.com
    Literal  CE_APP           myapp  
    Literal  CE_DOMAIN        us-south.codeengine.appdomain.cloud  
    Literal  CE_PROJECT_ID    abcdefgh-abcd-abcd-abcd-1a2b3c4d5e6f
    Literal  CE_REGION        us-south  
    Literal  CE_SUBDOMAIN     abcdabcdab
Image:                  private.us.icr.io/ce--27fe9-4svg40kna19/app-myapp:220414-2010-sqsoj
Resource Allocation:
  CPU:                1
  Ephemeral Storage:  400M
  Memory:             4G
Registry Secrets:
  ce-auto-icr-private-us-south
Revisions:
  myapp-00001:
    Age:                23m
    Latest:             true
    Traffic:            100%
    Image:              private.us.icr.io/ce--27fe9-4svg40kna19/app-myapp:220414-2010-sqsoj (pinned to 86944c)  
    Running Instances:  0
Runtime:
  Concurrency:    100
  Maximum Scale:  10
  Minimum Scale:  0
  Timeout:        300
Build Information:
  Build Run Name:     myapp-run-220414-161009244
  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 myapp-run-220414-161009244' for details.
[...]

既然已從儲存庫原始碼建立及部署您的應用程式,您可以使用 ibmcloud ce app update 指令來更新應用程式以符合您的需求。 如需更新應用程式的相關資訊,請參閱 更新應用程式。 如果您想要更新來源以與應用程式搭配使用,則必須在 application update 指令上提供 --build-source 選項。

從儲存庫原始碼或使用 CLI 從 本端來源 部署應用程式時,產生的建置執行不會以建置配置為基礎。 最終會自動刪除完成的建置執行。 如果建置執行成功,則會在 1 小時之後刪除非基於建置配置的建置執行。 如果建置執行不成功,則會在 24 小時之後刪除此建置執行。 您只能使用 CLI 來顯示這項建置執行的相關資訊。 您無法在主控台中檢視這項建置執行。

下一步

部署應用程式之後,您可以使用下列 任何 方法來 更新已部署的應用程式 及其參照的程式碼,與您建立或先前更新應用程式的方式無關:

  • 如果您具有容器映像檔,則根據 Open Container Initiative(OCI)標準,您只需要提供映像檔的參照,這會在您部署應用程式時指向容器登錄的位置。 您可以使用 公用登錄專用登錄 中的映像檔來部署應用程式。

    如果您已使用 app create 指令建立應用程式,並指定 --build-source 選項以從本端或儲存庫來源建置容器映像檔,且您想要將應用程式變更為指向不同的容器映像檔,則必須先從應用程式移除建置的關聯。 例如,執行 ibmcloud ce application update -n APP_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 儲存庫中的範例