Octopus Deploy 設定多環境變數

  1. 前言
  2. 新增組態設定 develop、qc
  3. 調整程式
  4. 透過 .NET Configuration Transforms 替換 Web.config 多環境設定檔
  5. 透過 Octopus Variable 替換 Web.config 設定值
  6. 結論

前言

在 .Net framework 專案,專案參數通常都設定在 Web.config
本篇記錄在 Octopus Deploy 如何因應各環境各自轉換 Web.config

開發工具: VS2019

新增組態設定 develop、qc

開啟組態管理員

新增組態 develop、qc

右鍵 Web.config > 新增設定轉換

設定 Web.develop.config、Web.qc.config 建置動作為內容

修改 Web.config 新增 Env 參數
configuration > appSettings

<add key="Env" value="local" />

修改 Web.develop.config

<?xml version="1.0" encoding="utf-8"?>

<!-- 如需使用 web.config 轉換的詳細資訊,請前往 https://go.microsoft.com/fwlink/?LinkId=125889 -->

<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">
    <appSettings>
        <add key="Env" value="develop" xdt:Transform="SetAttributes" xdt:Locator="Match(key)" />
    </appSettings>
</configuration>

修改 Web.qc.config

<?xml version="1.0" encoding="utf-8"?>

<!-- 如需使用 web.config 轉換的詳細資訊,請前往 https://go.microsoft.com/fwlink/?LinkId=125889 -->

<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">
    <appSettings>
        <add key="Env" value="qc" xdt:Transform="SetAttributes" xdt:Locator="Match(key)" />
    </appSettings>
</configuration>

調整程式

修改 Views > Home > Index.cshtml

@using System.Configuration;
@{
    ViewBag.Title = "Home Page";
}

<h1>Env @ConfigurationManager.AppSettings["Env"]</h1>

先在本機按F5 查看結果

Env = local

測試內容主要為 查看 Env 確認 Octopus Deploy 部署機器成功後是否正確依照各環境替換 Env

透過 .NET Configuration Transforms 替換 Web.config 多環境設定檔

因在 w4560000 - Octopus Deploy 設定 .Net MVC 專案 Deployment Process
我們啟用了 .NET Configuration Transforms > Run default XML transforms
所以 Octopus Deploy 在部署時 會自動幫我們轉換 Web.config參數

比如 部署 develop 機器時,可查看 TASK LOG 確認 部署流程,可以發現 Octopus Deploy 轉換了 Web.develop.config 設定值

當 develop、qc 都部署完後 查看一下是否替換成功

develop

qc

透過 Octopus Variable 替換 Web.config 設定值

當有啟用 .NET Configuration Variables 時,則代表 可透過 Octopus 自定義參數 來替換設定檔

設定 Octopus Variable Env 參數

設定好參數後,若要用已經建立過的 release 版本進行部署,則要記得更新參數,才吃得到最新的設定

部署成功後 再看一下 develop、qc 機器

develop

qc

結論

可以發現 Octopus Variable 的權重是最大的,當 Octopus Variable 有設定對應的 Key 時,程式內的設定都會被蓋掉


轉載請註明來源,若有任何錯誤或表達不清楚的地方,歡迎在下方評論區留言,也可以來信至 leozheng0621@gmail.com
如果文章對您有幫助,歡迎斗內(donate),請我喝杯咖啡

斗內💰

×

歡迎斗內

github