# syntax=docker/dockerfile:1 # escape=` ARG MAJOR_VERSION=7.0 ARG ZBX_VERSION=${MAJOR_VERSION} ARG BUILD_BASE_IMAGE=zabbix-build-base:ltsc2022-agent2-${ZBX_VERSION} FROM ${BUILD_BASE_IMAGE} as builder SHELL ["powershell", "-Command", "$ErrorActionPreference = 'Stop'; $ProgressPreference = 'SilentlyContinue';"] ARG MAJOR_VERSION=7.0 ARG ZBX_VERSION=${MAJOR_VERSION} ARG ZABBIX_VERSION_RC_NUM=2400 ARG ZBX_SOURCES=https://git.zabbix.com/scm/zbx/zabbix.git ARG GIT_BRANCH=master ENV ZBX_SOURCES=$ZBX_SOURCES MAJOR_VERSION=$MAJOR_VERSION GIT_BRANCH=${GIT_BRANCH:-$ZBX_VERSION} ` MONGODB_PLUGIN_SOURCES=https://git.zabbix.com/scm/ap/mongodb.git MONGODB_PLUGIN_VERSION=${GIT_BRANCH:-$ZBX_VERSION} ` POSTGRESQL_PLUGIN_SOURCES=https://git.zabbix.com/scm/ap/postgresql.git POSTGRESQL_PLUGIN_VERSION=${GIT_BRANCH:-$ZBX_VERSION} LABEL org.opencontainers.image.title="Zabbix agent 2 build (Windows)" ` org.opencontainers.image.authors="Alexey Pustovalov " ` org.opencontainers.image.vendor="Zabbix SIA" ` org.opencontainers.image.url="https://zabbix.com/" ` org.opencontainers.image.description="Zabbix build for agent 2 images based on Windows" ` org.opencontainers.image.licenses="AGPL v3.0" ` org.opencontainers.image.documentation="https://www.zabbix.com/documentation/${MAJOR_VERSION}/manual/installation/containers" ` org.opencontainers.image.version="${ZBX_VERSION}" ` org.opencontainers.image.source="${ZBX_SOURCES}" RUN Set-Location -Path $env:SystemDrive\.; ` ` Import-Module (Get-ChildItem $env:VS_PATH -Recurse -File -Filter Microsoft.VisualStudio.DevShell.dll).FullName; ` Enter-VsDevShell -VsInstallPath $env:VS_PATH -SkipAutomaticLocation -DevCmdArguments """-arch=$env:BUILD_ARCH"""; ` ` Write-Host ('Checkout GIT {0} ({1}) repository ...' -f $env:ZBX_SOURCES, $GIT_BRANCH); ` git -c advice.detachedHead=false clone $env:ZBX_SOURCES --branch $GIT_BRANCH --depth 1 --single-branch $env:SystemDrive\zabbix-$env:ZBX_VERSION; ` ` Write-Host ('Building Zabbix {0} version ...' -f $env:ZBX_VERSION); ` Set-Location -Path $env:SystemDrive\zabbix-$env:ZBX_VERSION; ` $ZbxRevision=(git rev-parse --short HEAD); ` (Get-Content src\go\pkg\version\version.go).replace('{ZABBIX_REVISION}', $ZbxRevision) | Set-Content src\go\pkg\version\version.go; ` Set-Location -Path $env:SystemDrive\zabbix-$env:ZBX_VERSION\build\mingw; ` mingw32-make -j"""$env:NUMBER_OF_PROCESSORS""" ` CGO_LDFLAGS="""-lcrypt32 -L$env:BUILD_OUTPUT\openssl\lib -L$env:BUILD_OUTPUT\pcre2\lib""" ` PCRE2=$env:BUILD_OUTPUT\pcre2 ` OPENSSL=$env:BUILD_OUTPUT\openssl ` RFLAGS="""-DZABBIX_VERSION_RC_NUM=2400"""; ` ` Write-Host 'Verifying build ("zabbix_agent2.exe -V") ...'; ` & $env:SystemDrive\zabbix-$env:ZBX_VERSION\bin\win64\zabbix_agent2.exe -V; ` dumpbin /dependents $env:SystemDrive\zabbix-$env:ZBX_VERSION\bin\win64\zabbix_agent2.exe; ` ` New-Item -ItemType directory -Path $env:SystemDrive\zabbix2 | Out-Null; ` New-Item -ItemType directory -Path $env:SystemDrive\zabbix2\sbin | Out-Null; ` New-Item -ItemType directory -Path $env:SystemDrive\zabbix2\conf | Out-Null; ` ` Copy-Item -Path $env:SystemDrive\zabbix-$env:ZBX_VERSION\bin\win64\zabbix_agent2.exe $env:SystemDrive\zabbix2\sbin; ` Copy-Item -Path $env:SystemDrive\zabbix-$env:ZBX_VERSION\src\go\conf\zabbix_agent2.win.conf $env:SystemDrive\zabbix2\conf; ` mingw32-make -s clean; ` ` Set-Location -Path $env:SystemDrive; ` Write-Host ('Building Zabbix MongoDB plugin {0} version ...' -f $env:MONGODB_PLUGIN_VERSION); ` git -c advice.detachedHead=false clone $env:MONGODB_PLUGIN_SOURCES --branch $MONGODB_PLUGIN_VERSION --depth 1 --single-branch $env:SystemDrive\mongodb_plugin; ` Set-Location -Path $env:SystemDrive\mongodb_plugin; ` mingw32-make; ` mv $env:SystemDrive\mongodb_plugin\zabbix-agent2-plugin-mongodb.exe $env:SystemDrive\mongodb_plugin\zabbix-agent2-plugin-mongodb.exe; ` Write-Host 'Verifying build ("zabbix-agent2-plugin-mongodb.exe -V") ...'; ` & $env:SystemDrive\mongodb_plugin\zabbix-agent2-plugin-mongodb.exe -V; ` ` Set-Location -Path $env:SystemDrive; ` Write-Host ('Building Zabbix PostgreSQL plugin {0} version ...' -f $env:POSTGRESQL_PLUGIN_VERSION); ` git -c advice.detachedHead=false clone $env:POSTGRESQL_PLUGIN_SOURCES --branch $POSTGRESQL_PLUGIN_VERSION --depth 1 --single-branch $env:SystemDrive\postgresql_plugin; ` Set-Location -Path $env:SystemDrive\postgresql_plugin; ` mingw32-make; ` mv $env:SystemDrive\postgresql_plugin\zabbix-agent2-plugin-postgresql.exe $env:SystemDrive\postgresql_plugin\zabbix-agent2-plugin-postgresql.exe; ` Write-Host 'Verifying build ("zabbix-agent2-plugin-postgresql.exe -V") ...'; ` & $env:SystemDrive\postgresql_plugin\zabbix-agent2-plugin-postgresql.exe -V; ` Remove-Item -Recurse -Force -Path $(go env GOCACHE); ` Write-Host 'Zabbix binaries are compiled...';