使用獨立式建置指令 (CLI) 建置容器映像檔

當您的程式碼作為來源存在於本端檔案或 Git 儲存庫時,Code Engine 會根據 Open Container Initiative(OCI)標準提供選項,讓您將程式碼建置為容器映像檔。 使用 Code Engine CLI,您可以使用單一指令來建置容器映像檔。

Code Engine 提供彈性來處理建置程序,每當您 從儲存庫原始碼部署應用程式使用 CLI 從本端原始碼部署應用程式從儲存庫原始碼建立工作使用 CLI 從本端原始碼建立工作 時。

不過,如果您想要進一步控制容器映像檔的建置,Code Engine 可讓您彈性使用下列其中一個選項來建置容器映像檔:

  • 使用單一 CLI 指令 buildrun submit 來執行一次建置執行。 此選項的好處是您可以使用單一 CLI 指令來取得建置; 不過,不會保留建置的配置。
  • 定義建置配置,您可以從中執行多個建置執行。 請參閱 使用建置配置來建置容器映像檔

建置完成且映像檔存在之後,您可以將容器映像檔部署為應用程式,或建立參照映像檔的工作。

讓我們瞭解如何使用單一指令來建置容器映像檔,而不參照建置配置。 在此實務範例中,IBM Cloud® Code Engine 會從 Git 儲存庫或本端目錄取回原始碼,建置它,然後將容器映像檔推送 (上傳) 至登錄。 您可以選擇公用或專用 儲存庫登錄。 您可以選擇使用 使用者提供的存取權,為建置輸出指定登錄密鑰來指定登錄詳細資料。 或者,您可以選擇讓 Code Engine 負責從來源為您建置映像檔,並使用 自動存取將映像檔儲存在 IBM Cloud Container Registry 中。

您可以選擇使用 .ceignore 檔案來忽略原始碼內的某些檔案型樣,其行為與 .gitignore 檔案類似。 例如,node.js 應用程式的 .ceignore 檔案項目可能包括 node_modules.npm。 如需要忽略的其他範例檔案型樣,請參閱 GitHub.gitignore 儲存庫

在建置容器映像檔之前,請考量下列要點:

  • 開始建置映像檔之前,請先檢閱 規劃資訊。 您也需要驗證您可以存取登錄。 請參閱 設定容器登錄的權限

  • 如果您建置相同容器映像檔的多個版本,則在您執行工作或部署應用程式時,會下載並使用容器映像檔的最新版本,除非為映像檔指定標籤。 如果為映像檔指定標籤,則會將標籤映像檔用於應用程式或工作。

  • 使用 CLI 提交且未參照已定義建置配置的建置執行,也可以從主控台檢視。 從專案頁面中,按一下 映像檔建置,以檢視映像檔建置和建置執行的清單。 使用 CLI,使用 ibmcloud ce buildrun list 指令來檢視專案中所有建置執行的清單。

  • Code Engine 具有專案內建置執行的配額。 如需 Code Engine 限制的相關資訊,請參閱 Code Engine的限制和配額

最終會自動刪除完成的建置執行。 當您使用單一 CLI 指令執行建置執行時,如果它不是以建置配置為基礎,則會在 1 小時之後刪除此建置執行 (如果建置執行成功的話)。 如果建置執行不成功,則會在 24 小時之後刪除此建置執行。 您只能使用 CLI 來顯示這項建置執行的相關資訊。 您無法在主控台中檢視這項建置執行。

執行單一建置,以使用 CLI 從公用儲存庫取回原始檔

如果您的來源位於公用儲存庫中,且您想要使用單一指令來建置及輸出容器映像檔,請使用 buildrun submit 指令來建立容器映像檔,而不建立可重複使用的建置配置。

對於建置輸出,您可以選擇 自動存取,並讓 Code Engine 負責從來源為您建置映像檔,並將映像檔儲存在 IBM Cloud Container Registry中。 在此情況下,您不需要指定登錄密鑰或映像檔登錄的位置。 或者,您可以選擇 使用者提供的存取權,並指定登錄詳細資料以及登錄密鑰,以存取登錄中的建置映像檔。

如需執行單一建置的選項完整清單,請參閱 ibmcloud ce buildrun submit 指令。

