使用 CLI 從本端原始碼建立工作

您可以透過 IBM Cloud® Code Engine CLI,直接從本地工作站上的原始碼建立您的工作。 使用 job create 指令可從本端來源建置映像檔,並定義工作的配置以參照此建置映像檔。

當您提交從本端目錄取回程式碼的建置時,您的原始碼會壓縮成保存檔。Code Engine 會自動將映像檔上傳至帳戶中的 IBM Cloud® Container Registry 名稱空間,然後建立工作以參照此建置映像檔。 請注意,您只能將 IBM Cloud Container Registry 作為本端建置的目標。 在此實務範例中,您只需要提供工作的名稱,以及本端來源的路徑。 如需選項的完整清單,請參閱 ibmcloud ce job create 指令。

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

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

此情境需使用 IBM Cloud® 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 目錄中,建立 myjob-local 工作,其使用本端工作站上從 CodeEngine\helloworld 來源建置的映像檔。 此指令會自動建置映像檔並將其推送至帳戶中的 IBM Cloud Container Registry 名稱空間。 如果您沒有現有的 Container Registry 名稱空間,Code Engine 會自動為您建立一個名稱空間。 透過新增 --wait 選項,指定工作建立要等待映像檔建置完成。

    ibmcloud ce job create --name myjob-local --build-source . --wait
    

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

    輸出範例

    Creating job 'myjob-local'...
    Packaging files to upload from source path '.'...
    Submitting build run 'myjob-local-run-220420-150457582'...
    Creating image 'private.us.icr.io/ce--abcde-glxo4kabcde/job-myjob-local'...
    Waiting for build run to complete...
    Build run status: 'Running'
    Build run completed successfully.
    Run 'ibmcloud ce buildrun get -n myjob-local-run-220420-150457582' to check the build run status.
    OK
    

    因為我們已指定 --wait 選項,所以 job create 指令的輸出會提供在建立工作之前建置執行進度的相關資訊。

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

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

    命令說明
    選項 說明
    --name 工作名稱。 請使用專案內唯一的名稱。 此值是必要項目。
    -名稱必須以小寫英數字元開頭及結尾。
    -名稱必須是 63 個字元或更少,且可以包含字母、數字及連字號 (-)。
    --build-source 通往本地來源的路徑。
    --wait 指定在建立工作之前等待映像檔建置完成。
  4. (選用) 使用 job get 指令來顯示工作的相關資訊,包括建置的相關資訊。

    ibmcloud ce job get --name myjob-local
    

    輸出範例

    [...]
    Name:          myjob-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
    Image:                private.us.icr.io/ce--abcde-glxo4kabcde/job-myjob-local
    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-local-run-220420-150457582
      Build Type:         local
      Build Strategy:     dockerfile-medium
      Timeout:            600
      Source:             .
      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-local-run-220420-150457582' for details..
    [...]
    
  5. 現在已建立工作並建置映像檔,請執行參照已建置映像檔的工作。 此範例指令會根據 myjob-local 工作配置來執行 myjobrun-local 工作執行。

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

    ibmcloud ce jobrun get --name myjobrun-local
    

    輸出範例

    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-local
    Image:                private.us.icr.io/ce--abcde-glxo4kabcde/job-myjob-local
    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:          2m40s
      Instance Statuses:
        Succeeded:  1
      Conditions:
        Type      Status  Last Probe  Last Transition
        Pending   True    2m44s       2m44s
        Running   True    2m40s       2m40s
        Complete  True    2m40s       2m40s
    Events:
      Type    Reason     Age                    Source                Messages
      Normal  Updated    2m41s (x3 over 2m45s)  batch-job-controller  Updated JobRun "myjobrun-local"
      Normal  Completed  2m41s                  batch-job-controller  JobRun completed successfully
    Instances:
      Name                Running  Status     Restarts  Age
      myjobrun-local-0-0  0/1      Succeeded  0         2m45s
    

既然已從儲存庫原始碼建立並執行您的工作,您可以使用 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 儲存庫中的範例