建立從公用儲存庫取回原始檔的建置配置

如果您的來源位於公用儲存庫中,請使用包含從公用儲存庫取回來源之位置相關資訊的設定來建立建置配置。 對於建置輸出,您可以選擇指定登錄詳細資料以及登錄密鑰,以存取登錄中的建置映像檔。 或者,您可以選擇讓 Code Engine 負責從來源為您建置映像檔,並將映像檔儲存在 IBM Cloud Container Registry中。 在此情況下,您不需要指定登錄密鑰或映像檔登錄的位置。

建立建置配置不會建立映像檔,但會建立配置來建置映像檔。 然後,您必須執行參照建置配置的建置,以建立映像檔。 在執行建置之前,不會驗證建置配置或使用建置配置來建立映像檔。 建置配置會啟用映像檔的多個後續建置,例如當變更套用至來源儲存庫時。

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

從主控台建立建置配置 (公用儲存庫)

  1. 移至 Code Engine 儀表板。

  2. 選取您在其中新增儲存器登錄的專案。

  3. 從專案頁面中,按一下 映像檔建置。

  4. 從 映像檔建置 標籤中,按一下 建立。 這時會開啟 指定建置詳細資料 側邊畫面,供您輸入建置的詳細資料。

  5. 在 來源 區段中,輸入建置的名稱、來源儲存庫的 URL,以及程式碼儲存庫存取權。

    • 如果您的程式碼是在公用儲存庫中,請使用 HTTPS URL,並選取 無 來存取程式碼儲存庫。 https://github.com/IBM/CodeEngine 是 HTTP URL 的範例。
    • 如果您的程式碼位於專用儲存庫中,請使用程式碼儲存庫 URL 的 SSH URL,並選取現有程式碼儲存庫存取權的名稱或 建立程式碼儲存庫存取權。 SSH URL 的範例為 git@github.com:IBM/CodeEngine.git。
    • 選擇性地選取來源分支名稱。 如果您未提供分支名稱,且將欄位保留空白,則 Code Engine 會自動使用指定儲存庫的預設分支。 您可以輸入任何其他分支名稱、標籤或確定 ID。

    按下一步繼續。

  6. 在 策略 區段中,選取您要使用的 策略。

    • 如果您選取 Dockerfile,也可以指定 Dockerfile 的替代路徑。
    • 在 建置資源下選取建置的大小。

    按下一步繼續。

  7. 在 輸出 區段中,輸入容器映像檔的詳細資料。

    • 選取現有的登錄密鑰,或按一下 建立登錄密鑰 以新增登錄密鑰。
    • 如果您要將映像檔建置至帳戶中的 Container Registry 實例,則可以選取 Code Engine managed secret 並 Code Engine 為您建立並管理密鑰。
    • 然後,選取您要建置之映像檔的名稱空間、儲存庫及標籤。 您可以為您選擇 Code Engine tp 建立及管理 Container Registry 中的名稱空間。
    • 如果您的映像檔存在於 Container Registry中,您可以從現有的映像檔中選取,或輸入新的儲存庫或標籤。
  8. 按一下 完成,以完成建立建置。

建立建置配置之後,您必須 執行建置 來建立映像檔。 建立映像檔之後,您可以使用新建置的映像檔來 部署應用程式 或 執行工作。

使用 CLI 建立建置配置 (公用儲存庫)

若要使用 CLI 來建立建置配置,請使用 build create 指令。 如需選項的完整清單,請參閱 ibmcloud ce build create 指令。

使用 build create 指令,您可以選擇讓 Code Engine 負責從您的來源建置映像檔,然後將映像檔儲存在 IBM Cloud Container Registry中。 對於此 自動存取 案例,您不需要指定登錄密鑰或映像檔登錄的位置。 或者,您可以指定建置映像檔輸出的位置,並提供登錄密鑰,讓 Code Engine 可以存取建置結果並將其推送至登錄。

使用 CLI 建立建置配置 (具有公用儲存庫來源及自動存取登錄)

在此實務範例中,Code Engine 會從公用 Git 儲存庫來源建置映像檔,並自動將映像檔上傳至具有自動存取權的 IBM Cloud Container Registry。 如需設定 Code Engine 的必要許可權以自動存取 Container Registry中這些映像檔的相關資訊,請參閱 設定映像檔登錄的權限。