使用 CLI 執行單一建置 (具有公用儲存庫來源及自動存取登錄)

在此 自動存取 實務範例中,Code Engine 會從公用 Git 儲存庫來源建置映像檔,並將映像檔上傳至 IBM Cloud Container Registry,並搭配使用建置選項與 buildrun submit 指令來自動存取。 在此情況下,您不需要指定登錄密鑰或映像檔登錄的位置。

如需設定 Code Engine 的必要許可權以自動存取 Container Registry中這些映像檔的相關資訊,請參閱 設定映像檔登錄的權限

開始之前

  1. 執行建置以從公用 Git 儲存庫建置映像檔,並讓 Code Engine 自動儲存並存取映像檔。 例如,下列 buildrun submit 指令會執行稱為 helloworld-buildrun 的建置執行,以從公用 Git 儲存庫 https://github.com/IBM/CodeEngine 中的原始檔建置。

    ibmcloud ce buildrun submit --name helloworld-buildrun --source https://github.com/IBM/CodeEngine --context-dir /hello
    
    • 在此範例中,指令使用預設 dockerfile 策略,以及預設 medium 建置大小。
    • 因為儲存庫的分支名稱未使用 --commit 選項指定,Code Engine 會自動使用所指定儲存庫的預設分支,即 main for this Git 儲存庫。
    • 透過不指定映像檔登錄的位置或登錄密鑰,Code Engine 會將建置輸出推送至 IBM Cloud Container Registry 並具有自動存取權。
    • Code Engine 會根據 --source 選項的值自動判斷您的來源是位於儲存庫中還是本端工作站上。

    輸出範例

    Submitting build run 'helloworld-buildrun'...
    Creating image 'private.us.icr.io/ce--12ce3-defg4h5ij6d/buildrun-helloworld-buildrun'...
    Run 'ibmcloud ce buildrun get -n helloworld-buildrun' to check the build run status.
    OK
    

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

    命令說明
    選項 說明
    --name 建置執行的名稱。 請使用在專案內唯一的名稱。
    -名稱必須以小寫字母開頭和結尾。
    -名稱必須是 63 個字元或更少,且可以包含小寫英數字元和連字號 (-)。
    --source Git 儲存庫的 URL 或包含原始碼之本端來源的路徑; 例如,https://github.com/IBM/CodeEngine
    --context-dir 儲存庫中包含建置套件檔案或 Dockerfile 的目錄。 如果您的建置套件檔案或 Dockerfile 包含在子目錄中,請指定此值。
  2. 使用 buildrun get 指令來檢查建置執行的狀態。

    ibmcloud ce buildrun get -n helloworld-buildrun
    

    輸出範例

    請注意為映像檔產生的名稱,且自動建立的登錄密鑰名稱格式為 ce-auto-icr-private-<region>

    Getting build 'helloworld-buildrun'
    For troubleshooting information visit: https://cloud.ibm.com/docs/codeengine?topic=codeengine-troubleshoot-build.
    Run 'ibmcloud ce buildrun events -n helloworld-buildrun' to get the system events of the build run.
    Run 'ibmcloud ce buildrun logs -f -n helloworld-buildrun' to follow the logs of the build run.
    OK
    
    Name:          helloworld-buildrun  
    ID:            abcdefgh-abcd-abcd-abcd-1a2b3c4d5e6f  
    Project Name:  myproject  
    Project ID:    01234567-abcd-abcd-abcd-abcdabcd1111
    Age:           2d15h
    Created:       2022-06-07T15:30:46-04:00  
    Build Type:    git
    
    Summary:       Succeeded
    Status:        Succeeded
    Reason:        All Steps have completed executing
    Source:
        Commit Branch:  main
        Commit SHA:     946dd18f6e5a5474336786bc28d7dda93aec49c1
        Commit Author:  COMMIT_AUTHOR
    Image Digest:  sha256:ba3c445a27238040e102c083f76ad8922effcc3a7c4dc97b8472e626d87c11a2
    
    Image:              private.us.icr.io/ce--12ce3-defg4h5ij6d/buildrun-helloworld-buildrun
    Registry Secret:    ce-auto-icr-private-us-south
    Build Strategy:     dockerfile-medium
    Timeout:            10m0s
    Source:             https://github.com/IBM/CodeEngine
    Commit:             main
    Context Directory:  /hello
    Dockerfile:         Dockerfile
    

