From aac7e7589f7c326c32f0de0d6511e65831697dde Mon Sep 17 00:00:00 2001
From: Ada <ada@gnous.eu>
Date: Sat, 25 May 2024 14:26:08 +0200
Subject: [PATCH] :construction_worker: Add release stage
---
.gitignore | 4 ++
.goreleaser.yaml | 68 +++++++++++++++++++++++++++
.woodpecker/release.yaml | 11 +++++
config.example.toml | 2 +-
deployment/goreleaser/postremove.sh | 7 +++
deployment/goreleaser/preinstall.sh | 12 +++++
deployment/goreleaser/preremove.sh | 1 +
deployment/goreleaser/spiegel.service | 12 +++++
8 files changed, 116 insertions(+), 1 deletion(-)
create mode 100644 .gitignore
create mode 100644 .goreleaser.yaml
create mode 100644 .woodpecker/release.yaml
create mode 100644 deployment/goreleaser/postremove.sh
create mode 100644 deployment/goreleaser/preinstall.sh
create mode 100644 deployment/goreleaser/preremove.sh
create mode 100644 deployment/goreleaser/spiegel.service
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..1361a1c
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,4 @@
+dist/
+.idea
+config.toml
+spiegel
\ No newline at end of file
diff --git a/.goreleaser.yaml b/.goreleaser.yaml
new file mode 100644
index 0000000..8fe4a07
--- /dev/null
+++ b/.goreleaser.yaml
@@ -0,0 +1,68 @@
+# yaml-language-server: $schema=https://goreleaser.com/static/schema.json
+# vim: set ts=2 sw=2 tw=0 fo=cnqoj
+
+gitea_urls:
+ api: https://git.gnous.eu/api/v1
+ download: https://git.gnous.eu
+ skip_tls_verify: false
+
+before:
+ hooks:
+ - go mod tidy
+
+builds:
+ - env:
+ - CGO_ENABLED=0
+ goos:
+ - linux
+ - darwin
+ goarch:
+ - amd64
+ - arm64
+
+archives:
+ - format: tar.gz
+ name_template: >-
+ {{ .ProjectName }}_
+ {{- title .Os }}_
+ {{- if eq .Arch "amd64" }}x86_64
+ {{- else if eq .Arch "386" }}i386
+ {{- else }}{{ .Arch }}{{ end }}
+ {{- if .Arm }}v{{ .Arm }}{{ end }}
+
+nfpms:
+ -
+ id: spiegel
+ package_name: spiegel
+ file_name_template: "{{ .ConventionalFileName }}"
+ vendor: Ada
+ homepage: https://git.gnous.eu/ada/spiegel
+ maintainer: Ada <ada@gnous.eu>
+ description: A light paste server
+ license: MPL-2.0
+ formats:
+ - deb
+ - rpm
+ - archlinux
+ umask: 002
+ provides:
+ - spiegel
+ contents:
+ - src: config.example.toml
+ dst: /etc/spiegel/config.toml
+ - src: deployment/goreleaser/spiegel.service
+ dst: /usr/lib/systemd/system/spiegel.service
+ scripts:
+ preinstall: "deployment/goreleaser/preinstall.sh"
+ preremove: "deployment/goreleaser/preremove.sh"
+ postremove: "deployment/goreleaser/postremove.sh"
+
+checksum:
+ algorithm: sha256
+
+changelog:
+ sort: asc
+ filters:
+ exclude:
+ - "^docs:"
+ - "^test:"
diff --git a/.woodpecker/release.yaml b/.woodpecker/release.yaml
new file mode 100644
index 0000000..9468be7
--- /dev/null
+++ b/.woodpecker/release.yaml
@@ -0,0 +1,11 @@
+steps:
+ - name: Release
+ image: golang:1.22.3
+ commands:
+ - go install github.com/goreleaser/goreleaser@latest
+ - goreleaser release
+ secrets: [ gitea_token ]
+ when:
+ event: tag
+ repo: ada/spiegel
+ depends_on: []
diff --git a/config.example.toml b/config.example.toml
index c69d798..5818c30 100644
--- a/config.example.toml
+++ b/config.example.toml
@@ -1,4 +1,4 @@
-clonedirectory = "archive/"
+clonedirectory = "/var/lib/spiegel/"
interval = 10
[log]
diff --git a/deployment/goreleaser/postremove.sh b/deployment/goreleaser/postremove.sh
new file mode 100644
index 0000000..b6a802e
--- /dev/null
+++ b/deployment/goreleaser/postremove.sh
@@ -0,0 +1,7 @@
+if getent passwd spiegel > /dev/null; then
+ userdel -r spiegel
+fi
+
+if getent group spiegel > /dev/null; then
+ groupdel spiegel
+fi
\ No newline at end of file
diff --git a/deployment/goreleaser/preinstall.sh b/deployment/goreleaser/preinstall.sh
new file mode 100644
index 0000000..c457350
--- /dev/null
+++ b/deployment/goreleaser/preinstall.sh
@@ -0,0 +1,12 @@
+if ! getent group spiegel > /dev/null; then
+ groupadd -r spiegel
+fi
+
+if ! getent passwd spiegel > /dev/null; then
+ useradd -r -d /var/lib/spiegel -s /sbin/nologin -g spiegel -c "Spiegel server" spiegel
+fi
+if ! test -d /var/lib/spiegel; then
+ mkdir -p /var/lib/spiegel
+ chmod 0750 /var/lib/spiegel
+ chown -R spiegel:spiegel /var/lib/spiegel
+fi
diff --git a/deployment/goreleaser/preremove.sh b/deployment/goreleaser/preremove.sh
new file mode 100644
index 0000000..176f5f0
--- /dev/null
+++ b/deployment/goreleaser/preremove.sh
@@ -0,0 +1 @@
+systemctl stop spiegel
\ No newline at end of file
diff --git a/deployment/goreleaser/spiegel.service b/deployment/goreleaser/spiegel.service
new file mode 100644
index 0000000..ee7eb85
--- /dev/null
+++ b/deployment/goreleaser/spiegel.service
@@ -0,0 +1,12 @@
+[Unit]
+Description=A light git repository mirror tools
+After=network.target
+
+[Service]
+Type=simple
+User=spiegel
+
+ExecStart=/usr/bin/spiegel /etc/spiegel/config.toml
+
+[Install]
+WantedBy=multi-user.target