共用方式為


部署狀態快取

aspire deploy 命令會透過儲存在本機電腦上的快取組態檔來管理部署狀態。 這種快取機制透過保留佈建設定和參數來簡化重複部署,使後續部署更快、更有效率。

預設行為

aspire deploy 命令會根據您的應用程式和目標環境是否存在快取組態,自動管理部署狀態。

第一次部署

當您首次執行aspire deploy,或首次在目標--environment中執行該指令時,執行以下指令:

  1. 請求提供布建資訊(訂用帳戶識別碼、資源群組名稱、位置)。
  2. 提示部署參數 (例如 API 金鑰、連接字串)。
  3. 啟動部署程序。
  4. 將所有提示值和部署狀態儲存至 ~/.aspire/deployments/{AppHostSha}/production.json

後續部署

在後續 aspire deploy 執行時,命令:

  1. 偵測 ~/.aspire/deployments/{AppHostSha}/production.json的現有部署狀態檔案。
  2. 您將收到一個訊息,通知您將從快取檔案讀取設定。
  3. 提示確認載入快取的設定。
  4. 將配置從快取檔案載入到配置提供者中。
  5. 使用快取的值繼續部署 (不重新提示)。

針對特定環境的部署

不同的部署環境 (例如開發、預備和生產) 通常需要不同的設定、資源名稱和連接字串。 此 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

態度:

  1. 在刪除指定環境的快取之前提示確認。
  2. 刪除環境特定的部署狀態檔案 (例如, ~/.aspire/deployments/{AppHostSha}/production.json)。
  3. 提示輸入所有佈建和參數資訊,就像第一次部署一樣。
  4. 繼續部署作業。
  5. 不會將提示值儲存 至快取。

針對特定環境的快取清理

標誌 --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)和每個環境進行存儲。

另請參閱