ASP.NET Core - set runtime environment variable via web.config

Octopus.Script exported 2017-08-31 by baynenator belongs to ‘.NET Core’ category.

ASP.NET Core allows you specify environment variables in web.config - https://docs.microsoft.com/en-us/aspnet/core/hosting/aspnet-core-module#set-environment-variables

Parameters

When steps based on the template are included in a project’s deployment process, the parameters below can be set.

Web.Config Path

anc_WebConfigPath =

Typically an output variable from a previous step

Environment Variable Name

anc_EnvironmentVariableName =

Name of environment variable to set

Environment Variable Value

anc_EnvironmentVariableValue =

Value of environment variable to set

Script body

Steps based on this template will execute the following PowerShell script.

Param(
    [string]$anc_WebConfigPath,
    [string]$anc_EnvironmentVariableName,
    [string]$anc_EnvironmentVariableValue
)

$ErrorActionPreference = "Stop"

function Get-Parameter($Name, [switch]$Required, [switch]$TestPath) {

    $result = $null

    if ($OctopusParameters -ne $null) {
        $result = $OctopusParameters[$Name]
    }

    if ($result -eq $null) {
        $variable = Get-Variable $Name
        if ($variable -ne $null) {
            $result = $variable.Value
        }
    }

    if ($result -eq $null -or $result -eq "") {
        if ($Required) {
            throw "Missing parameter value $Name"
        }
    }

    if ($TestPath) {
        if (!(Test-Path $result -PathType Leaf)) {
            throw "Could not find $result"
        }
    }

    return $result
}