開始之前

  1. 建立建置配置以從公用 Git 儲存庫建置映像檔,並讓 Code Engine 自動儲存並存取映像檔。 例如,下列 build create 指令會建立稱為 helloworld-build 的建置配置,以從公用 Git 儲存庫 https://github.com/IBM/CodeEngine 中的原始檔建置。 在此範例中,指令使用預設 dockerfile 策略,以及預設 medium 建置大小。 因為儲存庫的分支名稱未使用 --commit 選項指定,Code Engine 會自動使用指定儲存庫的預設分支,即 main for this Git 儲存庫。 透過不指定映像檔登錄的位置或登錄密鑰,Code Engine 會使用自動存取將建置輸出推送至 IBM Cloud Container Registry。

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

    輸出範例

    Creating build helloworld-build...
    OK
    

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

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

    ibmcloud ce build get --name helloworld-build
    

    輸出範例

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

    Getting build 'helloworld-build'
    OK
    
    Name:          helloworld-build  
    ID:            abcdefgh-abcd-abcd-abcd-1a2b3c4d5e6f  
    Project Name:  myproject  
    Project ID:    01234567-abcd-abcd-abcd-abcdabcd1111
    Age:           2d15h
    Created:       2022-05-24T09:58:43-05:00  
    Build Type:    git  
    Status:        Succeeded  
    Reason:        all validations succeeded
    
    Image:              private.us.icr.io/ce--e97a8-odof2whblw5/build-helloworld-build
    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 儲存庫建置映像檔,並使用登錄密碼指定建置輸出的映像檔登錄位置。 使用 build create 指令,指定 --image 選項以提供映像檔登錄的位置,並指定 --registry-secret 選項以存取登錄。 例如,下列指令會建立稱為 helloworld-build2 的建置配置,以從公用 Git 儲存庫 https://github.com/IBM/CodeEngine 建置,並使用 myregistry 登錄密鑰將映像檔儲存至 us.icr.io/mynamespace/codeengine-helloworld。 在此範例中,指令使用預設 dockerfile 策略,以及預設 medium 建置大小。 因為儲存庫的分支名稱未使用 --commit 選項指定,Code Engine 會自動使用指定儲存庫的預設分支,即 main for this Git 儲存庫。

    如果您將 --strategy 選項與 dockerfile 值搭配使用,請確保 --dockerfile 選項正確設定為 dockerfile 的名稱。 --strategy 選項的預設值為 Dockerfile。

    ibmcloud ce build create --name helloworld-build2 --image us.icr.io/mynamespace/codeengine-helloworld --registry-secret myregistry --source https://github.com/IBM/CodeEngine --context-dir /hello
    

    輸出範例

    Creating build helloworld-build2...
    OK
    

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

    命令說明
    選項 說明
    --name 建置的名稱。 請使用專案內唯一的名稱。 此值是必要項目。
    -名稱必須以小寫字母開頭。
    -名稱必須以小寫英數字元結尾。
    -名稱必須是 55 個字元或更少,且可以包含字母、數字及連字號 (-)。
    --image 映像檔登錄的位置。 位置的格式必須是 REGISTRY/NAMESPACE/REPOSITORY 或 REGISTRY/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. 使用 build get 指令來檢查建置的狀態。

    ibmcloud ce build get --name helloworld-build2
    

    輸出範例

    Getting build 'helloworld-build2'
    OK
    
    Name:          helloworld-build2  
    ID:            abcdefgh-abcd-abcd-abcd-1a2b3c4d5e6f  
    Project Name:  myproject  
    Project ID:    01234567-abcd-abcd-abcd-abcdabcd1111
    Age:           2d15h
    Created:       2021-03-14T14:48:19-05:00  
    Status:        Succeeded  
    Reason:        all validations succeeded
    
    Image:              us.icr.io/mynamespace/codeengine-helloworld
    Registry Secret:    myregistry
    Build Strategy:     dockerfile-medium
    Timeout:            10m0s
    Source:             https://github.com/IBM/CodeEngine
    Commit:             main
    Context Directory:  /hello
    Dockerfile:         Dockerfile
    
    

建立建置配置之後,您必須 執行建置 來建立映像檔。 建立映像檔之後,您可以使用新建置的映像檔來 部署應用程式 或 執行工作。

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