18 搭售品與 CI/CD (預覽版)
搭售品會定義 Oracle AI Data Platform Workbench 資源在工作區與環境中進行封裝、啟動多版本功能、共用及部署的方式。
您可以建立工作和代理程式的組合。搭售品會建立在 Git 資料夾中,以便確認搭售品檔案並將其推送至 Git 儲存庫。您包含在組合中的資源可以來自工作區中的任何位置。如果選取的資源參照支援的檔案或相依性 (例如記事本、命令檔或運算),這些參照就會包含在組合中,如此就可以在另一個環境中部署資源,而不需要手動重新建立相同的元件。
您可以從工作區建立組合,並選取要在建立時包含的 Oracle AI Data Platform Workbench 資源。您可以修改現有的組合以新增或移除資源。搭售資源可讓您將相關工作和代理程式分組,並將它們部署到其他沒有相依性的環境。
您可以透過 Git 資料夾,將組合確認並推送至 Git 儲存區域。然後,使用者可將搭售品提取至自己的環境並進行部署。變更確認並推送至 Git 儲存區域後,其他環境即可使用組合檔案變更。每當使用者從 Git 儲存區域提取更新的組合時,他們就會收到最新的確認資源檔案。
搭售品概念
| 概念 | 意義 | 使用者動作 |
|---|---|---|
| Git 資料夾 | 連線至 Git 儲存區域和分支的 AI 資料平台資料夾。只能在 Git 資料夾中建立搭售品。 | 請先建立或開啟 Git 資料夾,再建立組合。 |
| Bundle | 定義所選資源及其相依性的可部署套裝程式。 | 從工作區建立組合,然後選取資源,例如工作或代理程式流程。 |
| 組合課程內容 | 產生的檔案,描述部署所需的資源、變數、目標設定值和使用者自建物件。 | 建立或同步後複查產生的內容。準備好時,透過 Git 確認並推送搭售品。 |
| Target | 在來源環境外部部署組合時所使用的環境或工作區組態。 | 提供必須依環境變更的值,例如工作區索引鍵、證明資料名稱、權杖索引鍵或參數預設值。 |
| 已部署項目 | 由目標工作區中的組合部署所建立或更新的資源。 | 您可以使用「建置」頁籤,視需要建置、複查建置的項目、執行工作以及永久清除建置的資源。 |
| 同步 | 此組合動作會重新整理最新來源資源的組合資源和相依性。 | 變更組合資源後執行同步,然後將重新整理過的組合檔案確認至 Git。 |
開始之前
- 建立 Git 證明資料和指向組合檔案所使用之儲存區域和分支的 Git 資料夾。
- 請先確認來源資源位於工作區中,並且先儲存後再建立或同步組合。
- 若要進行跨環境部署,請確認目標工作區具備必要的權限和運算能力。
- 對於使用加密密碼的工作或記事本,請在目標證明資料存放區中建立必要的指定證明資料。組合檔案應依名稱或變數參照證明資料,不包含加密密碼值。
- 請在建立或同步組合後確認並推送組合檔案變更,讓其他環境可以提取最新的組合定義。
建立搭售品之後產生的收益 (預覽)
搭售品建立之後,Oracle AI Data Platform 會將您產生的檔案寫入搭售品資料夾。
確切的檔案名稱因資源類型而異,但建立的組合通常包含最上層組合資訊清單、資源定義、使用者自建物件資料夾及選擇性的覆寫檔案。
| 產生的項目 | 描述 |
|---|---|
aidp_workbench.yaml |
組合清單。識別建置期間所使用的組合、包含的資源、變數以及目標區段。 |
.aidp/resource_origins.yaml |
資源定義。描述工作、記事本工作、運算參照或代理程式流程等資源。 |
.aidp/overrides.yaml |
覆寫檔案或目標區段。保留不同環境的值,例如工作區識別碼、參數預設值、證明資料名稱或權杖索引鍵。 |
.aidp/aidp.state.json |
追蹤從組合部署的資源。用於未來的部署和永久清除作業。 |
jobs/ |
職務描述子與職務相依性。 |
agentflows/ |
代理程式描述區和代理程式相依性。 |
artifacts/ |
構件資料夾。複製的程式碼、記事本以及支援的檔案使用者自建物件。 |
同步搭售品 (預覽)
您可以同步組合來更新組合中的資源與相依性,並進行最新的變更。
同步會使用搭售品記錄的來源中繼資料,從建立搭售品時擷取的來源工作和代理程式流程重新建立搭售品。來源描述資料會儲存在 .aidp/resource_origins.yaml 中,而且必須符合要求的執行處理和工作區。此作業會重新整理來源控制的組合內容,同時保留組合識別和程式實際執行描述資料。
進行同步時,服務會在組合 .aidp 目錄下暫存重新整理過的組合快照、比較現有和暫存的描述區、保留現有的變數別名,並儘可能覆寫參照、合併現有的資訊清單預設變數,然後將重新整理過的來源控制檔案升級回組合根目錄。
Sync 會保留環境特定檔案和部署程式實際執行檔案,例如 .aidp/overrides.yaml 和 .aidp/aidp.state.json。這些檔案不會被重新整理的來源快照取代。
- 來源工作區中的隨附記事本、工作、代理程式流程、運算參照、參數或相依性已變更。
- 組合工作現在會指向其他記事本或已更新任務參數。
- 代理程式組態、提示參數、模型設定或 AI 運算相依性已變更。
- 您需要 Git 資料夾包含最新產生的搭售品檔案,才能推送至其他環境。
- 瀏覽至您要在工作區中同步處理的搭售品。
- 按一下動作。
- 按一下同步。同步完成後會通知您。
建議的搭售品促銷工作流程
建議您依照 Oracle AI Data Platform 中 Git 組合的開發、封裝、版本、提取、設定、部署及驗證工作流程進行操作。
| 階段 | 動作 | 結果 |
|---|---|---|
| 開發 | 在來源工作區中建立或更新記事本、工作、運算設定值或代理程式流程。 | 來源資源包含最新的預期行為。 |
| 套裝程式 | 建立搭售品,或在現有搭售品上執行 Sync。 | 產生的組合包檔案反映目前的來源資源和相依性。 |
| Version | 透過 Git 資料夾複查、確認及推送組合資料夾。 | 遠端儲存區域包含可建置的組合定義。 |
| 提取 | 在目標工作區中,提取 Git 資料夾變更。 | 目標工作區包含最新的組合檔案。 |
| 設定 | 設定目標特定值,例如工作區索引鍵、參數預設值、證明資料名稱、權杖索引鍵或程式實際執行設定值。 | 此組合已可供目標環境使用。 |
| 部署 | 開啟「建置」組合頁籤,然後按一下「建置」。 | 維護作業會建立或更新已部署的資源。 |
| 驗證 | 執行已部署的工作或測試已部署的代理程式流程,並檢查日誌或輸出。 | 系統會先驗證目標環境,然後再繼續升級。 |
搭售品變數 (預覽)
當組合需要可針對每個目標環境變更的部署階段值,而不需要編輯資源定義時,請使用組合變數。
若要開始使用含有組合的變數,您必須在組合的 aidp_workbench.yaml 檔案中定義含有預設值的變數名稱,並在需要時定義環境特定的覆寫。然後,您可以從產生的定義檔中參照這些變數。
範例變數工作流程
- 在
aidp_workbench.yaml的defaults > variables下定義變數名稱。 - 在相同的
aidp_workbench.yaml檔案中,選擇性地定義targets > <environment> > variables下的環境特定值。 - 使用目標覆寫來設定建置階段值,例如開發區域、QA 區域、生產區域、綱要名稱、證明資料名稱、記號索引鍵或參數預設值。
- 找不到相符的目標環境時,Oracle AI Data Platform 會使用 aidp_workbench.yaml 的預設變數值。
- 在任何產生的定義檔中使用變數,例如工作定義、計算定義、工作定義或其他 YAML 定義檔。
- 使用 ${var.<variable_name>>} 參照變數,將 <<variable_name>> 取代為在 aidp_workbench.yaml 中定義的實際變數名稱。
- 當 UI 預期有指定的預留位置時,在如代理程式提示或工具定義等位置使用資源特定的預留位置語法。
- 若為僅限暫時部署的變更,請建立 .aidp/overrides.yaml,並在該處定義變數值。
組合變數語法
變數定義必須以 aidp_workbench.yaml 撰寫。其他組合定義檔只能參照變數名稱。
| 定義 | 語法 | 範例 |
|---|---|---|
aidp_workbench.yaml 中的變數定義
|
|
|
aidp_workbench.yaml 中的目標特定覆寫 |
|
|
| 定義檔案中的變數參考 | ${var.<<variable_name>>} |
value: "${var.deployment_region}" |
| 代理程式提示或工具欄位中的指定預留位置 | {{variable_name}} |
Generate a summary about {{topic}}. |
範例:工作參數變數
bundle:
name: namedVariableJobDemo
resources:
jobs:
- namedVariableJobDemo
defaults:
variables:
job_param_value_default: "cloud data governance"
jobs:
namedVariableJobDemo:
tasks:
- taskKey: Task_956691
parameters:
- name: param_key
value: "${var.job_param_value_default}" 記事本工作可以透過工作使用的參數名稱讀取解析值:
param_value = odiUtils.parameters.getParameter("param_key", "fallback value")
print(param_value)範例:aidp_workbench.yaml 變數定義
aidp_workbench.yaml 中的變數 agent_topic_default。找不到相符的目標環境,或未選取環境或暫時置換提供變數時,會套用預設值。每個目標都可以覆寫該工作區的相同變數名稱。defaults:
variables:
agent_topic_default: "Oracle AI Data Platform"
targets:
dev:
- aidp_ocid: "ocid1.aidataplatformdev.oc1.iad.exampledev"
workspace_key: "6271b138-6f2c-4e8c-a9e5-013e17079955"
variables:
agent_topic_default: "AIDP Dev Workspace"
qa:
- aidp_ocid: "ocid1.aidataplatformdev.oc1.iad.exampleqa"
workspace_key: "daa0e9b5-f8d7-4ae8-b728-2984e68a74c0"
variables:
agent_topic_default: "AIDP QA Workspace"
prod:
- aidp_ocid: "ocid1.aidataplatform.oc1.iad.exampleprod"
workspace_key: "83be5b8c-bb8d-4ec4-a8fb-16b50b0e4d4c"
variables:
agent_topic_default: "AIDP Production Workspace" 任何支援組合變數的組合定義檔,都可以參照相同的變數名稱。舉例而言:
tasks/agentTopic.task.yaml
parameters:
- name: topic
value: "${var.agent_topic_default}"範例:檔案名稱與解析度
testNamedVarBundleJob/
aidp_workbench.yaml
jobs/
namedVariableJobDemo.job.json
artifacts/
namedVarNotebookDemo.ipynb| File | 包含的內容 | 變數或解析值 |
|---|---|---|
aidp_workbench.yaml |
定義預設值 > 變數和選擇性目標覆寫下的變數。 | 變數:job_param_value_default。
|
jobs/namedVariableJobDemo.job.json |
使用變數作為工作參數 param_key 的值。 | 參考資料:${var.job_param_value_default}。
|
artifacts/namedVarNotebookDemo.ipynb |
在執行時期讀取解析的工作參數。 | 筆記本在解析後會讀取 param_key。
|
aidp_workbench.yaml 中的預設值和目標覆寫:defaults:
variables:
job_param_value_default: "cloud data governance"
targets:
dev:
variables:
job_param_value_default: "space tourism"
qa:
variables:
job_param_value_default: "data quality validation"
prod:
variables:
job_param_value_default: "customer operations"工作定義接著可以在 job/namedVariableJobDemo.job.json 中使用相同的變數名稱。工作定義、計算定義、工作定義和其他支援組合變數產生的 YAML 定義檔案都可以使用相同的語法:
"parameters": [
{
"name": "param_key",
"value": "${var.job_param_value_default}"
}
]| 部署目標 | 變數解決方法 | 筆記本接收 |
|---|---|---|
| 沒有符合的目標 | 使用 aidp_workbench.yaml 的預設值。 | param_key = cloud data governance
|
| 裝置 | 使用 dev 目標覆寫。 | param_key = space tourism
|
| qa | 使用 qa 目標覆寫。 | param_key = data quality validation |
| 產品 | 使用產品目標修訂。 | param_key = customer operations |
解決順序
.aidp/overrides.yaml 提供變數值時, AI Data Platform 會使用該暫時值進行下一個部署。否則, AI 資料平台會先從選取的目標解析變數。如果找不到相符的目標環境,或選取的目標未覆寫變數,則 AI Data Platform 會回到 aidp_workbench.yaml 中的 defaults > variables。如果參照的變數沒有可用的值,則在使用記事本備用值之前,部署或工作執行可能會失敗。
下一個部署的暫時覆寫
aidp_workbench.yaml 中的定義足以進行一般搭售品促銷。如果使用者需要暫時覆寫變數,請在組合資料夾中建立 .aidp/overrides.yaml,並在該處定義變數值。AI 資料平台在下一個部署期間使用這些值。
.aidp/
overrides.yamlvariables:
agent_topic_default: "tuesday"| File | 範例值 | 使用時 |
|---|---|---|
aidp_workbench.yaml defaults
|
Oracle AI Data Platform | 當沒有相符的目標或覆寫檔案提供變數時使用。 |
aidp_workbench.yaml target dev |
AIDP 開發工作區 | 部署至開發且沒有暫時覆寫時使用。 |
.aidp/overrides.yaml |
tuesday | 在下一個部署期間用作暫時值。 |
附註:
使用.aidp/overrides.yaml 作為暫時部署值。將持久的預設值和環境特定值保留在 aidp_workbench.yaml 中,以便透過 Git 保持可重現組合。
範例:代理程式提示變數
對於支援具名預留位置的代理程式流程提示文字或工具定義,請在變數名稱前後使用雙大括號。
Prompt text:
You are a demo assistant. For the given {{topic}}, generate 3 short bullet points explaining why it matters.
Tool parameter:
Name: /{{topic}}
Default value: sunday 附註:
最佳做法是,您應該針對預期會在部署之間變更的值使用變數。當變數可改為帶有值時,避免將環境特定值直接內嵌至記事本、工作或代理程式流程文字中。範例:不含運算的工作流程
您可以為工作流程建立搭售品,該工作流程不會在部署過程中自動建立運算叢集。首先,在 aidp_workbench.yaml 中建立變數:
defaults:
variables:
job_compute_key: "select_compute"jobs/ 資料夾中,找到工作檔案 <JobName>.job.json。編輯工作檔案時,會以新建立的變數取代 "clusterKey" 值:"clusterKey" : "${var.job_compute_key}",組合變數與證明資料存放區 (預覽)
當組合工作或記事本需要在程式實際執行時查詢加密密碼時,您可以將變數與證明資料存放區搭配使用。
您的變數應該要有證明資料名稱和權杖金鑰。實際的加密密碼值必須留在目標證明資料存放區中,而且不應該確認至 Git。
範例工作流程:使用變數搭配證明資料存放區
- 在證明資料存放區中建立證明資料和權杖金鑰。
- 定義證明資料名稱和權杖索引鍵的變數。
- 將這些變數當作參數傳送至工作或記事本。
- 在程式實際執行時,記事本會讀取參數並呼叫證明資料 API 以擷取加密密碼。如果證明資料名稱、記號索引鍵或權限錯誤,工作可能會因證明資料查詢錯誤而失敗。
附註:
請勿記錄或確認組合檔案中的加密密碼值。組合組態應該參照證明資料名稱、記號索引鍵以及目標變數;證明資料存放區仍是加密密碼資料的來源。範例:證明資料名稱和記號索引鍵變數
bundle:
name: credentialVariableDemoBundle
resources:
jobs:
- credentialLookupJob
defaults:
variables:
cred_key: default_credential_name
token_key: default_token_key
targets:
dev:
workspace_key: dev_workspace
variables:
cred_key: dev_credential_store_entry
token_key: dev_token
qa:
workspace_key: qa_workspace
variables:
cred_key: qa_credential_store_entry
token_key: qa_token
prod:
workspace_key: prod_workspace
variables:
cred_key: prod_credential_store_entry
token_key: prod_token
jobs:
credentialLookupJob:
tasks:
- taskKey: Task_854239
parameters:
- name: cred_key
value: "${var.cred_key}"
- name: token_key
value: "${var.token_key}" 記事本會讀取參數值,並使用它們從證明資料存放區查詢加密密碼:
cred_name = odiUtils.parameters.getParameter("cred_key", "defaultCredValue")
token_name = odiUtils.parameters.getParameter("token_key", "defaultTokenValue")
secret = aidpUtils.secrets.get(name=cred_name, key=token_name)
if secret:
print("Credential lookup succeeded")
else:
raise Exception("Credential lookup failed")| 環境 | cred_key 值 | token_key 值 | 證明資料存放區需求 |
|---|---|---|---|
| 裝置 | 裝置證明資料存放區項目 | 裝置記號 | 使用金鑰 dev_token 建立 dev_credential_store_entry。 |
| qa | 中文 _ English | 繁體中文 | 使用金鑰 qa_token 建立 qa_credential_store_entry。 |
| 產品 | 產品證明資料存放區項目 | 產品權杖 | 使用金鑰 prod_token 建立 prod_credential_store_entry。 |
疑難排解搭售品 (預覽)
如果您在建立和管理 Git 組合時發生問題,請查看下列潛在解決方案問題清單。
| 徵兆 | 可能的原因 | 建議的動作 |
|---|---|---|
| 「建立搭售品」無法使用,或無法建立搭售品。 | 使用者不在 Git 資料夾中,或沒有必要的工作區權限。 | 瀏覽至 Git 資料夾並確認使用者可以建立工作區資源。 |
| 同步完成,但另一個環境看不到更新。 | 重新整理的組合檔案未確認、推送或提取至目標 Git 資料夾中。 | 確認並從來源 Git 資料夾推送,然後在部署之前提取目標工作區。 |
| 「部署」頁籤未顯示任何已部署的項目。 | 尚未部署搭售品,或部署未順利完成。 | 按一下「部署」並等待完成通知。如果部署失敗,請複查日誌。 |
| 部署的工作因證明資料查尋錯誤而失敗。 | 目標證明資料名稱、記號索引鍵或存取權限與組合組態不符。 | 重新部署之前,請先在目標證明資料存放區中建立證明資料或更新目標變數。 |
| 代理程式流程部署失敗或以非作用中運算開始。 | 目標環境可能沒有相容的 AI 運算、區域、模型或相依性設定值。 | 複查目標覆寫、運算狀態、模型可用性及部署日誌。 |
| 部署後不會反映來源記事本或代理程式流程的變更。 | 已部署搭售品,但未先從更新的來源資源進行同步。 | 在搭售品上執行 Sync、確認並發送重新整理過的搭售品檔案、將它們提取到目標中,然後再次部署。 |