Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
57 changes: 57 additions & 0 deletions .github/workflows/windows-ltsc2025-test.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,57 @@
# TEMPORARY: validates the Windows LTSC 2025 image build for PR #122.
# Remove this file before/after merging to main.
name: windows-ltsc2025-test

on:
push:
branches:
- cal/md-1763-add-a-windowsltsc2025-workertools-build
workflow_dispatch:

jobs:
build-and-test:
runs-on: windows-2025
timeout-minutes: 120
defaults:
run:
shell: pwsh
working-directory: windows.ltsc2025

steps:
- name: Checkout
uses: actions/checkout@v4

- name: Show Docker info
run: |
docker version
docker info

- name: Build worker-tools image
run: |
docker build `
--tag octopusdeploy/worker-tools:ci-windows.ltsc2025 `
.

- name: Build tests image
run: |
docker build `
--build-arg ContainerUnderTest=octopusdeploy/worker-tools:ci-windows.ltsc2025 `
--tag worker-tools-tests:ci-windows.ltsc2025 `
--file Tests.Dockerfile `
.

- name: Run Pester tests
run: |
docker run --rm `
-v "${{ github.workspace }}\windows.ltsc2025:C:\app" `
-w "C:\app" `
worker-tools-tests:ci-windows.ltsc2025 `
pwsh -File scripts/run-tests.ps1

- name: Upload test results
if: always()
uses: actions/upload-artifact@v4
with:
name: pester-results-windows-ltsc2025
path: windows.ltsc2025/spec/PesterTestResults.xml
if-no-files-found: ignore
8 changes: 8 additions & 0 deletions docker-compose.build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -52,3 +52,11 @@ services:
- "./windows.ltsc2022:c:\\app"
working_dir: "c:\\app"
entrypoint: ["pwsh", "-file", "scripts/run-tests.ps1"]

windows.ltsc2025:
build: windows.ltsc2025
image: docker.packages.octopushq.com/octopusdeploy/worker-tools:${BUILD_NUMBER?err}-windows.ltsc2025
volumes:
- "./windows.ltsc2025:c:\\app"
working_dir: "c:\\app"
entrypoint: ["pwsh", "-file", "scripts/run-tests.ps1"]
127 changes: 127 additions & 0 deletions windows.ltsc2025/Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,127 @@
# escape=`

FROM mcr.microsoft.com/dotnet/framework/runtime:4.8.1-20260512-windowsservercore-ltsc2025
SHELL ["powershell", "-Command"]

ARG 7Zip_Version=26.0.0
ARG Argo_Cli_Version=3.4.2
ARG Aws_Cli_Version=2.34.53
ARG Aws_Iam_Authenticator_Version=0.7.16
ARG Aws_Powershell_Version=5.0.218
ARG Azure_Cli_Version=2.86.0
ARG Azure_Powershell_Version=15.6.1
ARG Eks_Cli_Version=0.226.0
ARG Git_Version=2.54.0
ARG Google_Cloud_Cli_Version=569.0.0
ARG Helm_Version=4.2.0
ARG Java_Jdk_Version=25.0.0.1
ARG Kubectl_Version=1.36.1
ARG Kubelogin_Version=0.2.17
ARG Node_Version=24.16.0
ARG Octopus_Cli_Legacy_Version=9.1.7
ARG Octopus_Cli_Version=2.21.1
ARG Octopus_Client_Version=21.11.2726
ARG Powershell_Version=7.6.1
ARG Python_Version=3.14.5
ARG ScriptCs_Version=0.17.1
ARG Terraform_Version=1.15.4

