Skip to content

Install IIS in Dockur smoke test #4

Install IIS in Dockur smoke test

Install IIS in Dockur smoke test #4

name: Dockur Smoke Test
permissions:
contents: read
on:
push:
branches:
- chore/dockur-xp-smoke-test
workflow_dispatch: {}
jobs:
dockur-smoke-test:
runs-on: ubuntu-latest
timeout-minutes: 60
steps:
- name: Check runner capabilities
run: |
uname -a
ls -l /dev/kvm /dev/net/tun
grep -m 5 -E 'vmx|svm' /proc/cpuinfo || true
- name: Prepare Dockur OEM installer
run: |
mkdir -p "$RUNNER_TEMP/dockur-oem"
cat > "$RUNNER_TEMP/dockur-oem/install.bat" <<'EOF'
@echo off
powershell -NoLogo -NoProfile -ExecutionPolicy Bypass -Command ^
"$ErrorActionPreference = 'Stop';" ^
"Install-WindowsFeature Web-Server -IncludeManagementTools;" ^
"Set-Content -Path 'C:\inetpub\wwwroot\index.html' -Value 'dockur-iis-ok' -Encoding Ascii;" ^
"if (-not (Get-NetFirewallRule -DisplayName 'Dockur IIS HTTP 80' -ErrorAction SilentlyContinue)) { New-NetFirewallRule -DisplayName 'Dockur IIS HTTP 80' -Direction Inbound -Action Allow -Protocol TCP -LocalPort 80 | Out-Null };" ^
"Start-Service W3SVC"
if errorlevel 1 exit /b 1
EOF
- name: Start Dockur with Windows Server 2019
run: |
mkdir -p "$RUNNER_TEMP/dockur-2019"
docker run -d --name dockur-win \
-e VERSION=2019 \
-p 8006:8006 \
-p 8080:80 \
-p 3389:3389/tcp \
-p 3389:3389/udp \
--device /dev/kvm \
--device /dev/net/tun \
--cap-add NET_ADMIN \
-v "$RUNNER_TEMP/dockur-2019:/storage" \
-v "$RUNNER_TEMP/dockur-oem:/oem" \
--stop-timeout 120 \
docker.io/dockurr/windows
- name: Wait for Dockur web UI
run: |
for i in $(seq 1 60); do
if curl -fsS http://127.0.0.1:8006 > /dev/null; then
echo "Dockur UI is reachable."
break
fi
sleep 5
done
curl -fsS http://127.0.0.1:8006 > /dev/null
- name: Wait for Windows RDP
run: |
for i in $(seq 1 120); do
if timeout 5 bash -lc "</dev/tcp/127.0.0.1/3389" 2>/dev/null; then
echo "Windows RDP port is reachable."
exit 0
fi
sleep 15
done
echo "Windows RDP port never became reachable."
exit 1
- name: Wait for IIS marker page
run: |
for i in $(seq 1 40); do
if curl -fsS http://127.0.0.1:8080 | tee /tmp/dockur-iis-page.txt | grep -q "dockur-iis-ok"; then
echo "IIS marker page is reachable."
exit 0
fi
sleep 15
done
echo "IIS marker page never became reachable."
exit 1
- name: Show IIS marker page
if: always()
run: curl -fsS http://127.0.0.1:8080 || true
- name: Show container status
if: always()
run: |
docker ps -a
docker inspect dockur-win --format '{{.State.Status}}' || true
- name: Show Dockur logs
if: always()
run: docker logs --tail 200 dockur-win || true