使用 CLI 執行單一建置 (具有公用儲存庫來源及使用者提供的登錄存取權)

在此 使用者提供的存取 實務範例中,Code Engine 會從公用 Git 儲存庫來源建置映像檔,然後將映像檔上傳至容器登錄,並具有您使用單一建置指令提供的登錄存取權。

開始之前

  1. 執行建置以從公用 Git 儲存庫建置映像檔,並使用登錄密碼指定建置輸出的映像檔登錄位置。 例如,下列 buildrun submit 指令會執行稱為 helloworld-buildrun2 的建置執行,以從公用 Git 儲存庫 https://github.com/IBM/CodeEngine 建置,並透過使用 myregistry 登錄密鑰來存取此登錄,將映像檔儲存至 us.icr.io/mynamespace/codeengine-helloworld 登錄。

    ibmcloud ce buildrun submit --name helloworld-buildrun2 --image us.icr.io/mynamespace/codeengine-helloworld --registry-secret myregistry --source https://github.com/IBM/CodeEngine --context-dir /hello
    
    • 在此範例中,指令使用預設 dockerfile 策略,以及預設 medium 建置大小。
    • 因為儲存庫的分支名稱未使用 --commit 選項指定,Code Engine 會自動使用所指定儲存庫的預設分支,即 main for this Git 儲存庫。
    • 如果您將 --strategy 選項與 dockerfile 值搭配使用,請確保 --dockerfile 選項正確設定為 dockerfile 的名稱。 --strategy 選項的預設值為 Dockerfile
    • Code Engine 會根據 --source 選項的值自動判斷您的來源是位於儲存庫中還是本端工作站上。

    輸出範例

    Submitting build run 'helloworld-buildrun2'...
    Creating image 'us.icr.io/mynamespace/codeengine-helloworld'...
    Run 'ibmcloud ce buildrun get -n helloworld-buildrun2' to check the build run status.
    OK
    

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

    命令說明
    選項 說明
    --name 建置執行的名稱。 請使用專案內唯一的名稱。 此值是必要項目。
    -名稱必須以小寫字母開頭及結尾。
    -名稱必須是 63 個字元或更少,且可以包含小寫英數字元及連字號 (-)。
    --image 映像檔登錄的位置。 位置的格式必須是 REGISTRY/NAMESPACE/REPOSITORYREGISTRY/NAMESPACE/REPOSITORY:TAG,其中 TAG 是選用項目。 如果未指定 TAG,則預設為 latest
    --registry-secret 建立容器映像檔時用來存取登錄的登錄密鑰。 執行 secret create --format registry 指令,以建立登錄密鑰。 登錄密鑰是用來向專用登錄進行鑑別。
    --source Git 儲存庫的 URL 或包含原始碼之本端來源的路徑; 例如,https://github.com/IBM/CodeEngine
    --context-dir 儲存庫中包含建置套件檔案或 Dockerfile 的目錄。 如果您的建置套件檔案或 Dockerfile 包含在子目錄中,請指定此值。
  2. 使用 buildrun get 指令來檢查建置執行的狀態。

    ibmcloud ce buildrun get --name helloworld-buildrun2
    

    輸出範例

    Getting build run 'helloworld-buildrun2'...
    For troubleshooting information visit: https://cloud.ibm.com/docs/codeengine?topic=codeengine-troubleshoot-build.
    Run 'C:\Program Files\IBM\Cloud\bin\ibmcloud.exe ce buildrun events -n helloworld-buildrun2' to get the system events of the build run.
    Run 'C:\Program Files\IBM\Cloud\bin\ibmcloud.exe ce buildrun logs -f -n helloworld-buildrun2' to follow the logs of the build run.
    OK
    
    Name:          helloworld-buildrun2  
    ID:            abcdefgh-abcd-abcd-abcd-1a2b3c4d5e6f  
    Project Name:  myproject  
    Project ID:    01234567-abcd-abcd-abcd-abcdabcd1111
    Age:           2d15h
    Created:       2022-06-07T15:57:43-04:00
    Build Type:    git
    
    Summary:       Succeeded
    Status:        Succeeded
    Reason:        All Steps have completed executing
    Source:
        Commit Branch:  main
        Commit SHA:     946dd18f6e5a5474336786bc28d7dda93aec49c1
        Commit Author:  COMMIT_AUTHOR
    Image Digest:  sha256:6312ee613efa5bec7baa20c47f607e7f15473947d5675fd7384491bee8023afc
    
    Image:              us.icr.io/mynamespace/codeengine-helloworld2
    Registry Secret:    myregistry
    Build Strategy:     dockerfile-medium
    Timeout:            10m0s
    Source:             https://github.com/IBM/CodeEngine
    Context Directory:  /hello
    Dockerfile:         Dockerfile
    

