Argo - Rollouts Status

Octopus.KubernetesRunScript exported 2024-06-12 by twerthi belongs to ‘Argo’ category.

Gets the status of an Argo Rollout. Note: A timeout isn’t considered an error, it will return the status at the time of the timeout.

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 promote.

Namespace

Argo.Rollout.Namespace = default

The namespace to execute the promotion of the rollout against.

Timeout

Argo.Rollout.Timeout =

The length of time to watch before giving up. Non-zero values should contain a corresponding time unit (e.g. 1s, 2m, 3h). Zero means wait forever.

Script body

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

# Supress info messages written to stderr
Write-Host "##octopus[stderr-progress]"

function Save-OctopusVariable {
    Param(
        [string] $name,
        [string] $value
    )
    $StepName = $OctopusParameters["Octopus.Step.Name"]    
    
    Set-OctopusVariable -Name $name -Value $value

    Write-Host "Created output variable: ##{Octopus.Action[$StepName].Output.$name}"
}

# Installs the Argo Rollouts plugin
function 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"

	# Make file executable
    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 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-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 parameters
$rolloutsName = $OctopusParameters['Argo.Rollout.Name']
$rolloutsNamespace = $OctopusParameters['Argo.Rollout.Namespace']
$rolloutsTimeout = $OctopusParameters['Argo.Rollout.Timeout']

# Validate arguments
if ([string]::IsNullOrWhitespace($rolloutsTimeout))
{
    Write-Error "Please specify a timeout value"
}

# Add new arguments
$kubectlArguments = @("argo", "rollouts", "status", $rolloutsName, "--namespace", $rolloutsNamespace, "--timeout", $rolloutsTimeout)

try
{
    # Get the current status - This was the only way to get it to work cross-platform
    $process = Start-Process -FilePath "kubectl" -ArgumentList $kubectlArguments -NoNewWindow -RedirectStandardError "error.txt" -RedirectStandardOutput "success.txt" -Wait -PassThru
    $lastExitCode = $process.ExitCode
    $rolloutStatus =  (Get-Content "success.txt")
   
    # Check the code from the command
    if ($lastExitCode -ne 0)
    {
        # Get the error from the file
        $errorMessage = Get-Content "error.txt"

        if ($errorMessage -is [array])
        {
          $errorMessage = $errorMessage[0]
        }

        # Expose the original error
        throw $errorMessage
    }
}
catch
{
    if ($_.Exception.Message -ne "Error: Rollout status watch exceeded timeout")
    {
        # Timeout is expected, everything else is not
        Write-Host "$(Get-Content "error.txt")"
        throw
    }
    else
    {
        # It was just a timeout, make last exit 0
        Write-Host "Wait operation timed out, returning recorded status."
        $lastExitCode = 0
    }
}

Write-Host "Status is $rolloutStatus"

