diff --git a/.github/workflows/linux-control-agent.yml b/.github/workflows/linux-control-agent.yml index c860720..17c9c29 100644 --- a/.github/workflows/linux-control-agent.yml +++ b/.github/workflows/linux-control-agent.yml @@ -10,7 +10,7 @@ permissions: jobs: build-and-test: - runs-on: ubuntu-latest + runs-on: ubuntu-24.04 steps: - name: Checkout uses: actions/checkout@v6 @@ -50,3 +50,46 @@ jobs: - name: Publish agent arm64 run: dotnet publish src/ServerMonitorManager.Agent/ServerMonitorManager.Agent.csproj --configuration Release --runtime linux-arm64 --self-contained true -p:PublishSingleFile=true -p:PublishTrimmed=true + + - name: Build systemd smoke release + run: | + dotnet publish src/ServerMonitorManager.Agent/ServerMonitorManager.Agent.csproj \ + --configuration Release --runtime linux-x64 --self-contained true \ + -p:PublishSingleFile=true -p:PublishTrimmed=true -o smoke/agent + dotnet publish src/ServerMonitorManager.Control/ServerMonitorManager.Control.csproj \ + --configuration Release --runtime linux-x64 --self-contained true \ + -p:PublishSingleFile=true -p:PublishTrimmed=true -o smoke/control + install -d smoke/deploy smoke/bootstrap + install -m 0644 deploy/ochenstarik-smm-control.service smoke/deploy/ + install -m 0644 deploy/ochenstarik-smm-agent.service smoke/deploy/ + install -m 0644 deploy/ochenstarik-smm-firewall.service smoke/deploy/ + install -m 0755 deploy/ochenstarik-smm-policy-apply smoke/deploy/ + install -m 0755 deploy/ochenstarik-server-monitor-manager.sh smoke/bootstrap/ + tar -C smoke -czf smoke-release.tar.gz agent control deploy bootstrap + sha256sum smoke-release.tar.gz > smoke-release.tar.gz.sha256 + + - name: Verify repeated systemd installation + run: | + set -Eeuo pipefail + sudo deploy/ochenstarik-server-monitor-manager.sh install-control \ + smoke-release.tar.gz 127.0.0.1 7443 + for _ in {1..30}; do + curl --fail --silent --cacert /etc/ochenstarik-server-monitor-manager/control-ca.crt \ + https://127.0.0.1:7443/healthz && break + sleep 1 + done + curl --fail --silent --show-error \ + --cacert /etc/ochenstarik-server-monitor-manager/control-ca.crt \ + https://127.0.0.1:7443/healthz + sudo deploy/ochenstarik-server-monitor-manager.sh install-control \ + smoke-release.tar.gz 127.0.0.1 7443 + sudo systemctl restart ochenstarik-smm-control.service + sudo systemctl is-active --quiet ochenstarik-smm-control.service + curl --fail --silent --show-error \ + --retry 10 --retry-all-errors --retry-delay 1 \ + --cacert /etc/ochenstarik-server-monitor-manager/control-ca.crt \ + https://127.0.0.1:7443/healthz + + - name: Clean up systemd smoke installation + if: always() + run: sudo deploy/ochenstarik-server-monitor-manager.sh uninstall-control --confirm-destroy-control || true