Argo - Rollouts Set Image
Octopus.KubernetesRunScript exported 06/06/2024 by twerthi belongs to 'Argo' category.
Sets a new image tag on an Argo Rollout.
Parameters
When steps based on the template are included in a project's deployment process, the parameters below can be set.
Rollout Name
Argo.Rollout.Name
Name of the Argo Rollout to set the image on.
Namespace
Argo.Rollout.Namespace = default
The namespace to execute the command against.
Image
Argo.Rollout.Image
Select the image to update the rollout to.
Container Name
Argo.Rollout.Container.Name
Name of the container to update the image tag on.
Script body
Steps based on this template will execute the following PowerShell script.
Show scriptfunction Install-Plugin
{
# Define parameters
param ($PluginUri,
$PluginFilename
)
# Check for plugin folder
if ((Test-Path -Path "$PWD/plugins") -eq $false)
{
# Create new plugins folder
New-Item -Path "$PWD/plugins" -ItemType "Directory"
# Add to path
$env:PATH = "$($PWD)/plugins$([IO.Path]::PathSeparator)" + $env:PATH
}
# Download plugin
Invoke-WebRequest -Uri "$PluginUri" -OutFile "$PWD/plugins/$PluginFilename"
# Check for Linux
if ($IsLinux)
{
# Make it executable
chmod +x ./plugins/$PluginFilename
}
if ($IsWindows)
{
# Update filename to include .exe extension
Rename-Item -Path "$PWD/plugins/$PluginFilename" -NewName "$PWD/plugins/$($PluginFilename).exe"
}
}
# When listing plugins, kubectl looks in all paths defined in $env:PATH and will fail if the path does not exist
function Verify-Path-Variable
{
# Get current path and split into array
$paths = $env:PATH.Split([IO.Path]::PathSeparator)
$verifiedPaths = @()
# Loop through paths
foreach ($path in $paths)
{
# Check for existence
if ((Test-Path -Path $path) -eq $true)
{
# Add to verified
$verifiedPaths += $path
}
}
# Return verified paths
return ($verifiedPaths -join [IO.Path]::PathSeparator)
}
function Get-Plugin-Installed
{
# Define parameters
param (
$PluginName,
$InstalledPlugins
)
$isInstalled = $false
foreach ($plugin in $installedPlugins)
{
if ($plugin -like "$($PluginName)*")
{
$isInstalled = $true
break
}
}
return $isInstalled
}
# Check to see if $IsWindows is available
if ($null -eq $IsWindows) {
Write-Host "Determining Operating System..."
$IsWindows = ([System.Environment]::OSVersion.Platform -eq "Win32NT")
$IsLinux = ([System.Environment]::OSVersion.Platform -eq "Unix")
}
# Fix ANSI Color on PWSH Core issues when displaying objects
if ($PSEdition -eq "Core") {
$PSStyle.OutputRendering = "PlainText"
}
# Check to see if it's running on Windows
if ($IsWindows) {
# Disable the progress bar so downloading files via Invoke-WebRequest are faster
$ProgressPreference = 'SilentlyContinue'
}
# Set TLS
[System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor [Net.SecurityProtocolType]::Tls11 -bor [System.Net.SecurityProtocolType]::Tls12
# Verify all PATH variables are avaialable
$env:PATH = Verify-Path-Variable
if ($IsLinux)
{
$pluginUri = "https://github.com/argoproj/argo-rollouts/releases/latest/download/kubectl-argo-rollouts-linux-amd64"
}
if ($IsWindows)
{
$pluginUri = "https://github.com/argoproj/argo-rollouts/releases/latest/download/kubectl-argo-rollouts-windows-amd64"
}
try
{
# Check to see if plugins are installed
$pluginList = (kubectl plugin list --name-only=true 2>&1)
# This is the path that Linux will take
if ($lastExitCode -ne 0 -and $pluginList.Exception.Message -eq "error: unable to find any kubectl plugins in your PATH")
{
# Install the plugin
Install-Plugin -PluginUri $pluginUri -PluginFilename "kubectl-argo-rollouts"
}
else
{
# Parse list
$pluginList = $pluginList.Split("`n", [System.StringSplitOptions]::RemoveEmptyEntries)
if ((Get-Plugin-Installed -PluginName "kubectl-argo-rollouts" -InstalledPlugins $pluginList) -eq $false)
{
Install-Plugin -PluginUri $pluginUri -PluginFilename "kubectl-argo-rollouts"
}
else
{
Write-Host "Argo Rollout kubectl plugin found ..."
}
}
}
catch
{
# On Windows, the executable will cause an error if no plugins found so this the path Windows will take
if ($_.Exception.Message -eq "error: unable to find any kubectl plugins in your PATH")
{
Install-Plugin -PluginUri $pluginUri -PluginFilename "kubectl-argo-rollouts"
}
else
{
# Something else happened, we need to surface the error
throw
}
}
# Get variables
$rolloutName = $OctopusParameters['Argo.Rollout.Name']
$rolloutNamespace = $OctopusParameters['Argo.Rollout.Namespace']
$containerName = $OctopusParameters["Argo.Rollout.Container.Name"]
$imageName = $OctopusParameters["Octopus.Action.Package[Argo.Rollout.Image].PackageId"]
$imageTag = $OctopusParameters["Octopus.Action.Package[Argo.Rollout.Image].PackageVersion"]
# Create arguments array
$kubectlArguments = @("argo", "rollouts", "set", "image", $rolloutName, "$containerName=`"$($imageName):$($imageTag)`"", "--namespace", $rolloutNamespace)
# Set image
kubectl $kubectlArgumentsTo use this template in Octopus Deploy, copy the JSON below and paste it into the Library → Step templates → Import dialog.
Show JSON{
"Id": "5449ea73-7f77-45d7-a4d7-e56286d679f5",
"Name": "Argo - Rollouts Set Image",
"Description": "Sets a new image tag on an Argo Rollout.",
"Version": 1,
"ExportedAt": "2024-06-06T19:56:12.397Z",
"ActionType": "Octopus.KubernetesRunScript",
"Author": "twerthi",
"Packages": [
{
"Id": "67a06773-8f2b-49a7-95bb-1e087a38b3b9",
"Name": "Argo.Rollout.Image",
"PackageId": null,
"FeedId": null,
"AcquisitionLocation": "NotAcquired",
"Properties": {
"Extract": "True",
"SelectionMode": "deferred",
"PackageParameterName": "Argo.Rollout.Image",
"Purpose": ""
}
}
],
"Parameters": [
{
"Id": "892ac50a-e53c-47e5-997d-0ce1935b7303",
"Name": "Argo.Rollout.Name",
"Label": "Rollout Name",
"HelpText": "Name of the Argo Rollout to set the image on.",
"DefaultValue": "",
"DisplaySettings": {
"Octopus.ControlType": "SingleLineText"
}
},
{
"Id": "a08c104a-3877-4989-9436-bf582b3a8505",
"Name": "Argo.Rollout.Namespace",
"Label": "Namespace",
"HelpText": "The namespace to execute the command against.",
"DefaultValue": "default",
"DisplaySettings": {
"Octopus.ControlType": "SingleLineText"
}
},
{
"Id": "05bf80a9-0419-4d8d-b9ca-457d66a2edb0",
"Name": "Argo.Rollout.Image",
"Label": "Image",
"HelpText": "Select the image to update the rollout to.",
"DefaultValue": "",
"DisplaySettings": {
"Octopus.ControlType": "Package"
}
},
{
"Id": "115ebf6d-5613-4131-83f5-03d74fbc0f14",
"Name": "Argo.Rollout.Container.Name",
"Label": "Container Name",
"HelpText": "Name of the container to update the image tag on.",
"DefaultValue": "",
"DisplaySettings": {
"Octopus.ControlType": "SingleLineText"
}
}
],
"Properties": {
"Octopus.Action.Script.ScriptSource": "Inline",
"Octopus.Action.Script.Syntax": "PowerShell",
"Octopus.Action.Script.ScriptBody": "function Install-Plugin\n{\n# Define parameters\n\tparam ($PluginUri,\n $PluginFilename\n )\n \n # Check for plugin folder\n if ((Test-Path -Path \"$PWD/plugins\") -eq $false)\n {\n\t\t# Create new plugins folder\n New-Item -Path \"$PWD/plugins\" -ItemType \"Directory\"\n \n # Add to path\n $env:PATH = \"$($PWD)/plugins$([IO.Path]::PathSeparator)\" + $env:PATH\n }\n\n\t# Download plugin\n\tInvoke-WebRequest -Uri \"$PluginUri\" -OutFile \"$PWD/plugins/$PluginFilename\"\n\n\t# Check for Linux\n if ($IsLinux)\n {\n\t\t# Make it executable\n \tchmod +x ./plugins/$PluginFilename\n }\n \n if ($IsWindows)\n {\n \t# Update filename to include .exe extension\n Rename-Item -Path \"$PWD/plugins/$PluginFilename\" -NewName \"$PWD/plugins/$($PluginFilename).exe\"\n } \n}\n\n# When listing plugins, kubectl looks in all paths defined in $env:PATH and will fail if the path does not exist\nfunction Verify-Path-Variable\n{\n\t# Get current path and split into array\n $paths = $env:PATH.Split([IO.Path]::PathSeparator)\n $verifiedPaths = @()\n \n # Loop through paths\n foreach ($path in $paths)\n {\n \t# Check for existence\n if ((Test-Path -Path $path) -eq $true)\n {\n \t# Add to verified\n $verifiedPaths += $path\n }\n }\n \n # Return verified paths\n return ($verifiedPaths -join [IO.Path]::PathSeparator)\n}\n\nfunction Get-Plugin-Installed\n{\n\t# Define parameters\n param (\n \t$PluginName,\n $InstalledPlugins\n )\n \n \t$isInstalled = $false\n \n\tforeach ($plugin in $installedPlugins)\n \t{\n\t\tif ($plugin -like \"$($PluginName)*\")\n {\n \t$isInstalled = $true\n \tbreak\n }\n\t}\n \n return $isInstalled\n}\n\n# Check to see if $IsWindows is available\nif ($null -eq $IsWindows) {\n Write-Host \"Determining Operating System...\"\n $IsWindows = ([System.Environment]::OSVersion.Platform -eq \"Win32NT\")\n $IsLinux = ([System.Environment]::OSVersion.Platform -eq \"Unix\")\n}\n\n# Fix ANSI Color on PWSH Core issues when displaying objects\nif ($PSEdition -eq \"Core\") {\n $PSStyle.OutputRendering = \"PlainText\"\n}\n\n# Check to see if it's running on Windows\nif ($IsWindows) {\n # Disable the progress bar so downloading files via Invoke-WebRequest are faster\n $ProgressPreference = 'SilentlyContinue'\n}\n\n# Set TLS\n[System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor [Net.SecurityProtocolType]::Tls11 -bor [System.Net.SecurityProtocolType]::Tls12\n\n# Verify all PATH variables are avaialable\n$env:PATH = Verify-Path-Variable\nif ($IsLinux)\n{\n\t$pluginUri = \"https://github.com/argoproj/argo-rollouts/releases/latest/download/kubectl-argo-rollouts-linux-amd64\"\n}\n\nif ($IsWindows)\n{\n\t$pluginUri = \"https://github.com/argoproj/argo-rollouts/releases/latest/download/kubectl-argo-rollouts-windows-amd64\"\n}\n\n\ntry \n{\n # Check to see if plugins are installed\n $pluginList = (kubectl plugin list --name-only=true 2>&1)\n\n # This is the path that Linux will take\n if ($lastExitCode -ne 0 -and $pluginList.Exception.Message -eq \"error: unable to find any kubectl plugins in your PATH\") \n {\n # Install the plugin\n Install-Plugin -PluginUri $pluginUri -PluginFilename \"kubectl-argo-rollouts\"\n }\n else\n {\n # Parse list\n \t$pluginList = $pluginList.Split(\"`n\", [System.StringSplitOptions]::RemoveEmptyEntries)\n \n if ((Get-Plugin-Installed -PluginName \"kubectl-argo-rollouts\" -InstalledPlugins $pluginList) -eq $false)\n {\n \tInstall-Plugin -PluginUri $pluginUri -PluginFilename \"kubectl-argo-rollouts\"\n }\n else\n {\n \tWrite-Host \"Argo Rollout kubectl plugin found ...\"\n }\n }\n}\ncatch\n{\n\t# On Windows, the executable will cause an error if no plugins found so this the path Windows will take\n if ($_.Exception.Message -eq \"error: unable to find any kubectl plugins in your PATH\")\n {\n Install-Plugin -PluginUri $pluginUri -PluginFilename \"kubectl-argo-rollouts\" \n }\n else\n {\n \t# Something else happened, we need to surface the error\n throw\n }\n}\n\n# Get variables\n$rolloutName = $OctopusParameters['Argo.Rollout.Name']\n$rolloutNamespace = $OctopusParameters['Argo.Rollout.Namespace']\n$containerName = $OctopusParameters[\"Argo.Rollout.Container.Name\"]\n$imageName = $OctopusParameters[\"Octopus.Action.Package[Argo.Rollout.Image].PackageId\"]\n$imageTag = $OctopusParameters[\"Octopus.Action.Package[Argo.Rollout.Image].PackageVersion\"]\n\n# Create arguments array\n$kubectlArguments = @(\"argo\", \"rollouts\", \"set\", \"image\", $rolloutName, \"$containerName=`\"$($imageName):$($imageTag)`\"\", \"--namespace\", $rolloutNamespace)\n\n# Set image\nkubectl $kubectlArguments"
},
"Category": "Argo",
"HistoryUrl": "https://github.com/OctopusDeploy/Library/commits/master/step-templates/argo-rollouts-set-image.json",
"Website": "/step-templates/5449ea73-7f77-45d7-a4d7-e56286d679f5",
"Logo": "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",
"$Meta": {
"Type": "ActionTemplate"
}
}Provided under the Apache License version 2.0.