summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Magefile.go267
1 files changed, 0 insertions, 267 deletions
diff --git a/Magefile.go b/Magefile.go
index daabc74..9a58046 100644
--- a/Magefile.go
+++ b/Magefile.go
@@ -7,40 +7,10 @@ import (
"fmt"
"os"
"os/exec"
- "strings"
"github.com/magefile/mage/mg"
)
-const (
- // SSH targets for native packaging
- freebsdHost = "f0.lan.buetow.org"
- freebsdSSH = "-p 22"
- openbsdHost = "rex@fishfinger.buetow.org"
-
- // NFS path on freebsdHost where the PV is mounted
- pvBase = "/data/nfs/k3svolumes/pkgrepo"
-
- // Repo URL paths
- freebsdRepoPath = "freebsd/FreeBSD:15:amd64/latest"
- openbsdRepoPath = "openbsd/7.8/packages/amd64"
-)
-
-// version reads the version from internal/version.go, stripping the "v" prefix.
-func version() (string, error) {
- data, err := os.ReadFile("internal/version.go")
- if err != nil {
- return "", fmt.Errorf("reading version.go: %w", err)
- }
- for _, line := range strings.Split(string(data), "\n") {
- if strings.Contains(line, "Version") && strings.Contains(line, "=") {
- v := strings.Trim(strings.Split(line, "\"")[1], "v")
- return v, nil
- }
- }
- return "", fmt.Errorf("version not found in internal/version.go")
-}
-
// Build builds the gogios binary for the current platform.
func Build() error {
fmt.Println("Building...")
@@ -103,240 +73,3 @@ func Test() error {
testCmd.Stderr = os.Stderr
return testCmd.Run()
}
-
-// crossBuild compiles gogios for the given GOOS and outputs to the given path.
-func crossBuild(goos, output string) error {
- fmt.Printf("Cross-compiling for %s/amd64...\n", goos)
- env := os.Environ()
- env = append(env, "GOOS="+goos, "GOARCH=amd64")
- cmd := exec.Command("go", "build", "-o", output, "cmd/gogios/main.go")
- cmd.Env = env
- cmd.Stdout = os.Stdout
- cmd.Stderr = os.Stderr
- return cmd.Run()
-}
-
-// sshRun executes a command on a remote host via SSH.
-func sshRun(host, command string) error {
- args := []string{}
- if host == freebsdHost {
- args = append(args, "-p", "22")
- }
- args = append(args, host, command)
- cmd := exec.Command("ssh", args...)
- cmd.Stdout = os.Stdout
- cmd.Stderr = os.Stderr
- return cmd.Run()
-}
-
-// scpTo copies a local file to a remote host via SCP.
-func scpTo(localPath, host, remotePath string) error {
- args := []string{}
- if host == freebsdHost {
- args = append(args, "-P", "22")
- }
- args = append(args, localPath, host+":"+remotePath)
- cmd := exec.Command("scp", args...)
- cmd.Stdout = os.Stdout
- cmd.Stderr = os.Stderr
- return cmd.Run()
-}
-
-// scpFrom copies a remote file to a local path via SCP.
-func scpFrom(host, remotePath, localPath string) error {
- args := []string{}
- if host == freebsdHost {
- args = append(args, "-P", "22")
- }
- args = append(args, host+":"+remotePath, localPath)
- cmd := exec.Command("scp", args...)
- cmd.Stdout = os.Stdout
- cmd.Stderr = os.Stderr
- return cmd.Run()
-}
-
-// BuildFreebsd cross-compiles gogios for FreeBSD amd64.
-func BuildFreebsd() error {
- return crossBuild("freebsd", "gogios-freebsd")
-}
-
-// BuildOpenbsd cross-compiles gogios for OpenBSD amd64.
-func BuildOpenbsd() error {
- return crossBuild("openbsd", "gogios-openbsd")
-}
-
-// PkgFreebsd builds the FreeBSD package on f0 and uploads it to the repo.
-// Cross-compiles locally, ships the binary to f0, packages with pkg create,
-// regenerates repo metadata, and copies to the PV.
-func PkgFreebsd() error {
- if err := BuildFreebsd(); err != nil {
- return err
- }
-
- ver, err := version()
- if err != nil {
- return err
- }
-
- fmt.Printf("Packaging gogios %s for FreeBSD...\n", ver)
-
- // Write a local temp script, scp it, then execute via /bin/sh on f0
- script := fmt.Sprintf(`#!/bin/sh
-set -e
-cd /tmp && rm -rf gogios-pkg
-mkdir -p gogios-pkg/stage/usr/local/bin gogios-pkg/out/All
-cp /tmp/gogios gogios-pkg/stage/usr/local/bin/gogios
-chmod 755 gogios-pkg/stage/usr/local/bin/gogios
-
-printf 'bin/gogios\n' > gogios-pkg/plist
-
-cat > gogios-pkg/+MANIFEST <<MANIFEST
-name: gogios
-version: "%s"
-origin: local/gogios
-comment: "Monitoring tool with email alerts and HTML status page"
-desc: "Gogios is a lightweight monitoring tool written in Go."
-maintainer: "paul@buetow.org"
-www: "https://codeberg.org/snonux/gogios"
-prefix: /usr/local
-MANIFEST
-
-doas pkg create -M gogios-pkg/+MANIFEST -p gogios-pkg/plist -r gogios-pkg/stage -o gogios-pkg/out/All
-doas pkg repo gogios-pkg/out
-doas cp -Rf gogios-pkg/out/* %s/%s/
-rm -rf gogios-pkg /tmp/gogios
-echo "FreeBSD package gogios-%s uploaded to repo"
-`, ver, pvBase, freebsdRepoPath, ver)
-
- if err := os.WriteFile("/tmp/pkgfreebsd.sh", []byte(script), 0o755); err != nil {
- return err
- }
- defer os.Remove("/tmp/pkgfreebsd.sh")
-
- if err := scpTo("gogios-freebsd", freebsdHost, "/tmp/gogios"); err != nil {
- return fmt.Errorf("scp binary to f0: %w", err)
- }
- if err := scpTo("/tmp/pkgfreebsd.sh", freebsdHost, "/tmp/pkgfreebsd.sh"); err != nil {
- return fmt.Errorf("scp script to f0: %w", err)
- }
-
- return sshRun(freebsdHost, "/bin/sh /tmp/pkgfreebsd.sh && rm /tmp/pkgfreebsd.sh")
-}
-
-// PkgOpenbsd builds the OpenBSD package on fishfinger and uploads it to the repo.
-// Cross-compiles locally, ships the binary to fishfinger, packages with pkg_create,
-// then copies the .tgz to the PV via f0.
-func PkgOpenbsd() error {
- if err := BuildOpenbsd(); err != nil {
- return err
- }
-
- ver, err := version()
- if err != nil {
- return err
- }
-
- fmt.Printf("Packaging gogios %s for OpenBSD...\n", ver)
-
- // Ship binary to fishfinger
- if err := scpTo("gogios-openbsd", openbsdHost, "/tmp/gogios"); err != nil {
- return fmt.Errorf("scp binary to fishfinger: %w", err)
- }
-
- // Write a local temp script, scp it, then execute on fishfinger
- script := fmt.Sprintf(`#!/bin/sh
-set -e
-cd /tmp && doas rm -rf gogios-pkg
-mkdir -p gogios-pkg/stage/usr/local/bin gogios-pkg/out
-cp /tmp/gogios gogios-pkg/stage/usr/local/bin/gogios
-chmod 755 gogios-pkg/stage/usr/local/bin/gogios
-
-printf 'usr/local/bin/gogios\n' > gogios-pkg/plist
-
-cat > gogios-pkg/desc <<DESC
-Gogios is a lightweight monitoring tool written in Go. It runs checks
-(ping, HTTP, TLS, DNS, etc.) and sends email alerts and generates an
-HTML status page.
-DESC
-
-doas pkg_create \
- -D COMMENT="Monitoring tool with email alerts and HTML status page" \
- -d gogios-pkg/desc \
- -f gogios-pkg/plist \
- -B gogios-pkg/stage \
- -p / \
- gogios-pkg/out/gogios-%s.tgz
-
-# Sign the package with signify via pkg_sign
-mkdir -p gogios-pkg/signed
-doas pkg_sign -s signify2 -s /etc/signify/custom-pkg.sec \
- -o gogios-pkg/signed gogios-pkg/out/gogios-%s.tgz
-# Replace unsigned with signed
-mv gogios-pkg/signed/gogios-%s.tgz gogios-pkg/out/gogios-%s.tgz
-echo "OpenBSD package built and signed"
-`, ver, ver, ver, ver)
-
- if err := os.WriteFile("/tmp/pkgopenbsd.sh", []byte(script), 0o755); err != nil {
- return err
- }
- defer os.Remove("/tmp/pkgopenbsd.sh")
-
- if err := scpTo("/tmp/pkgopenbsd.sh", openbsdHost, "/tmp/pkgopenbsd.sh"); err != nil {
- return fmt.Errorf("scp script to fishfinger: %w", err)
- }
-
- if err := sshRun(openbsdHost, "/bin/sh /tmp/pkgopenbsd.sh && rm /tmp/pkgopenbsd.sh"); err != nil {
- return fmt.Errorf("building OpenBSD package: %w", err)
- }
-
- // Copy package from fishfinger to local /tmp, then to f0's PV
- localTgz := fmt.Sprintf("/tmp/gogios-%s.tgz", ver)
- remoteTgz := fmt.Sprintf("/tmp/gogios-pkg/out/gogios-%s.tgz", ver)
-
- if err := scpFrom(openbsdHost, remoteTgz, localTgz); err != nil {
- return fmt.Errorf("scp from fishfinger: %w", err)
- }
-
- if err := scpTo(localTgz, freebsdHost, localTgz); err != nil {
- return fmt.Errorf("scp to f0: %w", err)
- }
-
- pvDest := fmt.Sprintf("%s/%s/", pvBase, openbsdRepoPath)
- if err := sshRun(freebsdHost, fmt.Sprintf("doas cp %s %s", localTgz, pvDest)); err != nil {
- return fmt.Errorf("copying to PV: %w", err)
- }
-
- // Clean up
- os.Remove(localTgz)
- sshRun(openbsdHost, "doas rm -rf /tmp/gogios-pkg /tmp/gogios")
- sshRun(freebsdHost, fmt.Sprintf("rm -f %s", localTgz))
-
- fmt.Printf("OpenBSD package gogios-%s uploaded to repo\n", ver)
- return nil
-}
-
-// Pkg builds and uploads packages for both FreeBSD and OpenBSD.
-func Pkg() error {
- if err := PkgFreebsd(); err != nil {
- return err
- }
- return PkgOpenbsd()
-}
-
-// DeployOpenbsd copies the gogios binary to the frontends conf directory (legacy).
-func DeployOpenbsd() error {
- fmt.Println("Copying binary...")
- cpCmd := exec.Command("cp", "gogios-openbsd", "/home/paul/git/conf/frontends/usr/local/bin/gogios")
- cpCmd.Stdout = os.Stdout
- cpCmd.Stderr = os.Stderr
- return cpCmd.Run()
-}
-
-// Openbsd builds and deploys the gogios binary for OpenBSD (legacy).
-// Prefer PkgOpenbsd for package-based deployment.
-func Openbsd() error {
- if err := BuildOpenbsd(); err != nil {
- return err
- }
- return DeployOpenbsd()
-}