Skip to content
Merged
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
83 changes: 45 additions & 38 deletions .github/workflows/images.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,9 @@ on:
tags:
- "*"

permissions:
contents: read

env:
IMAGE_NAME: "synadia/nats-server"
LINUX_ARCHS: "linux/arm64,linux/arm/v6,linux/arm/v7,linux/amd64,linux/386,linux/s390x,linux/ppc64le"
Expand All @@ -15,9 +18,6 @@ jobs:
if: ${{ startsWith(github.ref_name, 'v2.10.') }}
runs-on: ubuntu-latest

permissions:
contents: read

steps:
- name: Checkout repository
uses: actions/checkout@v4
Expand Down Expand Up @@ -60,13 +60,18 @@ jobs:
build-args: |
BASE_IMAGE=${{ env.IMAGE_NAME }}:${{ steps.ref.outputs.TAG }}-alpine3.22

windows-2019-2_10:
name: Build Windows (2.10.x)
windows-2_10:
name: Test Windows Server LTSC ${{ matrix.ltsc }} (${{ matrix.version }})
if: ${{ startsWith(github.ref_name, 'v2.10.') }}
runs-on: windows-2019

permissions:
contents: read
runs-on: windows-${{ matrix.ltsc }}
strategy:
fail-fast: false
matrix:
version:
- 2.10.x
ltsc:
- 2022
# - 2025

steps:
- name: Checkout repository
Expand All @@ -88,34 +93,31 @@ jobs:
echo "TAG=${TAG#v}" >> "$GITHUB_OUTPUT"

# Buildx is not supported on Windows yet.
- name: windowsservercore-1809
- name: windowsservercore-ltsc${{ matrix.ltsc }}
shell: pwsh
run: |
docker build `
--tag "${{ env.IMAGE_NAME }}:${{ steps.ref.outputs.TAG }}-windowsservercore-1809" `
./2.10.x/windowsservercore-1809
--tag "${{ env.IMAGE_NAME }}:${{ steps.ref.outputs.TAG }}-windowsservercore-ltsc${{ matrix.ltsc }}" `
./${{ matrix.version }}/windowsservercore-ltsc${{ matrix.ltsc }}

docker push "${{ env.IMAGE_NAME }}:${{ steps.ref.outputs.TAG }}-windowsservercore-1809"
docker push "${{ env.IMAGE_NAME }}:${{ steps.ref.outputs.TAG }}-windowsservercore-ltsc${{ matrix.ltsc }}"

- name: nanoserver-1809
- name: nanoserver-ltsc${{ matrix.ltsc }}
shell: pwsh
run: |
docker build `
--file ./2.10.x/nanoserver-1809/Dockerfile.preview `
--build-arg "BASE_IMAGE=${{ env.IMAGE_NAME }}:${{ steps.ref.outputs.TAG }}-windowsservercore-1809" `
--tag "${{ env.IMAGE_NAME }}:${{ steps.ref.outputs.TAG }}-nanoserver-1809" `
./2.10.x/nanoserver-1809
--file ./${{ matrix.version }}/nanoserver-ltsc${{ matrix.ltsc }}/Dockerfile.preview `
--build-arg "BASE_IMAGE=${{ env.IMAGE_NAME }}:${{ steps.ref.outputs.TAG }}-windowsservercore-ltsc${{ matrix.ltsc }}" `
--tag "${{ env.IMAGE_NAME }}:${{ steps.ref.outputs.TAG }}-nanoserver-ltsc${{ matrix.ltsc }}" `
./${{ matrix.version }}/nanoserver-ltsc${{ matrix.ltsc }}

docker push "${{ env.IMAGE_NAME }}:${{ steps.ref.outputs.TAG }}-nanoserver-1809"
docker push "${{ env.IMAGE_NAME }}:${{ steps.ref.outputs.TAG }}-nanoserver-ltsc${{ matrix.ltsc }}"

linux-2_11:
name: Build Linux (2.11.x)
if: ${{ startsWith(github.ref_name, 'v2.11.') }}
runs-on: ubuntu-latest

permissions:
contents: read

steps:
- name: Checkout repository
uses: actions/checkout@v4
Expand Down Expand Up @@ -157,13 +159,18 @@ jobs:
build-args: |
BASE_IMAGE=${{ env.IMAGE_NAME }}:${{ steps.ref.outputs.TAG }}-alpine3.22