如果您收到指令驗證失敗,請檢查您的密鑰是否存在。 如果您參照映像檔的登錄密鑰 (--registry-secret),且該密鑰不存在,請參閱 存取容器登錄。 如需建置的相關資訊,請檢查 疑難排解提示

執行單一建置,以使用 CLI 從專用儲存庫取回原始檔

如果您的來源位於專用儲存庫中,且您想要使用單一指令來建置及輸出容器映像檔,則請使用 buildrun submit 指令來建立容器映像檔,而不建立可重複使用的建置配置。

對於建置輸出,您可以選擇 自動存取,並讓 Code Engine 負責從來源為您建置映像檔,並將映像檔儲存在 IBM Cloud Container Registry中。 在此情況下,您不需要指定登錄密鑰或映像檔登錄的位置。 或者,您可以選擇 使用者提供的存取權,並指定登錄詳細資料以及登錄密鑰,以存取登錄中的建置映像檔。

如需執行單一建置的選項完整清單,請參閱 ibmcloud ce buildrun submit 指令。

使用 CLI 執行單一建置 (使用專用儲存庫來源及自動存取登錄)

在此 自動存取 實務範例中,Code Engine 會從專用儲存庫來源建置映像檔,並搭配使用建置選項與 buildrun submit 指令,以自動存取將映像檔上傳至 IBM Cloud Container Registry。 在此情況下,您不需要指定登錄密鑰或映像檔登錄的位置。

如需設定 Code Engine 的必要許可權以自動存取 Container Registry中這些映像檔的相關資訊,請參閱 設定映像檔登錄的權限

