Octopus.Script exported 2020-08-13 by pauby belongs to ‘Chocolatey’ category.
Allows managing Chocolatey Package sources.
Parameters
When steps based on the template are included in a project’s deployment process, the parameters below can be set.
(Required) Source Name
ChocolateySourceName =
The name of the source to manage. Examples:
- production-repo
- my-smb-share
(Required) Source Action
ChocolateySourceAction = add
The action to perform on the source.
Note that you can use the ‘add’ action to change a source configuration. So you may not need to remove it and add it again.
(Required / Optional) Source Location
ChocolateySourceLocation =
This can be a folder / file share or an http / https location. If it is a URL, it will be a location you can go to in a browser and it returns OData with something that says ‘Packages’ in the browser, similar to what you see when you go to https://chocolatey.org/api/v2/.
Required with ‘add’ action. Optional with all other actions.
Examples:
- c:\local-packages
- \\my-server\packages
- https://internalserver.local/packages/ (note the trailing slash)
(Optional) Source Priority
ChocolateySourcePriority =
The priority order of this source as compared to other sources, lower is better. Defaults to 0 (no priority).
All priorities above 0 will be evaluated first, then zero-based values will be evaluated in config file order.
Available in Chocolatey version 0.9.9.9 and later.
(Optional) Allow Self Service Source
ChocolateySourceAllowSelfService =
Should this source be allowed to be used with self-service? Defaults to false.
Available in Chocolatey For Business version 0.10.4 and later. Requires feature ‘useBackgroundServiceWithSelfServiceSourcesOnly’ to be enabled.
(Optional) Enable Admin Only Source
ChocolateySourceEnableAdminOnly =
Should this source be visible to non-administrators?
Requires Chocolatey For Business Extension version 1.12.2 or later and Chocolatey version 0.10.8 or later.
(Optional) Source Authentication Username
ChocolateySourceUsername =
Username to authenticate to the source with.
(Optional) Source Authentication Password
ChocolateySourcePassword =
Password to authenticate to the source with.
(Optional) Source Certificate Path
ChocolateySourceCertificatePath =
Path to the PFX client certificate used for an x509 authenticated source.
NOTE: The certificate path must exist and be local to the computer this step is running on. So you will need to add additional steps to ensure the certificate is available at the path.
Available in Chocolatey from version 0.9.10.
(Optional) Chocolatey Certificate Password
ChocolateySourceCertificatePassword =
The client certificate’s password to the source. Can only be used if a client certificate path has been provided.
Available in Chocolatey version 0.9.10 or later.
(Optional) Other Parameters
ChocolateySourceOtherParameters =
Add additional Chocolatey parameters here, separated by spaces, and they will be prefixed to the end of the Chocolatey command being executed.
Script body
Steps based on this template will execute the following PowerShell script.
[Net.ServicePointManager]::SecurityProtocol = [Net.ServicePointManager]::SecurityProtocol -bor [Net.SecurityProtocolType]::Tls12
$chocolateyBin = [Environment]::GetEnvironmentVariable("ChocolateyInstall", "Machine") + "\bin"
if(-not (Test-Path $chocolateyBin)) {
Write-Host "Environment variable 'ChocolateyInstall' was not found in the system variables. Attempting to find it in the user variables..."
$chocolateyBin = [Environment]::GetEnvironmentVariable("ChocolateyInstall", "User") + "\bin"
}
$choco = "$chocolateyBin\choco.exe"
if (-not (Test-Path $choco)) {
throw "Chocolatey was not found at $chocolateyBin."
}
# Report the actual version here
$chocoVersion = & $choco --version
Write-Host "Running Chocolatey version $chocoVersion"
# You cannot use [version] with SemVer 2 versions
# this allows pre-release versions to still work by stripping everything after the '-' as we could have
# 0.10.15-beta-20200101. We are only interested in the major.minor.build version
$chocoVersion = ($chocoVersion -split '-')[0].ToString()
# default args
$chocoArgs = @('source', $ChocolateySourceAction, '--yes')
# we need a source name
if ([string]::IsNullOrEmpty($ChocolateySourceName)) {
throw "To manage a source you need to provide a source name."
}
else {
$chocoArgs += "--name=""'$ChocolateySourceName'"""
}
# we are adding a source - check all of the parameters
if ($ChocolateySourceAction -eq 'add') {
if ([string]::IsNullOrEmpty($ChocolateySourceLocation)) {
throw 'To add a source you need to provide a source location.'
}
else {
$chocoArgs += "--source=""'$ChocolateySourceLocation'"""
}
# source priority
if (-not [string]::IsNullOrEmpty($ChocolateySourcePriority)) {
if ([version]$chocoVersion -ge [version]'0.9.9.9') {
$chocoArgs += "--priority=""'$ChocolateySourcePriority'"""
}
else {
Write-Warning 'To use a source priority you must have Chocolatey version 0.9.9.9 or later. Ignoring source priority.'
}
}
# allow self service
if ($ChocolateySourceAllowSelfService) {
$edition = & $choco
if ($edition -like '*Business*' -and [version]$chocoVersion -ge [version]'0.10.4') {
$chocoArgs += '--allow-self-service'
}
else {
Write-Warning 'To allow self service on a source you must have Chocolatey For Business version 0.10.4 or later. Ignoring allowing self service.'
}
}
# allow admin only
if ($ChocolateySourceEnableAdminOnly) {
# we are not going to check for the Business Edition but the chocolatey.extension version need to check we have the chocolatey.extension installed
$licensedExtension = & $choco list chocolatey.extension --exact --limit-output --local-only | ConvertFrom-Csv -Delimiter '|' -Header 'Name', 'Version'
# lets get the major.minor.build licensed extension version by stripping any pre-release
$licensedExtensionVersion = ($licensedExtension.Version -split '-')[0].ToString()
if ((-not [string]::IsNullOrEmpty($licensedExtensionVersion)) -and ([version]$chocoVersion -ge [version]'0.10.8' -and [version]$licensedExtensionVersion -ge [version]'1.12.2')) {
$chocoArgs += '--enable-admin-only'
}
else {
Write-Warning 'To enable admin only on a source you must have Chocolatey For Business Licensed Extension (chocolatey.extension package) version 1.12.2 or later and Chocolatey version 0.10.8 or later. Ignoring admin only enablement.'
}
}
# we need both a username and a password - if one is used without the other then throw
if (($ChocolateySourceUsername -and -not $ChocolateySourcePassword) -or ($ChocolateySourcePassword -and -not $ChocolateySourceUsername)) {
throw 'If you are using an authenticated source you must provide both a username AND a password.'
}
elseif ($ChocolateySourceUsername -and $ChocolateySourcePassword) {
$chocoArgs += @("--user=""'$ChocolateySourceUsername'""", "--password=""'$ChocolateySourcePassword'""")
}
# check if we have a certificate path
if (-not [string]::IsNullOrEmpty($ChocolateySourceCertificatePath)) {
if (-not (Test-Path -Path $ChocolateySourceCertificatePath)) {
throw "The certificate at '$ChocolateySourceCertificatePath' does not exist. Please make sure the certificate exists on the target at the provided path."
}
$chocoArgs += "--cert=""'$ChocolateySourceCertificatePath'"""
# if we have a password it can only be used with a certificate path
if (-not [string]::IsNullOrEmpty($ChocolateySourceCertificatePassword)) {
$chocoArgs += "--certpassword=""'$ChocolateySourceCertificatePassword'"""
}
}
elseif (-not [string]::IsNullOrEmpty($ChocolateySourceCertificatePassword)) {
Write-Warning 'You have provided a client certificate password but no client certificate path. Ignoring client certificate password.'
}
}
# finally add any other parameters
if (-not [string]::IsNullOrEmpty($ChocolateySourceOtherParameters)) {
$chocoArgs += $ChocolateySourceOtherParameters -split ' '
}
# execute the command line
Write-Host "Running the command: $choco $chocoArgs"
& $choco $chocoArgs
Provided under the Apache License version 2.0.
To use this template in Octopus Deploy, copy the JSON below and paste it into the Library → Step templates → Import dialog.
{
"Id": "131ba9b0-c95e-464f-a2ff-aacedbcd29a1",
"Name": "Chocolatey - Manage Sources",
"Description": "Allows managing Chocolatey Package sources.",
"Version": 1,
"ExportedAt": "2020-08-13T13:35:57.400Z",
"ActionType": "Octopus.Script",
"Author": "pauby",
"Packages": [],
"Parameters": [
{
"Id": "86c495d0-0098-4af0-bf10-cde87bfbc348",
"Name": "ChocolateySourceName",
"Label": "(Required) Source Name",
"HelpText": "The name of the source to manage. Examples: \n\n* _production-repo_\n* _my-smb-share_",
"DefaultValue": "",
"DisplaySettings": {
"Octopus.ControlType": "SingleLineText"
}
},
{
"Id": "f2b13125-1328-48b5-b341-3c5a78869a8c",
"Name": "ChocolateySourceAction",
"Label": "(Required) Source Action",
"HelpText": "The action to perform on the source.\n\nNote that you can use the 'add' action to change a source configuration. So you may not need to remove it and add it again.",
"DefaultValue": "add",
"DisplaySettings": {
"Octopus.ControlType": "Select",
"Octopus.SelectOptions": "add|Add a source\nremove|Remove a source\nenable|Enable a source\ndisable|Disable a source"
}
},
{
"Id": "80507f89-d52e-43d7-b857-9697e9f837fa",
"Name": "ChocolateySourceLocation",
"Label": "(Required / Optional) Source Location",
"HelpText": "This can be a folder / file share or an http / https location. If it is a URL, it will be a location you can go to in a browser and it returns OData with something that says 'Packages' in the browser, similar to what you see when you go to https://chocolatey.org/api/v2/.\n\n**Required with 'add' action. Optional with all other actions.**\n\nExamples:\n\n* _c:\\local-packages_\n* _\\\\\\\\my-server\\packages_\n* _https://internalserver.local/packages/_ (note the trailing slash)",
"DefaultValue": "",
"DisplaySettings": {
"Octopus.ControlType": "SingleLineText"
}
},
{
"Id": "7580abfd-89ae-4bc0-af86-cbe58b9d8074",
"Name": "ChocolateySourcePriority",
"Label": "(Optional) Source Priority",
"HelpText": "The priority order of this source as compared to other sources, lower is better. Defaults to 0 (no priority). \n\nAll priorities above 0 will be evaluated first, then zero-based values will be evaluated in config file order.\n\n_Available in Chocolatey version 0.9.9.9 and later._",
"DefaultValue": "",
"DisplaySettings": {
"Octopus.ControlType": "SingleLineText"
}
},
{
"Id": "8517408c-5812-448b-986a-7fabc970039f",
"Name": "ChocolateySourceAllowSelfService",
"Label": "(Optional) Allow Self Service Source",
"HelpText": "Should this source be allowed to be used with self-service? Defaults to false. \n\n_Available in Chocolatey For Business version 0.10.4 and later. Requires feature 'useBackgroundServiceWithSelfServiceSourcesOnly' to be enabled._",
"DefaultValue": "",
"DisplaySettings": {
"Octopus.ControlType": "Checkbox"
}
},
{
"Id": "6e12a4e6-eae4-4ce9-b759-76f4a9b4b0c5",
"Name": "ChocolateySourceEnableAdminOnly",
"Label": "(Optional) Enable Admin Only Source",
"HelpText": "Should this source be visible to non-administrators?\n\n_Requires Chocolatey For Business Extension version 1.12.2 or later and Chocolatey version 0.10.8 or later._",
"DefaultValue": "",
"DisplaySettings": {
"Octopus.ControlType": "Checkbox"
}
},
{
"Id": "b3e074ba-ba3a-43dc-8e23-7e92647cb246",
"Name": "ChocolateySourceUsername",
"Label": "(Optional) Source Authentication Username",
"HelpText": "Username to authenticate to the source with.",
"DefaultValue": "",
"DisplaySettings": {
"Octopus.ControlType": "SingleLineText"
}
},
{
"Id": "3af96a08-19ba-43a3-893d-6afe929eba0a",
"Name": "ChocolateySourcePassword",
"Label": "(Optional) Source Authentication Password",
"HelpText": "Password to authenticate to the source with.",
"DefaultValue": "",
"DisplaySettings": {
"Octopus.ControlType": "Sensitive"
}
},
{
"Id": "53457094-5867-4bde-95c0-7f7100e7b561",
"Name": "ChocolateySourceCertificatePath",
"Label": "(Optional) Source Certificate Path",
"HelpText": "Path to the PFX client certificate used for an x509 authenticated source.\n\n_NOTE: The certificate path must exist and be local to the computer this step is running on. So you will need to add additional steps to ensure the certificate is available at the path._\n\n_Available in Chocolatey from version 0.9.10._",
"DefaultValue": "",
"DisplaySettings": {
"Octopus.ControlType": "SingleLineText"
}
},
{
"Id": "8e431f4f-8c24-4aa0-b7ba-2045d4efab3a",
"Name": "ChocolateySourceCertificatePassword",
"Label": "(Optional) Chocolatey Certificate Password",
"HelpText": "The client certificate's password to the source. Can only be used if a client certificate path has been provided.\n\n_Available in Chocolatey version 0.9.10 or later._",
"DefaultValue": "",
"DisplaySettings": {
"Octopus.ControlType": "Sensitive"
}
},
{
"Id": "67ab1c30-a3e6-4ca8-a3a1-802702e34019",
"Name": "ChocolateySourceOtherParameters",
"Label": "(Optional) Other Parameters",
"HelpText": "Add additional Chocolatey parameters here, separated by spaces, and they will be prefixed to the end of the Chocolatey command being executed. ",
"DefaultValue": "",
"DisplaySettings": {
"Octopus.ControlType": "SingleLineText"
}
}
],
"Properties": {
"Octopus.Action.Script.ScriptSource": "Inline",
"Octopus.Action.Script.Syntax": "PowerShell",
"Octopus.Action.Script.ScriptBody": "[Net.ServicePointManager]::SecurityProtocol = [Net.ServicePointManager]::SecurityProtocol -bor [Net.SecurityProtocolType]::Tls12\n$chocolateyBin = [Environment]::GetEnvironmentVariable(\"ChocolateyInstall\", \"Machine\") + \"\\bin\"\nif(-not (Test-Path $chocolateyBin)) {\n Write-Host \"Environment variable 'ChocolateyInstall' was not found in the system variables. Attempting to find it in the user variables...\"\n $chocolateyBin = [Environment]::GetEnvironmentVariable(\"ChocolateyInstall\", \"User\") + \"\\bin\"\n}\n\n$choco = \"$chocolateyBin\\choco.exe\"\n\nif (-not (Test-Path $choco)) {\n throw \"Chocolatey was not found at $chocolateyBin.\"\n}\n\n# Report the actual version here\n$chocoVersion = & $choco --version\nWrite-Host \"Running Chocolatey version $chocoVersion\"\n\n# You cannot use [version] with SemVer 2 versions\n# this allows pre-release versions to still work by stripping everything after the '-' as we could have\n# 0.10.15-beta-20200101. We are only interested in the major.minor.build version\n$chocoVersion = ($chocoVersion -split '-')[0].ToString()\n\n# default args\n$chocoArgs = @('source', $ChocolateySourceAction, '--yes')\n\n# we need a source name\nif ([string]::IsNullOrEmpty($ChocolateySourceName)) {\n throw \"To manage a source you need to provide a source name.\"\n}\nelse {\n\t$chocoArgs += \"--name=\"\"'$ChocolateySourceName'\"\"\"\n}\n\n# we are adding a source - check all of the parameters\nif ($ChocolateySourceAction -eq 'add') {\n\tif ([string]::IsNullOrEmpty($ChocolateySourceLocation)) {\n\t\tthrow 'To add a source you need to provide a source location.'\n\t}\n else {\n \t$chocoArgs += \"--source=\"\"'$ChocolateySourceLocation'\"\"\"\n }\n\n # source priority\n if (-not [string]::IsNullOrEmpty($ChocolateySourcePriority)) {\n \tif ([version]$chocoVersion -ge [version]'0.9.9.9') {\n \t\t$chocoArgs += \"--priority=\"\"'$ChocolateySourcePriority'\"\"\"\n }\n else {\n \tWrite-Warning 'To use a source priority you must have Chocolatey version 0.9.9.9 or later. Ignoring source priority.'\n }\n }\n\n # allow self service\n if ($ChocolateySourceAllowSelfService) {\n \t$edition = & $choco\n \tif ($edition -like '*Business*' -and [version]$chocoVersion -ge [version]'0.10.4') {\n \t$chocoArgs += '--allow-self-service'\n }\n else {\n \tWrite-Warning 'To allow self service on a source you must have Chocolatey For Business version 0.10.4 or later. Ignoring allowing self service.'\n }\n }\n\n # allow admin only\n if ($ChocolateySourceEnableAdminOnly) {\n # we are not going to check for the Business Edition but the chocolatey.extension version need to check we have the chocolatey.extension installed\n $licensedExtension = & $choco list chocolatey.extension --exact --limit-output --local-only | ConvertFrom-Csv -Delimiter '|' -Header 'Name', 'Version'\n\n # lets get the major.minor.build licensed extension version by stripping any pre-release\n $licensedExtensionVersion = ($licensedExtension.Version -split '-')[0].ToString()\n if ((-not [string]::IsNullOrEmpty($licensedExtensionVersion)) -and ([version]$chocoVersion -ge [version]'0.10.8' -and [version]$licensedExtensionVersion -ge [version]'1.12.2')) {\n \t$chocoArgs += '--enable-admin-only'\n }\n else {\n \tWrite-Warning 'To enable admin only on a source you must have Chocolatey For Business Licensed Extension (chocolatey.extension package) version 1.12.2 or later and Chocolatey version 0.10.8 or later. Ignoring admin only enablement.'\n }\n\t}\n\n # we need both a username and a password - if one is used without the other then throw\n if (($ChocolateySourceUsername -and -not $ChocolateySourcePassword) -or ($ChocolateySourcePassword -and -not $ChocolateySourceUsername)) {\n \tthrow 'If you are using an authenticated source you must provide both a username AND a password.'\n }\n elseif ($ChocolateySourceUsername -and $ChocolateySourcePassword) {\n\t\t$chocoArgs += @(\"--user=\"\"'$ChocolateySourceUsername'\"\"\", \"--password=\"\"'$ChocolateySourcePassword'\"\"\")\n }\n\n # check if we have a certificate path\n if (-not [string]::IsNullOrEmpty($ChocolateySourceCertificatePath)) {\n \tif (-not (Test-Path -Path $ChocolateySourceCertificatePath)) {\n \tthrow \"The certificate at '$ChocolateySourceCertificatePath' does not exist. Please make sure the certificate exists on the target at the provided path.\"\n }\n\n $chocoArgs += \"--cert=\"\"'$ChocolateySourceCertificatePath'\"\"\"\n\n # if we have a password it can only be used with a certificate path\n if (-not [string]::IsNullOrEmpty($ChocolateySourceCertificatePassword)) {\n\t\t\t$chocoArgs += \"--certpassword=\"\"'$ChocolateySourceCertificatePassword'\"\"\"\n }\n }\n elseif (-not [string]::IsNullOrEmpty($ChocolateySourceCertificatePassword)) {\n \tWrite-Warning 'You have provided a client certificate password but no client certificate path. Ignoring client certificate password.'\n }\n}\n\n# finally add any other parameters\nif (-not [string]::IsNullOrEmpty($ChocolateySourceOtherParameters)) {\n\t$chocoArgs += $ChocolateySourceOtherParameters -split ' '\n}\n\n# execute the command line\nWrite-Host \"Running the command: $choco $chocoArgs\"\n& $choco $chocoArgs",
"Octopus.Action.EnabledFeatures": ""
},
"Category": "Chocolatey",
"HistoryUrl": "https://github.com/OctopusDeploy/Library/commits/master/step-templates//opt/buildagent/work/75443764cd38076d/step-templates/chocolatey-manage-sources.json",
"Website": "/step-templates/131ba9b0-c95e-464f-a2ff-aacedbcd29a1",
"Logo": "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",
"$Meta": {
"Type": "ActionTemplate"
}
}
Page updated on Thursday, August 13, 2020