windows-2019-2_11:
name: Build Windows (2.11.x)
windows-2_11:
name: Test Windows Server LTSC ${{ matrix.ltsc }} (${{ matrix.version }})
if: ${{ startsWith(github.ref_name, 'v2.11.') }}
runs-on: windows-2019

permissions:
contents: read
runs-on: windows-${{ matrix.ltsc }}
strategy:
fail-fast: false
matrix:
version:
- 2.11.x
ltsc:
- 2022
# - 2025

steps:
- name: Checkout repository
Expand All @@ -185,22 +192,22 @@ jobs:
echo "TAG=${TAG#v}" >> "$GITHUB_OUTPUT"

# Buildx is not supported on Windows yet.
- name: windowsservercore-1809
- name: windowsservercore-ltsc${{ matrix.ltsc }}
shell: pwsh
run: |
docker build `
--tag "${{ env.IMAGE_NAME }}:${{ steps.ref.outputs.TAG }}-windowsservercore-1809" `
./2.11.x/windowsservercore-1809
--tag "${{ env.IMAGE_NAME }}:${{ steps.ref.outputs.TAG }}-windowsservercore-ltsc${{ matrix.ltsc }}" `
./${{ matrix.version }}/windowsservercore-ltsc${{ matrix.ltsc }}

docker push "${{ env.IMAGE_NAME }}:${{ steps.ref.outputs.TAG }}-windowsservercore-1809"
docker push "${{ env.IMAGE_NAME }}:${{ steps.ref.outputs.TAG }}-windowsservercore-ltsc${{ matrix.ltsc }}"

- name: nanoserver-1809
- name: nanoserver-ltsc${{ matrix.ltsc }}
shell: pwsh
run: |
docker build `
--file ./2.11.x/nanoserver-1809/Dockerfile.preview `
--build-arg "BASE_IMAGE=${{ env.IMAGE_NAME }}:${{ steps.ref.outputs.TAG }}-windowsservercore-1809" `
--tag "${{ env.IMAGE_NAME }}:${{ steps.ref.outputs.TAG }}-nanoserver-1809" `
./2.11.x/nanoserver-1809
--file ./${{ matrix.version }}/nanoserver-ltsc${{ matrix.ltsc }}/Dockerfile.preview `
--build-arg "BASE_IMAGE=${{ env.IMAGE_NAME }}:${{ steps.ref.outputs.TAG }}-windowsservercore-ltsc${{ matrix.ltsc }}" `
--tag "${{ env.IMAGE_NAME }}:${{ steps.ref.outputs.TAG }}-nanoserver-ltsc${{ matrix.ltsc }}" `
./${{ matrix.version }}/nanoserver-ltsc${{ matrix.ltsc }}

docker push "${{ env.IMAGE_NAME }}:${{ steps.ref.outputs.TAG }}-nanoserver-1809"
docker push "${{ env.IMAGE_NAME }}:${{ steps.ref.outputs.TAG }}-nanoserver-ltsc${{ matrix.ltsc }}"
14 changes: 10 additions & 4 deletions .github/workflows/main.yaml
Original file line number Diff line number Diff line change
@@ -1,6 +1,9 @@
name: Docker build testing
on: [push, pull_request]

permissions:
contents: read

jobs:
linux:
name: Test Linux (${{ matrix.version }})
Expand All @@ -22,22 +25,25 @@ jobs:
cd ./${{ matrix.version }}/tests && ./run-images.sh
windows:
name: Test Windows Server 2019 (${{ matrix.version }})
runs-on: windows-2019
name: Test Windows Server LTSC ${{ matrix.ltsc }} (${{ matrix.version }})
runs-on: windows-${{ matrix.ltsc }}
strategy:
fail-fast: false
matrix:
version:
- 2.10.x
- 2.11.x
ltsc:
- 2022
# - 2025
steps:
- name: Checkout code
uses: actions/checkout@v1
- name: Build images
shell: powershell
run: |
cd ./${{ matrix.version }}/tests; ./build-images-2019.ps1
cd ./${{ matrix.version }}/tests; ./build-images-ltsc${{ matrix.ltsc }}.ps1
- name: Test images
shell: powershell
run: |
cd ./${{ matrix.version }}/tests; ./run-images-2019.ps1
cd ./${{ matrix.version }}/tests; ./run-images-ltsc${{ matrix.ltsc }}.ps1
9 changes: 9 additions & 0 deletions 2.10.x/nanoserver-ltsc2022/Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
FROM mcr.microsoft.com/windows/nanoserver:ltsc2022
ENV NATS_DOCKERIZED 1