開始之前

  1. 執行建置以從專用儲存庫建置映像檔,並讓 Code Engine 自動儲存並存取映像檔。 例如,下列 buildrun submit 指令會執行稱為 helloworld-buildrun-private 的建置執行,以從專用 Git 儲存庫 https://github.com/myprivaterepo/builds 建置。

    ibmcloud ce buildrun submit --name helloworld-buildrun-private --source git@github.com:myprivaterepo/builds.git --context-dir /hello --strategy buildpacks --git-repo-secret myrepossh
    
    • 這個指令範例使用 buildpacks 策略和 medium 建置大小。
    • 透過不指定映像檔登錄的位置或登錄密鑰,Code Engine 會將建置輸出推送至 IBM Cloud Container Registry 並具有自動存取權。
    • 因為所指定 Git 儲存庫中的來源是專用的,所以存取權需要 SSH 密鑰。 SSH 密鑰也用作 Git 儲存庫存取密鑰。 因此,您指定的 --source 必須使用 SSH 通訊協定,例如 git@github.com:myprivaterepo/builds.git--source 的值不得使用 httphttps 格式。
    • 因為儲存庫的分支名稱未使用 --commit 選項指定,所以 Code Engine 會自動使用指定儲存庫的預設分支。
    • Code Engine 會根據 --source 選項的值自動判斷您的來源是位於儲存庫中還是本端工作站上。

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

    命令說明
    選項 說明
    --name 建置執行的名稱。 請使用專案內唯一的名稱。 此值是必要項目。
    -名稱必須以小寫字母開頭及結尾。
    -名稱必須是 63 個字元或更少,且可以包含小寫英數字元及連字號 (-)。
    --source Git 儲存庫的 URL 或包含原始碼之本端來源的路徑; 例如,git@github.com:myprivaterepo/builds.git
    --context-dir 儲存庫中包含建置套件檔案或 Dockerfile 的目錄。 如果您的建置套件檔案或 Dockerfile 包含在子目錄中,請指定此值。
    --strategy 用於建置映像檔的策略。 有效值為 dockerfilebuildpacks
    --git-repo-secret SSH 密鑰的名稱,其中包含用來存取專用儲存庫的認證,該專用儲存庫包含用來建置容器映像檔的原始碼。 執行 secret create --ssh 指令以建立此密鑰。 SSH 密鑰也用作 Git 儲存庫存取密鑰。
  2. 使用 buildrun get 指令來檢查建置執行的狀態。

    ibmcloud ce buildrun get --name helloworld-buildrun-private
    

    輸出範例

    Getting build run 'helloworld-buildrun-private'...
    For troubleshooting information visit: https://cloud.ibm.com/docs/codeengine?topic=codeengine-troubleshoot-build.
    Run 'ibmcloud ce buildrun events -n helloworld-buildrun-private' to get the system events of the build run.
    Run 'ibmcloud ce buildrun logs -f -n helloworld-buildrun-private' to follow the logs of the build run.
    OK
    
    Name:          helloworld-buildrun-private  
    ID:            abcdefgh-abcd-abcd-abcd-1a2b3c4d5e6f  
    Project Name:  myproject  
    Project ID:    01234567-abcd-abcd-abcd-abcdabcd1111
    Age:           2d15h
    Created:       2022-06-08T06:02:36-05:00  
    Build Type:    git  
    
    Summary:       Succeeded  
    Status:        Succeeded  
    Reason:        All Steps have completed executing   
    Source:          
        Commit Branch:  main  
        Commit SHA:     946dd18f6e5a5474336786bc28d7dda93aec49c1  
        Commit Author:  COMMIT_AUTHOR  
    Image Digest:  sha256:39c4a87bc43102c2ee88562072c57c135b8dcc5cc4a1104e1d782fe3acc5d5b6  
    Image:              private.us.icr.io/ce--e97a8-odof2whblw5/build-helloworld-buildrun-private
    Registry Secret:    ce-auto-icr-private-us-south  
    Build Strategy:     buildpacks-v3-medium
    Timeout:            10m0s
    Source:             git@github.com:myprivaterepo/builds.git  
    Context Directory:  /hello  
    Repo Secret:        myrepossh
    

使用 CLI 執行單一建置 (具有專用儲存庫來源及使用者提供的登錄存取權)

在此 使用者提供的存取權 實務範例中,Code Engine 會使用您提供的 Git 儲存庫密鑰從專用儲存庫來源建置映像檔,然後使用您提供的單一建置指令登錄存取權將映像檔上傳至容器登錄。

