此 aspire deploy 命令會透過儲存在本機電腦上的快取組態檔來管理部署狀態。 這種快取機制透過保留佈建設定和參數來簡化重複部署,使後續部署更快、更有效率。
預設行為
此 aspire deploy 命令會根據您的應用程式和目標環境是否存在快取組態,自動管理部署狀態。
第一次部署
當您首次執行aspire deploy,或首次在目標--environment中執行該指令時,執行以下指令:
- 請求提供布建資訊(訂用帳戶識別碼、資源群組名稱、位置)。
- 提示部署參數 (例如 API 金鑰、連接字串)。
- 啟動部署程序。
- 將所有提示值和部署狀態儲存至
~/.aspire/deployments/{AppHostSha}/production.json。
後續部署
在後續 aspire deploy 執行時,命令:
- 偵測 ~/.aspire/deployments/{AppHostSha}/production.json的現有部署狀態檔案。
- 您將收到一個訊息,通知您將從快取檔案讀取設定。
- 提示確認載入快取的設定。
- 將配置從快取檔案載入到配置提供者中。
- 使用快取的值繼續部署 (不重新提示)。
針對特定環境的部署
不同的部署環境 (例如開發、預備和生產) 通常需要不同的設定、資源名稱和連接字串。 此 aspire deploy 命令支援特定於環境的部署,確保每個環境都維持隔離的部署狀態。
指定環境
使用 --environment 旗標部署至不同的環境:
aspire deploy --environment staging
首次部署至特定環境:
- 要求輸入所有佈建及參數資訊。
- 將部署狀態儲存至 ~/.aspire/deployments/{AppHostSha}/{environment}.json (例如, staging.json)。
後續部署:
- 讀取環境特定的快取檔案。
- 從快取狀態載入組態。
- 使用快取的值而不需要使用者提示。
環境變數支援
也可以使用環境變數來 DOTNET_ENVIRONMENT 指定部署環境:
export DOTNET_ENVIRONMENT=staging && aspire deploy
這與使用 --environment 旗標的行為相同,載入適當的快取組態檔。
快取管理
此 aspire deploy 命令提供管理快取部署狀態的機制,可讓您控制何時使用快取值,以及何時重新開始。
清除快取
使用 --clear-cache 旗標重設部署狀態:
aspire deploy --clear-cache
態度:
- 在刪除指定環境的快取之前提示確認。
- 刪除環境特定的部署狀態檔案 (例如, ~/.aspire/deployments/{AppHostSha}/production.json)。
- 提示輸入所有佈建和參數資訊,就像第一次部署一樣。
- 繼續部署作業。
- 不會將提示值儲存 至快取。
針對特定環境的快取清理
標誌 --clear-cache 會遵循環境內容:
aspire deploy --environment staging --clear-cache
這只會清除 staging.json 快取文件,而保持其他環境快取(如 production.json)不變。
檔案儲存位置
- 路徑模式:~/.aspire/deployments/{AppHostSha}/{environment}.json。
-
預設環境:
production。 - AppHostSha: 代表應用程式主機組態的雜湊值,確保部署狀態特定於每個應用程式組態。
在 CI/CD 管線中使用部署狀態
在持續整合和部署 (CI/CD) 管線中使用命令 aspire deploy 時,您可能想要在管線執行之間保存部署狀態。 此方法可用於維護一致的部署組態,而無需手動介入。
GitHub 動作範例
下列範例示範在GitHub Actions 工作流程中使用actions/cache動作來快取部署狀態:
name: Deploy to Azure
on:
push:
branches: [ main ]
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Cache Aspire deployment state
uses: actions/cache@v4
with:
path: ~/.aspire/deployments
key: aspire-deploy-${{ hashFiles('**/AppHost.csproj') }}-${{ github.ref }}
restore-keys: |
aspire-deploy-${{ hashFiles('**/AppHost.csproj') }}-
aspire-deploy-
- name: Deploy with Aspire CLI
run: aspire deploy --environment production
env:
AZURE_CREDENTIALS: ${{ secrets.AZURE_CREDENTIALS }}
此工作流程會快取 ~/.aspire/deployments 目錄,使用 AppHost 專案檔案雜湊和分支參考作為快取索引鍵。 此 actions/cache 動作會在部署步驟之前自動還原快取,並在工作完成後儲存快取的任何更新。 後續工作流程執行會還原快取的部署狀態,允許自動化部署,而無需重新提示輸入組態值。
謹慎
在 CI/CD 管線中快取部署狀態時,請確定您的管線具有適當的存取控制和秘密管理做法,因為快取狀態可能包含敏感的組態值。
安全性考慮
部署狀態檔案會儲存在電腦本機的 ~/.aspire/deployments 目錄中。 這些檔案包含佈建設定和參數值,包括可能與參數資源相關聯的密碼。
aspire deploy 指令遵循與 .NET 的使用者密碼管理器相同的安全模式:
- 檔案儲存在原始程式碼之外,以防止版本控制中意外的秘密洩漏。
- 密碼以純文字形式儲存在本機檔案系統中。
- 在您的使用者帳戶下執行的任何進程都可以存取這些檔案。
請考慮以下安全最佳實踐:
- 確保您的本機電腦已採取適當的安全措施。
- 從 ~/.aspire/deployments 目錄共用或備份檔案時要小心。
- 當您需要變更敏感參數值時,請使用
--clear-cache旗標。
重點
- 每個環境都會維護自己的隔離部署狀態。
- 除非手動清除,否則快取的值會在部署之間持續存在。
- 旗
--clear-cache標會執行一次性部署,而不會保存新值。 - 環境選擇可以透過旗標或環境變數來指定。
- 載入快取設定時,系統會要求您確認。
- 快取檔案會根據每個應用程式(透過 AppHostSha)和每個環境進行存儲。