COPY --from=nats:2.10.29-windowsservercore-ltsc2022 C:\\nats-server.exe C:\\nats-server.exe
COPY nats-server.conf C:\\nats-server.conf

EXPOSE 4222 8222 6222
ENTRYPOINT ["C:\\nats-server.exe"]
CMD ["--config", "nats-server.conf"]
12 changes: 12 additions & 0 deletions 2.10.x/nanoserver-ltsc2022/Dockerfile.preview
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
ARG BASE_IMAGE=nats:2.10.29-windowsservercore-ltsc2022
FROM $BASE_IMAGE AS base

FROM mcr.microsoft.com/windows/nanoserver:ltsc2022
ENV NATS_DOCKERIZED 1

COPY --from=base C:\\nats-server.exe C:\\nats-server.exe
COPY nats-server.conf C:\\nats-server.conf

EXPOSE 4222 8222 6222
ENTRYPOINT ["C:\\nats-server.exe"]
CMD ["--config", "nats-server.conf"]
9 changes: 9 additions & 0 deletions 2.10.x/nanoserver-ltsc2025/Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
FROM mcr.microsoft.com/windows/nanoserver:ltsc2025
ENV NATS_DOCKERIZED 1

COPY --from=nats:2.10.29-windowsservercore-ltsc2025 C:\\nats-server.exe C:\\nats-server.exe
COPY nats-server.conf C:\\nats-server.conf

EXPOSE 4222 8222 6222
ENTRYPOINT ["C:\\nats-server.exe"]
CMD ["--config", "nats-server.conf"]
12 changes: 12 additions & 0 deletions 2.10.x/nanoserver-ltsc2025/Dockerfile.preview
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
ARG BASE_IMAGE=nats:2.10.29-windowsservercore-ltsc2025
FROM $BASE_IMAGE AS base

FROM mcr.microsoft.com/windows/nanoserver:ltsc2025
ENV NATS_DOCKERIZED 1

COPY --from=base C:\\nats-server.exe C:\\nats-server.exe
COPY nats-server.conf C:\\nats-server.conf

EXPOSE 4222 8222 6222
ENTRYPOINT ["C:\\nats-server.exe"]
CMD ["--config", "nats-server.conf"]
Original file line number Diff line number Diff line change
Expand Up @@ -11,16 +11,16 @@ Write-Output (Get-WMIObject win32_operatingsystem).name
Write-Output (Get-WMIObject win32_operatingsystem).OSArchitecture

# The windowsservercore images must be built before the nanoserver images.
cd "../windowsservercore-1809"
Write-Host "building windowsservercore-1809"
docker build --tag "nats:${ver}-windowsservercore-1809" .
cd "../windowsservercore-ltsc2022"
Write-Host "building windowsservercore-ltsc2022"
docker build --tag "nats:${ver}-windowsservercore-ltsc2022" .
if ($LASTEXITCODE -ne 0) {
exit 1
}

cd "../nanoserver-1809"
Write-Host "building nanoserver-1809"
docker build --tag "nats:${ver}-nanoserver-1809" .
cd "../nanoserver-ltsc2022"
Write-Host "building nanoserver-ltsc2022"
docker build --tag "nats:${ver}-nanoserver-ltsc2022" .
if ($LASTEXITCODE -ne 0) {
exit 1
}
Expand Down
28 changes: 28 additions & 0 deletions 2.10.x/tests/build-images-ltsc2025.ps1
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
# Show statements as they run.
Set-PSDebug -Trace 2
# Exit on error.
$ErrorActionPreference = "Stop"

$ver = 'NATS_SERVER 2.10.29'.Split(' ')[1]

Write-Output '-- host info ---'
Write-Output $PSVersionTable
Write-Output (Get-WMIObject win32_operatingsystem).name
Write-Output (Get-WMIObject win32_operatingsystem).OSArchitecture

# The windowsservercore images must be built before the nanoserver images.
cd "../windowsservercore-ltsc2025"
Write-Host "building windowsservercore-ltsc2025"
docker build --tag "nats:${ver}-windowsservercore-ltsc2025" .
if ($LASTEXITCODE -ne 0) {
exit 1
}

cd "../nanoserver-ltsc2025"
Write-Host "building nanoserver-ltsc2025"
docker build --tag "nats:${ver}-nanoserver-ltsc2025" .
if ($LASTEXITCODE -ne 0) {
exit 1
}