開始之前

  1. 執行建置以從專用儲存庫建置映像檔,並使用登錄密碼指定建置輸出的映像檔登錄位置。 下列範例 buildrun submit 指令會執行稱為 helloworld-buildrun-private2 的建置執行,以從專用 Git 儲存庫 https://github.com/myprivaterepo/builds 建置,並透過使用 myregistry 登錄密鑰來存取此登錄,將映像檔儲存至 us.icr.io/mynamespace/codeengine-helloworld

    ibmcloud ce buildrun submit --name helloworld-buildrun-private2 --image us.icr.io/mynamespace/codeengine-helloworld --registry-secret myregistry --source git@github.com:myprivaterepo/builds.git --context-dir /hello --strategy buildpacks --git-repo-secret myrepossh
    
    • 此範例指令使用 buildpacks 策略及預設 medium 建置大小。
    • 因為提供的 Git 儲存庫是專用的,所以存取需要 SSH 密鑰。 SSH 密鑰也用作 Git 儲存庫存取密鑰。 因此,您指定的 --source 必須使用 SSH 通訊協定,例如 git@github.com:myprivaterepo/builds.git--source 的值不得使用 httphttps 格式。
    • 因為儲存庫的分支名稱未使用 --commit 選項指定,所以 Code Engine 會自動使用指定儲存庫的預設分支。
    • Code Engine 會根據 --source 選項的值自動判斷您的來源是位於儲存庫中還是本端工作站上。

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

    命令說明
    選項 說明
    --name 建置執行的名稱。 請使用專案內唯一的名稱。 此值是必要項目。
    -名稱必須以小寫字母開頭及結尾。
    -名稱必須是 63 個字元或更少,且可以包含小寫英數字元及連字號 (-)。
    --image 映像檔登錄的位置。 位置的格式必須是 REGISTRY/NAMESPACE/REPOSITORYREGISTRY/NAMESPACE/REPOSITORY:TAG,其中 TAG 是選用項目。 如果未指定 TAG,則預設為 latest
    --registry-secret 建立容器映像檔時用來存取登錄的登錄密鑰。 執行 secret create --format registry 指令,以建立登錄密鑰。 登錄密鑰是用來向專用登錄進行鑑別。
    --source Git 儲存庫的 URL 或包含原始碼之本端來源的路徑; 例如,git@github.com:myprivaterepo/builds.git
    --context-dir 儲存庫中包含建置套件檔案或 Dockerfile 的目錄。 如果您的建置套件檔案或 Dockerfile 包含在子目錄中,請指定此值。
    --strategy 用於建置映像檔的策略。 有效值為 dockerfilebuildpacks
    --git-repo-secret SSH 密鑰的名稱,其中包含用來存取專用儲存庫的認證,該專用儲存庫包含用來建置容器映像檔的原始碼。 執行 secret create --ssh 指令以建立此密鑰。 SSH 密鑰也用作 Git 儲存庫存取密鑰。
  2. 使用 buildrun get 指令來檢查建置執行的狀態。

    ibmcloud ce buildrun get --name helloworld-buildrun-private2
    

    輸出範例

    Getting build run 'helloworld-buildrun-private2'...
    For troubleshooting information visit: https://cloud.ibm.com/docs/codeengine?topic=codeengine-troubleshoot-build.
    Run 'ibmcloud ce buildrun events -n helloworld-buildrun-private2' to get the system events of the build run.
    Run 'ibmcloud ce buildrun logs -f -n helloworld-buildrun-private2' to follow the logs of the build run.
    OK
    
    Name:          helloworld-buildrun-private2  
    ID:            abcdefgh-abcd-abcd-abcd-1a2b3c4d5e6f  
    Project Name:  myproject  
    Project ID:    01234567-abcd-abcd-abcd-abcdabcd1111
    Age:           2d10h
    Created:       2022-06-08T06:11:05-05:00  
    Build Type:    git  
    
    Summary:       Succeeded  
    Status:        Succeeded  
    Reason:        All Steps have completed executing  
    Source:          
        Commit Branch:  main  
        Commit SHA:     946dd18f6e5a5474336786bc28d7dda93aec49c1  
        Commit Author:  COMMIT_AUTHOR  
    Image Digest:  sha256:39c4a87bc43102c2ee88562072c57c135b8dcc5cc4a1104e1d782fe3acc5d5b6  
    
    Image:              us.icr.io/mynamespace/codeengine-helloworld  
    Registry Secret:    myregistry  
    Build Strategy:     buildpacks-v3-medium  
    Timeout:            10m0s  
    Source:             git@github.com:myprivaterepo/builds.git  
    Context Directory:  /hello  
    Repo Secret:        myrepossh
    

執行單一建置,從本端目錄取回來源

如果您的來源位於本端工作站上,且您想要使用單一指令來建置及輸出容器映像檔,則請使用 buildrun submit 指令來建立容器映像檔,而不建立可重複使用的建置配置。

對於建置輸出,您可以選擇 自動存取,並讓 Code Engine 負責從來源為您建置映像檔,並將映像檔儲存在 IBM Cloud Container Registry中。 在此情況下,您不需要指定登錄密鑰或映像檔登錄的位置。 或者,您可以選擇 使用者提供的存取權,並指定登錄詳細資料以及登錄密鑰,以存取登錄中的建置映像檔。

當您提交從本端目錄取回程式碼的建置時,您的原始碼會壓縮至保存檔,並上傳至 IBM Cloud Container Registry 實例。 請注意,您只能將 IBM Cloud Container Registry 設為本端建置的目標。 來源映像檔會建立在與建置映像檔相同的名稱空間中。

您可以選擇使用 .ceignore 檔案來忽略原始碼內的某些檔案型樣,其行為與 .gitignore 檔案類似。 例如,node.js 應用程式的 .ceignore 檔案項目可能包括 node_modules.npm。 如需要忽略的其他範例檔案型樣,請參閱 GitHub.gitignore 儲存庫

