從儲存庫原始碼建立工作

您可以使用 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. 選擇現有的註冊表機密或建立新的註冊表機密。 如果您要將映像檔建置至帳戶中的 IBM Cloud Container Registry 實例,則可以選取 Code Engine managed secret,並讓 Code Engine 為您建立並管理密鑰。
  12. 選取映像檔的名稱空間、名稱及標籤。 如果您要將映像檔建置至帳戶中的 IBM Cloud Container Registry 實例,則可以選取現有名稱空間,或讓 Code Engine 為您建立並管理名稱空間。
  13. 按一下完成
  14. 修改環境變數或執行時期設定的任何預設值。 如需這些選項的相關資訊,請參閱 用於建立及執行工作的選項
  15. 按一下建立
  16. 提交建置執行之後,建置容器映像檔會傳送至 Container Registry,然後您的工作就可以參照建置映像檔。 當工作備妥時,請按一下 提交工作,以根據現行配置來執行工作。

最終會自動刪除完成的建置執行。 當您的建置執行是以建置配置為基礎時,如果建置執行成功,則會在 3 小時之後刪除這項建置執行。 如果建置執行不成功,則會在 48 小時之後刪除此建置執行。

現在,您已建立工作並 執行工作,您可以從工作頁面檢視工作配置及工作執行的詳細資料。

需要協助嗎? 請參閱 建置的疑難排解提示

使用 CLI 從儲存庫原始碼建立工作

您可以使用 CLI 直接從儲存庫原始碼建立工作。 使用 job create 指令,從 Git 儲存庫來源建置映像檔,並定義工作的配置。

開始之前

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

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

  1. 使用 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 指定在建立工作之前等待映像檔建置完成。
  2. (選用) 使用 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.
    
  3. 現在已建立工作並建置映像檔,請執行參照已建置映像檔的工作。 此範例指令會根據 myjob-repo 工作配置來執行 myjobrun-repo 工作執行。

    ibmcloud ce jobrun submit --name myjobrun-repo --job myjob-repo
    
  4. (選用) 檢視工作執行的詳細資料。

    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 儲存庫