From e2023b4230efd62336db6bd3c52142173b436973 Mon Sep 17 00:00:00 2001 From: selfhoster1312 Date: Thu, 9 Jul 2026 19:53:54 +0200 Subject: [PATCH] feat: Make debian packages --- .github/workflows/release.yml | 69 +++++++++++++++++-- debian/gatus/DEBIAN/postinst | 3 + debian/gatus/etc/gatus/gatus.yaml | 13 ++++ debian/gatus/etc/systemd/system/gatus.service | 20 ++++++ 4 files changed, 100 insertions(+), 5 deletions(-) create mode 100755 debian/gatus/DEBIAN/postinst create mode 100644 debian/gatus/etc/gatus/gatus.yaml create mode 100644 debian/gatus/etc/systemd/system/gatus.service diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index ae69915..bfdff76 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -1,6 +1,7 @@ name: Release env: + PKG_VERSION: "2025.07.09-1" # TODO: actions/checkout only supports GITHUB repos... GATUS_REPO: "selfhoster1312/gatus" GATUS_REF: "fork" @@ -39,15 +40,45 @@ jobs: with: repository: "${{ env.GATUS_REPO }}" ref: "${{ env.GATUS_REF }}" + - name: Checkout sources for packaging + uses: actions/checkout@v7 + with: + path: "__CI_PREBUILD__" - uses: actions/setup-go@v6 with: go-version: 1.26.3 - - name: Prepare dist folder - run: mkdir -p dist + - name: Prepare dist folder and debian bin folder + run: | + mkdir -p dist + mkdir -p __CI_PREBUILD__/debian/gatus/usr/local/bin/ - name: Build binary for amd64 - run: go build -o dist/gatus-amd64 + run: | + go build -o dist/gatus-amd64 + cp dist/gatus-amd64 __CI_PREBUILD__/debian/gatus/usr/local/bin/gatus + - name: Build deb for amd64 + uses: jiro4989/build-deb-action@86e86ceb88b13157fa569663d43c89346505fc3e + with: + package: gatus + package_root: __CI_PREBUILD__/debian/gatus + maintainer: selfhoster1312 + version: ${{ env.PKG_VERSION }} + arch: amd64 + id: build-deb-amd64 + - name: Build binary for arm64 - run: GOARCH="arm64" go build -o dist/gatus-arm64 + run: | + GOARCH="arm64" go build -o dist/gatus-arm64 + cp dist/gatus-arm64 __CI_PREBUILD__/debian/gatus/usr/local/bin/gatus + - name: Build deb for arm64 + uses: jiro4989/build-deb-action@86e86ceb88b13157fa569663d43c89346505fc3e + with: + package: gatus + package_root: __CI_PREBUILD__/debian/gatus + maintainer: selfhoster1312 + version: ${{ env.PKG_VERSION }} + arch: arm64 + id: build-deb-arm64 + - name: Upload binaries to release uses: svenstaro/upload-release-action@29e53e917877a24fad85510ded594ab3c9ca12de # 2.11.5 if: env.preview == 'false' @@ -57,7 +88,23 @@ jobs: file_glob: true tag: ${{ github.ref_name }} overwrite: true - + - name: Upload amd64 deb to release + uses: svenstaro/upload-release-action@29e53e917877a24fad85510ded594ab3c9ca12de # 2.11.5 + if: env.preview == 'false' + with: + repo_token: ${{ secrets.GITHUB_TOKEN }} + file: ${{ steps.build-deb-amd64.outputs.file_name }} + tag: ${{ github.ref_name }} + overwrite: true + - name: Upload arm64 deb to release + uses: svenstaro/upload-release-action@29e53e917877a24fad85510ded594ab3c9ca12de # 2.11.5 + if: env.preview == 'false' + with: + repo_token: ${{ secrets.GITHUB_TOKEN }} + file: ${{ steps.build-deb-arm64.outputs.file_name }} + tag: ${{ github.ref_name }} + overwrite: true + - name: Upload gatus-amd64 as artifact uses: actions/upload-artifact@v7 if: env.preview == 'true' @@ -65,6 +112,12 @@ jobs: name: gatus-amd64 path: dist/gatus-amd64 archive: false + - name: Upload gatus-amd64 deb as artifact + uses: actions/upload-artifact@v7 + if: env.preview == 'true' + with: + path: ${{ steps.build-deb-amd64.outputs.file_name }} + archive: false - name: Upload gatus-arm64 as artifact uses: actions/upload-artifact@v7 @@ -73,3 +126,9 @@ jobs: name: gatus-arm64 path: dist/gatus-arm64 archive: false + - name: Upload gatus-arm64 deb as artifact + uses: actions/upload-artifact@v7 + if: env.preview == 'true' + with: + path: ${{ steps.build-deb-arm64.outputs.file_name }} + archive: false diff --git a/debian/gatus/DEBIAN/postinst b/debian/gatus/DEBIAN/postinst new file mode 100755 index 0000000..353a5f3 --- /dev/null +++ b/debian/gatus/DEBIAN/postinst @@ -0,0 +1,3 @@ +adduser --group --system gatus +mkdir -p /var/lib/gatus +chown -R gatus: /var/lib/gatus \ No newline at end of file diff --git a/debian/gatus/etc/gatus/gatus.yaml b/debian/gatus/etc/gatus/gatus.yaml new file mode 100644 index 0000000..e2cf6a6 --- /dev/null +++ b/debian/gatus/etc/gatus/gatus.yaml @@ -0,0 +1,13 @@ +web: + port: 8081 +storage: + type: "sqlite" + path: "/var/lib/gatus/gatus.sqlite" + maximum-number-of-results: 1000 +endpoints: + - name: localhost + url: "icmp://127.0.0.1" + group: pings + interval: 10s + conditions: + - "[CONNECTED] == true" diff --git a/debian/gatus/etc/systemd/system/gatus.service b/debian/gatus/etc/systemd/system/gatus.service new file mode 100644 index 0000000..00a6fb2 --- /dev/null +++ b/debian/gatus/etc/systemd/system/gatus.service @@ -0,0 +1,20 @@ +[Unit] +Description=Gatus +Documentation=https://github.com/TwiN/gatus +After=network.target network-online.target +Requires=network-online.target + +[Service] +Type=notify +User=gatus +Group=gatus +Environment=GATUS_CONFIG_PATH=/etc/gatus/gatus.yaml +ExecStart=/usr/local/bin/gatus +TimeoutStopSec=5s +LimitNOFILE=1048576 +PrivateTmp=true +ProtectSystem=full +AmbientCapabilities=CAP_NET_BIND_SERVICE + +[Install] +WantedBy=multi-user.target