如需執行單一建置的選項完整清單,請參閱 ibmcloud ce buildrun submit 指令。

使用 CLI 執行單一建置 (具有本端來源及自動存取登錄)

在此 自動存取 實務範例中,Code Engine 會從本端來源建置映像檔,並在 buildrun submit 指令中使用建置選項,以自動存取方式將映像檔上傳至 IBM Cloud Container Registry。

如需設定 Code Engine 的必要許可權以自動存取 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 目錄,執行建置以從本端工作站上的 helloworld 來源建置映像檔,並讓 Code Engine 自動儲存及存取映像檔。 此指令會自動建置映像檔並將其推送至帳戶中的 Container Registry 名稱空間。 如果您沒有現有的 Container Registry 名稱空間,Code Engine 會自動為您建立一個名稱空間。 例如,下列 buildrun submit 指令會執行稱為 buildrun-local-dockerfile 的建置執行,以從本端來源建置。

    ibmcloud ce buildrun submit --name buildrun-local-dockerfile --source .
    

    . 指出建置來源位於現行工作目錄中。

    • 此範例指令使用預設 dockerfile 策略,以及預設 medium 建置大小。
    • 透過不指定映像檔登錄的位置或登錄密鑰,Code Engine 會將建置輸出推送至 IBM Cloud Container Registry 並具有自動存取權。
    • Code Engine 會根據 --source 選項的值自動判斷您的來源是位於儲存庫中還是本端工作站上。

    輸出範例

    Packaging files to upload from source path '.'...
    Submitting build run 'buildrun-local-dockerfile'...
    Creating image 'private.us.icr.io/ce--27fe9-glxo4k7nj7d/buildrun-buildrun-local-dockerfile'...
    Run 'ibmcloud ce buildrun get -n buildrun-local-dockerfile' to check the build run status.
    OK
    

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

    命令說明
    選項 說明
    --name 建置執行的名稱。 請使用專案內唯一的名稱。 此值是必要項目。
    -名稱必須以小寫字母開頭及結尾。
    -名稱必須是 63 個字元或更少,且可以包含小寫英數字元及連字號 (-)。
    --source 包含原始碼的本端來源路徑或 Git 儲存庫的 URL; 例如,.
  4. 使用 buildrun get 指令來檢查建置執行的狀態。

    ibmcloud ce buildrun get --name buildrun-local-dockerfile
    

    輸出範例

    Getting build run 'buildrun-local-dockerfile'...
    For troubleshooting information visit: https://cloud.ibm.com/docs/codeengine?topic=codeengine-troubleshoot-build.
    Run 'C:\Program Files\IBM\Cloud\bin\ibmcloud.exe ce buildrun events -n buildrun-local-dockerfile' to get the system events of the build run.
    Run 'C:\Program Files\IBM\Cloud\bin\ibmcloud.exe ce buildrun logs -f -n buildrun-local-dockerfile' to follow the logs of the build run.
    OK
    
    Name:          buildrun-local-dockerfile  
    ID:            abcdefgh-abcd-abcd-abcd-1a2b3c4d5e6f  
    Project Name:  myproject  
    Project ID:    01234567-abcd-abcd-abcd-abcdabcd1111
    Age:           2d15h
    Created:       2022-06-07T16:09:34-04:00
    Build Type:    local
    
    Summary:       Succeeded
    Status:        Succeeded
    Reason:        All Steps have completed executing
    Source:
        Source Image Digest:  sha256:ced7abc34f018941145efb56e9a0c1fca99236653c2a05dd5b8b985928ff5f4f
    Image Digest:  sha256:6459430ff49436494aa5e3103eaac98ad90ea50df88a2e14af6314fe88f3c952
    
    Image:                   private.us.icr.io/ce--27fe9-glxo4k7nj7d/buildrun-buildrun-local-dockerfile
    Registry Secret:         ce-auto-icr-private-us-south
    Build Strategy:          dockerfile-medium
    Timeout:                 10m0s
    Source Image:            private.us.icr.io/ce--27fe9-glxo4k7nj7d/buildrun-buildrun-local-dockerfile-source
    Source Registry Secret:  ce-auto-icr-private-us-south
    Dockerfile:              Dockerfile
    

    請注意為映像檔產生的名稱,且自動建立的登錄密鑰名稱格式為 ce-auto-icr-private-<region>