# Install Choco
RUN $ProgressPreference = 'SilentlyContinue'; `
Set-ExecutionPolicy Bypass -Scope Process -Force; `
[System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072; `
iex ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1'))

# Install dotnet 8.0+
RUN Invoke-WebRequest 'https://dotnet.microsoft.com/download/dotnet/scripts/v1/dotnet-install.ps1' -outFile 'dotnet-install.ps1'; `
[Environment]::SetEnvironmentVariable('DOTNET_CLI_TELEMETRY_OPTOUT', '1', 'Machine'); `
.\dotnet-install.ps1 -Channel '8.0'; `
rm dotnet-install.ps1

# Install JDK
RUN choco install openjdk --allow-empty-checksums --y --no-progress --version $Env:Java_Jdk_Version; `
Import-Module $env:ChocolateyInstall\helpers\chocolateyProfile.psm1; `
Update-SessionEnvironment

# Install Azure CLI
RUN choco install azure-cli -y --version $Env:Azure_Cli_Version --no-progress

# remove az cli warning - https://github.com/Azure/arm-deploy/issues/173
RUN az config set bicep.use_binary_from_path=false

# Install the AWS CLI
RUN choco install awscli -y --version $Env:Aws_Cli_Version --no-progress

# Install the AWS IAM Authenticator
RUN choco install aws-iam-authenticator -y --version $Env:Aws_Iam_Authenticator_Version --no-progress

# Install AWS PowerShell modules
# https://docs.aws.amazon.com/powershell/latest/userguide/pstools-getting-set-up-windows.html#ps-installing-awspowershellnetcore
RUN Install-PackageProvider -Name NuGet -MinimumVersion 2.8.5.201 -Force; `
Install-Module -name AWSPowerShell.NetCore -RequiredVersion $Env:Aws_Powershell_Version -Force

# Install Azure PowerShell modules
# https://docs.microsoft.com/en-us/powershell/azure/install-az-ps?view=azps-3.6.1
RUN Install-Module -Force -Name Az -AllowClobber -Scope AllUsers -MaximumVersion $Env:Azure_Powershell_Version; `
Enable-AzureRmAlias -Scope LocalMachine

# Install NodeJS
RUN choco install nodejs-lts -y --version $Env:Node_Version --no-progress

# Install kubectl
RUN Invoke-WebRequest "https://dl.k8s.io/release/v${Env:Kubectl_Version}/bin/windows/amd64/kubectl.exe" -OutFile .\kubectl.exe; `
mv .\kubectl.exe C:\Windows\system32\;

# Install Kubelogin
RUN choco install azure-kubelogin --version $Env:Kubelogin_Version --no-progress -y

# Install helm 3
RUN Invoke-WebRequest "https://get.helm.sh/helm-v${Env:Helm_Version}-windows-amd64.zip" -OutFile helm.zip; `
Expand-Archive helm.zip -DestinationPath helm; `
mv helm\windows-amd64\helm.exe C:\Windows\system32\; `
Remove-Item -Recurse -Force helm, helm.zip

# Install Terraform
RUN choco install -y terraform --version $Env:Terraform_Version --no-progress

# Install python
RUN choco install -y python3 --version $Env:Python_Version --no-progress; `
Import-Module $env:ChocolateyInstall\helpers\chocolateyProfile.psm1; `
Update-SessionEnvironment

# Install 7ZIP because gcloud
RUN choco install 7zip -y --version $Env:7Zip_Version --no-progress

# Install gcloud
RUN choco install gcloudsdk -y --version $Env:Google_Cloud_Cli_Version --no-progress

# Install gcloud kubectl auth
RUN gcloud components install gke-gcloud-auth-plugin --quiet

# Install ScriptCS
RUN choco install scriptcs -y --version $Env:ScriptCs_Version --no-progress

# Install Octopus CLI
RUN choco install octopus-cli -y --version $Env:Octopus_Cli_Version --no-progress

# Install octo
RUN choco install octopustools -y --version $Env:Octopus_Cli_Legacy_Version --no-progress

# Install Octopus Client
RUN Install-Package Octopus.Client -source https://www.nuget.org/api/v2 -SkipDependencies -Force -RequiredVersion $Env:Octopus_Client_Version

# Install eksctl
RUN choco install eksctl -y --version $Env:Eks_Cli_Version --no-progress

# Install Powershell Core
RUN choco install powershell-core --yes --version $Env:Powershell_Version --no-progress

# Install Git
RUN choco install git.install --yes --version $Env:Git_Version --no-progress

# Install Argo CD
RUN choco install argocd-cli --yes --version $Env:Argo_Cli_Version --no-progress

# Update path for new tools
ADD .\scripts\update_path.cmd C:\update_path.cmd
RUN .\update_path.cmd;
49 changes: 49 additions & 0 deletions windows.ltsc2025/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
# Windows WorkerTools

> Please note that we update this document periodically to match the latest version on DockerHub which is publicly available.
> This does not necessarily match the content of Dockerfiles in this repository, as they may contain changes that are not released yet.

## Image Name

`octopusdeploy/worker-tools`

## Tags

- `6.0.0-windows.ltsc2025`
- `6.0-windows.ltsc2025`
- `6-windows.ltsc2025`
- `windows.ltsc2025`

## Digest

`<populated after first publish>`

## Base Image

`mcr.microsoft.com/windows/servercore:ltsc2025-amd64`

## Installed Software

- Argo CD CLI 3.4.2
- Aws CLI 2.34.53
- Aws Iam Authenticator 0.7.16
- Aws PowerShell Modules 5.0.218
- Azure CLI 2.86.0
- Azure PowerShell Modules 15.6.1
- Eksctl 0.226.0
- Google Cloud CLI 569.0.0
- Google Cloud GKE auth plugin 569.0.0-0
- Helm 4.2.0
- Java Jdk 25.0.0.1
- Kubectl 1.36.1
- Kubelogin (azure-kubelogin) 0.2.17
- Node 24.16.0
- Octopus CLI Legacy 9.1.7
- Octopus CLI 2.21.1
- Octopus Client 21.11.2726
- Powershell 7.6.1
- Python 3.14.5
- ScriptCs 0.17.1
- Terraform 1.15.4
- 7Zip 26.0
- Chocolatey - Latest
4 changes: 4 additions & 0 deletions windows.ltsc2025/Tests.Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
ARG ContainerUnderTest=octopusdeploy/worker-tools

FROM ${ContainerUnderTest}
SHELL ["powershell", "-Command"]
Loading
Loading