if ($rolloutStatus.Contains("-"))
{
    $messages = $rolloutStatus.Split("-")
    
    Save-OctopusVariable -Name "Status" -Value $messages[0].Trim()
    Save-OctopusVariable -Name "StatusMessage" -Value $messages[1].Trim()
}
else
{
    Save-OctopusVariable -Name "Status" -Value $rolloutStatus
}

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": "866c3e69-5bd6-4439-8a2e-8cbf252885a4",
  "Name": "Argo - Rollouts Status",
  "Description": "Gets the status of an Argo Rollout.\nNote: A timeout isn't considered an error, it will return the status at the time of the timeout.",
  "Version": 1,
  "ExportedAt": "2024-06-12T18:36:25.339Z",
  "ActionType": "Octopus.KubernetesRunScript",
  "Author": "twerthi",
  "Packages": [],
  "Parameters": [
    {
      "Id": "5eefb32e-04a6-40ed-9018-3ba12e241b01",
      "Name": "Argo.Rollout.Name",
      "Label": "Rollout Name",
      "HelpText": "Name of the Argo Rollout to promote.",
      "DefaultValue": "",
      "DisplaySettings": {
        "Octopus.ControlType": "SingleLineText"
      }
    },
    {
      "Id": "b13022d0-9a74-42cd-8b3e-d3cfa0c4d64c",
      "Name": "Argo.Rollout.Namespace",
      "Label": "Namespace",
      "HelpText": "The namespace to execute the promotion of the rollout against.",
      "DefaultValue": "default",
      "DisplaySettings": {
        "Octopus.ControlType": "SingleLineText"
      }
    },
    {
      "Id": "065f1110-abe9-4bdf-9a98-af20dcac4e8e",
      "Name": "Argo.Rollout.Timeout",
      "Label": "Timeout",
      "HelpText": "The length of time to watch before giving up. Non-zero values should contain a corresponding time unit (e.g. 1s, 2m, 3h). Zero means wait forever.",
      "DefaultValue": "",
      "DisplaySettings": {
        "Octopus.ControlType": "SingleLineText"
      }
    }
  ],
  "Properties": {
    "Octopus.Action.Script.ScriptSource": "Inline",
    "Octopus.Action.Script.Syntax": "PowerShell",
    "Octopus.Action.Script.ScriptBody": "# Supress info messages written to stderr\nWrite-Host \"##octopus[stderr-progress]\"\n\nfunction Save-OctopusVariable {\n    Param(\n        [string] $name,\n        [string] $value\n    )\n    $StepName = $OctopusParameters[\"Octopus.Step.Name\"]    \n    \n    Set-OctopusVariable -Name $name -Value $value\n\n    Write-Host \"Created output variable: ##{Octopus.Action[$StepName].Output.$name}\"\n}\n\n# Installs the Argo Rollouts plugin\nfunction 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# Make file executable\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\ntry \n{\n    # Check to see if plugins are installed\n    $pluginList = (kubectl plugin list 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-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\t\tInstall-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 parameters\n$rolloutsName = $OctopusParameters['Argo.Rollout.Name']\n$rolloutsNamespace = $OctopusParameters['Argo.Rollout.Namespace']\n$rolloutsTimeout = $OctopusParameters['Argo.Rollout.Timeout']\n\n# Validate arguments\nif ([string]::IsNullOrWhitespace($rolloutsTimeout))\n{\n    Write-Error \"Please specify a timeout value\"\n}\n\n# Add new arguments\n$kubectlArguments = @(\"argo\", \"rollouts\", \"status\", $rolloutsName, \"--namespace\", $rolloutsNamespace, \"--timeout\", $rolloutsTimeout)\n\ntry\n{\n    # Get the current status - This was the only way to get it to work cross-platform\n    $process = Start-Process -FilePath \"kubectl\" -ArgumentList $kubectlArguments -NoNewWindow -RedirectStandardError \"error.txt\" -RedirectStandardOutput \"success.txt\" -Wait -PassThru\n    $lastExitCode = $process.ExitCode\n    $rolloutStatus =  (Get-Content \"success.txt\")\n   \n    # Check the code from the command\n    if ($lastExitCode -ne 0)\n    {\n        # Get the error from the file\n        $errorMessage = Get-Content \"error.txt\"\n\n        if ($errorMessage -is [array])\n        {\n          $errorMessage = $errorMessage[0]\n        }\n\n        # Expose the original error\n        throw $errorMessage\n    }\n}\ncatch\n{\n    if ($_.Exception.Message -ne \"Error: Rollout status watch exceeded timeout\")\n    {\n        # Timeout is expected, everything else is not\n        Write-Host \"$(Get-Content \"error.txt\")\"\n        throw\n    }\n    else\n    {\n        # It was just a timeout, make last exit 0\n        Write-Host \"Wait operation timed out, returning recorded status.\"\n        $lastExitCode = 0\n    }\n}\n\nWrite-Host \"Status is $rolloutStatus\"\n\nif ($rolloutStatus.Contains(\"-\"))\n{\n    $messages = $rolloutStatus.Split(\"-\")\n    \n    Save-OctopusVariable -Name \"Status\" -Value $messages[0].Trim()\n    Save-OctopusVariable -Name \"StatusMessage\" -Value $messages[1].Trim()\n}\nelse\n{\n    Save-OctopusVariable -Name \"Status\" -Value $rolloutStatus\n}"
  },
  "Category": "Argo",
  "HistoryUrl": "https://github.com/OctopusDeploy/Library/commits/master/step-templates//opt/buildagent/work/75443764cd38076d/step-templates/argo-rollouts-status.json",
  "Website": "/step-templates/866c3e69-5bd6-4439-8a2e-8cbf252885a4",
  "Logo": "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",
  "$Meta": {
    "Type": "ActionTemplate"
  }
}

History

Page updated on Wednesday, June 12, 2024