& {
    Param(
        [string]$anc_WebConfigPath,
        [string]$anc_EnvironmentVariableName,
        [string]$anc_EnvironmentVariableValue
    )

    $xml = (Get-Content $anc_WebConfigPath) -as [Xml]
    $aspNetCore = $xml.configuration.location.'system.webServer'.aspNetCore
    $environmentVariables = $aspNetCore.environmentVariables

    if (!$environmentVariables) {
        $environmentVariables = $xml.CreateElement("environmentVariables");
        $aspNetCore.AppendChild($environmentVariables)
    }

    $environmentVariable = $environmentVariables.environmentVariable | Where-Object {$_.name -eq $anc_EnvironmentVariableName}

    if ($environmentVariable) {
        $environmentVariable.value = $anc_EnvironmentVariableValue
    }
    elseif ($environmentVariables) {
        $environmentVariable = $xml.CreateElement("environmentVariable");
        $environmentVariable.SetAttribute("name", $anc_EnvironmentVariableName);
        $environmentVariable.SetAttribute("value", $anc_EnvironmentVariableValue);
        $x = $environmentVariables.AppendChild($environmentVariable)
    }
    else {
        throw "Could not find 'configuration/system.webServer/aspNetCore/environmentVariables' element in web.config"
    }

    try {
        $xml.Save((Resolve-Path $anc_WebConfigPath))
    }
    catch {
        throw "Could not save web.config because: $_.Exception.Message"
    }
} `
(Get-Parameter 'anc_WebConfigPath' -Required -TestPath) `
(Get-Parameter 'anc_EnvironmentVariableName' -Required) `
(Get-Parameter 'anc_EnvironmentVariableValue' -Required)

Provided under the Apache License version 2.0.

Report an issue

To use this template in Octopus Deploy, copy the JSON below and paste it into the Library → Step templates → Import dialog.

{
  "Id": "c7f96ab8-a0d3-4f01-928e-c8cb78ab108c",
  "Name": "ASP.NET Core - set runtime environment variable via web.config",
  "Description": "ASP.NET Core allows you specify environment variables in web.config - https://docs.microsoft.com/en-us/aspnet/core/hosting/aspnet-core-module#set-environment-variables",
  "Version": 3,
  "ExportedAt": "2017-08-31T06:20:39.415Z",
  "ActionType": "Octopus.Script",
  "Author": "baynenator",
  "Parameters": [
    {
      "Id": "b1b74503-0f3d-4519-8ec6-d6a4aace9086",
      "Name": "anc_WebConfigPath",
      "Label": "Web.Config Path",
      "HelpText": "Typically an output variable from a previous step",
      "DefaultValue": "",
      "DisplaySettings": {
        "Octopus.ControlType": "SingleLineText"
      },
      "Links": {}
    },
    {
      "Id": "5fe18f04-de84-445e-bb69-81ed0d39980f",
      "Name": "anc_EnvironmentVariableName",
      "Label": "Environment Variable Name",
      "HelpText": "Name of environment variable to set",
      "DefaultValue": "",
      "DisplaySettings": {
        "Octopus.ControlType": "SingleLineText"
      },
      "Links": {}
    },
    {
      "Id": "c9099a01-7de3-4724-8d6d-e26d8bf0fd21",
      "Name": "anc_EnvironmentVariableValue",
      "Label": "Environment Variable Value",
      "HelpText": "Value of environment variable to set",
      "DefaultValue": "",
      "DisplaySettings": {
        "Octopus.ControlType": "SingleLineText"
      },
      "Links": {}
    }
  ],
  "Properties": {
    "Octopus.Action.Script.Syntax": "PowerShell",
    "Octopus.Action.Script.ScriptSource": "Inline",
    "Octopus.Action.RunOnServer": "false",
    "Octopus.Action.Script.ScriptBody": "Param(\n    [string]$anc_WebConfigPath,\n    [string]$anc_EnvironmentVariableName,\n    [string]$anc_EnvironmentVariableValue\n)\n\n$ErrorActionPreference = \"Stop\"\n\nfunction Get-Parameter($Name, [switch]$Required, [switch]$TestPath) {\n\n    $result = $null\n\n    if ($OctopusParameters -ne $null) {\n        $result = $OctopusParameters[$Name]\n    }\n\n    if ($result -eq $null) {\n        $variable = Get-Variable $Name\n        if ($variable -ne $null) {\n            $result = $variable.Value\n        }\n    }\n\n    if ($result -eq $null -or $result -eq \"\") {\n        if ($Required) {\n            throw \"Missing parameter value $Name\"\n        }\n    }\n\n    if ($TestPath) {\n        if (!(Test-Path $result -PathType Leaf)) {\n            throw \"Could not find $result\"\n        }\n    }\n\n    return $result\n}\n\n& {\n    Param(\n        [string]$anc_WebConfigPath,\n        [string]$anc_EnvironmentVariableName,\n        [string]$anc_EnvironmentVariableValue\n    )\n\n    $xml = (Get-Content $anc_WebConfigPath) -as [Xml]\n    $aspNetCore = $xml.configuration.location.'system.webServer'.aspNetCore\n    $environmentVariables = $aspNetCore.environmentVariables\n\n    if (!$environmentVariables) {\n        $environmentVariables = $xml.CreateElement(\"environmentVariables\");\n        $aspNetCore.AppendChild($environmentVariables)\n    }\n\n    $environmentVariable = $environmentVariables.environmentVariable | Where-Object {$_.name -eq $anc_EnvironmentVariableName}\n\n    if ($environmentVariable) {\n        $environmentVariable.value = $anc_EnvironmentVariableValue\n    }\n    elseif ($environmentVariables) {\n        $environmentVariable = $xml.CreateElement(\"environmentVariable\");\n        $environmentVariable.SetAttribute(\"name\", $anc_EnvironmentVariableName);\n        $environmentVariable.SetAttribute(\"value\", $anc_EnvironmentVariableValue);\n        $x = $environmentVariables.AppendChild($environmentVariable)\n    }\n    else {\n        throw \"Could not find 'configuration/system.webServer/aspNetCore/environmentVariables' element in web.config\"\n    }\n\n    try {\n        $xml.Save((Resolve-Path $anc_WebConfigPath))\n    }\n    catch {\n        throw \"Could not save web.config because: $_.Exception.Message\"\n    }\n} `\n(Get-Parameter 'anc_WebConfigPath' -Required -TestPath) `\n(Get-Parameter 'anc_EnvironmentVariableName' -Required) `\n(Get-Parameter 'anc_EnvironmentVariableValue' -Required)\n",
    "Octopus.Action.Script.ScriptFileName": null,
    "Octopus.Action.Package.FeedId": null,
    "Octopus.Action.Package.PackageId": null
  },
  "Category": ".NET Core",
  "HistoryUrl": "https://github.com/OctopusDeploy/Library/commits/master/step-templates//opt/buildagent/work/75443764cd38076d/step-templates/aspnetcore-set-environment-variable.json",
  "Website": "/step-templates/c7f96ab8-a0d3-4f01-928e-c8cb78ab108c",
  "Logo": "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",
  "$Meta": {
    "Type": "ActionTemplate"
  }
}

History

Page updated on Thursday, August 31, 2017