使用 CLI 執行單一建置 (具有本端來源及使用者提供的登錄存取權)

在此 使用者提供的存取 實務範例中,Code Engine 會從本端來源建置映像檔,然後使用您使用 buildrun submit 指令提供的登錄存取權將映像檔上傳至容器登錄。

開始之前

在使用本端來源之前,請確定您的來源位於本端工作站上可存取的位置。

此範例使用 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 目錄,執行建置執行,以在本端工作站上從 helloworld 來源建置映像檔,並使用登錄密碼指定建置輸出的映像檔登錄位置。 此 buildrun submit 指令會自動建置映像檔,並將其推送至您使用 --image 選項指定的登錄。 指定 --registry-secret 選項以存取您的登錄。

    ibmcloud ce buildrun submit --name buildrun-local-dockerfile2 --source . --image us.icr.io/mynamespace/codeengine-helloworld --registry-secret myregistry
    

    . 指出建置來源位於現行工作目錄中。

    • Code Engine 會根據 --source 選項的值自動判斷您的來源是位於儲存庫中還是本端工作站上。
    • 在此範例中,指令使用預設 dockerfile 策略,以及預設 medium 建置大小。

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

    命令說明
    選項 說明
    --name 建置執行的名稱。 請使用專案內唯一的名稱。 此值是必要項目。
    -名稱必須以小寫字母開頭及結尾。
    -名稱必須是 63 個字元或更少,且可以包含小寫英數字元及連字號 (-)。
    --source 包含原始碼的本端來源路徑或 Git 儲存庫的 URL; 例如,.
    --image 映像檔登錄的位置。 位置的格式必須是 REGISTRY/NAMESPACE/REPOSITORYREGISTRY/NAMESPACE/REPOSITORY:TAG,其中 TAG 是選用項目。 如果未指定 TAG,則預設為 latest
    --registry-secret 建立容器映像檔時用來存取登錄的登錄密鑰。 執行 secret create --format registry 指令,以建立登錄密鑰。 登錄密鑰是用來向專用登錄進行鑑別。
  4. 使用 buildrun get 指令來檢查建置執行的狀態。

    ibmcloud ce buildrun get --name buildrun-local-dockerfile2
    

    輸出範例

    Getting build run 'buildrun-local-dockerfile2'...
    For troubleshooting information visit: https://cloud.ibm.com/docs/codeengine?topic=codeengine-troubleshoot-build.
    Run 'C:\Program Files\IBM\Cloud\bin\ibmcloud.exe ce buildrun events -n buildrun-local-dockerfile2' to get the system events of the build run.
    Run 'C:\Program Files\IBM\Cloud\bin\ibmcloud.exe ce buildrun logs -f -n buildrun-local-dockerfile2' to follow the logs of the build run.
    OK
    
    Name:          buildrun-local-dockerfile2  
    ID:            abcdefgh-abcd-abcd-abcd-1a2b3c4d5e6f  
    Project Name:  myproject  
    Project ID:    01234567-abcd-abcd-abcd-abcdabcd1111
    Age:           2d15h
    Created:       2022-06-07T16:34:42-04:00
    Build Type:    local
    
    Summary:       Succeeded
    Status:        Succeeded
    Reason:        All Steps have completed executing
    Source:
        Source Image Digest:  sha256:00fb80a8cdc17394ccae564efceb81f48c2cbcbd76afd0fb0b74019352933a63
    Image Digest:  sha256:25bc4bedccc1b34c98ccd92368246df3e61a7cf0cf4915a32f111669b60e2fea
    
    Image:                   us.icr.io/mynamespace/codeengine-helloworld
    Registry Secret:         myregistry
    Build Strategy:          dockerfile-medium
    Timeout:                 10m0s
    Source Image:            us.icr.io/mynamespace/codeengine-helloworld-source
    Source Registry Secret:  myregistry
    Dockerfile:              Dockerfile
    

建置的後續步驟

既然您已從來源建置容器映像檔,現在您可以建立使用容器映像檔的應用程式或工作。 請參閱 部署應用程式執行中工作

尋找更多程式碼範例? 請參閱 IBM Cloud Code Engine GitHub 儲存庫