docker images
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,8 @@ $ErrorActionPreference = "Stop"
$ver = "NATS_SERVER 2.10.29".Split(" ")[1]

$images = @(
"nats:${ver}-windowsservercore-1809",
"nats:${ver}-nanoserver-1809"
"nats:${ver}-windowsservercore-ltsc2022",
"nats:${ver}-nanoserver-ltsc2022"
)

foreach ($img in $images) {
Expand Down
25 changes: 25 additions & 0 deletions 2.10.x/tests/run-images-ltsc2025.ps1
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
# Show statements as they run.
Set-PSDebug -Trace 2
# Exit on error.
$ErrorActionPreference = "Stop"

$ver = "NATS_SERVER 2.10.29".Split(" ")[1]

$images = @(
"nats:${ver}-windowsservercore-ltsc2025",
"nats:${ver}-nanoserver-ltsc2025"
)

foreach ($img in $images) {
Write-Output "running ${img}"
$runId = & docker run --detach "${img}"
sleep 1

Write-Output "checking ${img}"
docker logs "$runId"
docker ps --filter "id=${runId}" --filter "status=running" --quiet
if ($LASTEXITCODE -ne 0) {
exit 1
}
docker kill $runId
}
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
FROM mcr.microsoft.com/windows/servercore:1809
FROM mcr.microsoft.com/windows/servercore:ltsc2022

# Enable exit on error.
SHELL ["powershell", "-Command", "$ErrorActionPreference = 'Stop';"]
Expand Down
38 changes: 38 additions & 0 deletions 2.10.x/windowsservercore-ltsc2025/Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
FROM mcr.microsoft.com/windows/servercore:ltsc2025

# Enable exit on error.
SHELL ["powershell", "-Command", "$ErrorActionPreference = 'Stop';"]

ENV NATS_DOCKERIZED 1
ENV NATS_SERVER 2.10.29
ENV NATS_SERVER_DOWNLOAD https://github.com/nats-io/nats-server/releases/download/v${NATS_SERVER}/nats-server-v${NATS_SERVER}-windows-amd64.zip
ENV NATS_SERVER_SHASUM 98657bf4d5a9ce44168c019ba6894cda8e22e6adc8798edc05c168db7262de29

RUN Set-PSDebug -Trace 2

RUN Write-Host ('downloading from {0} ...' -f $env:NATS_SERVER_DOWNLOAD); \
[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12; \
Invoke-WebRequest -Uri $env:NATS_SERVER_DOWNLOAD -OutFile nats.zip; \
\
Write-Host ('verifying sha256 ({0}) ...' -f $env:NATS_SERVER_SHASUM); \
if ((Get-FileHash nats.zip -Algorithm sha256).Hash -ne $env:NATS_SERVER_SHASUM) { \
Write-Host 'FAILED!'; \
exit 1; \
}; \
Write-Host 'extracting nats.zip'; \
Expand-Archive -Path 'nats.zip' -DestinationPath .; \
\
Write-Host 'copying binary'; \
Copy-Item nats-server-v*/nats-server.exe -Destination C:\\nats-server.exe; \
\
Write-Host 'cleaning up'; \
Remove-Item -Force nats.zip; \
Remove-Item -Recurse -Force nats-server-v*; \
\
Write-Host 'complete.';

COPY nats-server.conf C:\\nats-server.conf

EXPOSE 4222 8222 6222
ENTRYPOINT ["C:\\nats-server.exe"]
CMD ["--config", "nats-server.conf"]
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
FROM mcr.microsoft.com/windows/nanoserver:1809
FROM mcr.microsoft.com/windows/nanoserver:ltsc2022
ENV NATS_DOCKERIZED 1

COPY --from=nats:2.10.29-windowsservercore-1809 C:\\nats-server.exe C:\\nats-server.exe
COPY --from=nats:2.11.4-windowsservercore-ltsc2022 C:\\nats-server.exe C:\\nats-server.exe
COPY nats-server.conf C:\\nats-server.conf

EXPOSE 4222 8222 6222
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
ARG BASE_IMAGE=nats:2.10.29-windowsservercore-1809
ARG BASE_IMAGE=nats:2.11.4-windowsservercore-ltsc2022
FROM $BASE_IMAGE AS base

FROM mcr.microsoft.com/windows/nanoserver:1809
FROM mcr.microsoft.com/windows/nanoserver:ltsc2022
ENV NATS_DOCKERIZED 1

COPY --from=base C:\\nats-server.exe C:\\nats-server.exe
Expand Down
Loading