Caddyview/.forgejo/workflows/release.yml
SW 8d60e9c745
Some checks failed
Release / release (push) Failing after 53s
feat: incremental history cache, errors tab, Forgejo migration
- Cache current log file incrementally by line count/inode to avoid
  re-processing the whole file every refresh.
- Collect 4xx/5xx errors during aggregation and add [4] ERRORS tab.
- Update README URLs and brew tap to point to git.janvete.com.
- Replace GitHub Actions workflow with Forgejo Actions release workflow.
2026-09-10 09:10:14 +02:00

128 lines
4.4 KiB
YAML

name: Release
on:
push:
tags:
- 'v[0-9]*'
jobs:
release:
runs-on: ubuntu-latest
container:
image: golang:1.27
steps:
- name: Checkout source
env:
FORGEJO_TOKEN: ${{ secrets.FORGEJO_TOKEN }}
run: |
git clone "https://token:${FORGEJO_TOKEN}@git.janvete.com/seth/Caddyview.git" src
cd src
git checkout "${{ github.ref_name }}"
- name: Build binaries and archives
working-directory: src
run: |
VERSION=${{ github.ref_name }}
mkdir -p dist
for PAIR in darwin/arm64 darwin/amd64 linux/amd64; do
OS=${PAIR%/*}
ARCH=${PAIR#*/}
GOOS=$OS GOARCH=$ARCH go build -ldflags="-s -w" -o dist/caddyview-${OS}-${ARCH} .
STAGING=$(mktemp -d)
cp dist/caddyview-${OS}-${ARCH} ${STAGING}/caddyview
tar -czf dist/caddyview-${VERSION}-${OS}-${ARCH}.tar.gz -C ${STAGING} caddyview
rm -rf ${STAGING}
done
echo "=== SHA256 checksums ==="
sha256sum dist/*.tar.gz
- name: Create Forgejo Release
working-directory: src
env:
FORGEJO_TOKEN: ${{ secrets.FORGEJO_TOKEN }}
FORGEJO_URL: https://git.janvete.com
run: |
VERSION=${{ github.ref_name }}
API="${FORGEJO_URL}/api/v1/repos/seth/Caddyview"
RELEASE_JSON=$(curl -sS -H "Authorization: token ${FORGEJO_TOKEN}" \
-H "Content-Type: application/json" \
-X POST \
-d "{\"tag_name\":\"${VERSION}\",\"name\":\"${VERSION}\",\"draft\":false,\"prerelease\":false}" \
"${API}/releases")
echo "Release response: ${RELEASE_JSON}"
RELEASE_ID=$(echo "${RELEASE_JSON}" | grep -o '"id":[0-9]*' | head -1 | cut -d: -f2)
if [ -z "${RELEASE_ID}" ]; then
echo "Failed to create release"
exit 1
fi
echo "release_id=${RELEASE_ID}" >> "$GITHUB_ENV"
for ARCHIVE in dist/*.tar.gz; do
NAME=$(basename "${ARCHIVE}")
curl -sS -H "Authorization: token ${FORGEJO_TOKEN}" \
-H "Content-Type: application/gzip" \
--data-binary "@${ARCHIVE}" \
"${API}/releases/${RELEASE_ID}/assets?name=${NAME}"
echo "Uploaded ${NAME}"
done
- name: Update Homebrew formula
working-directory: src
env:
TAP_TOKEN: ${{ secrets.TAP_TOKEN }}
run: |
VERSION=${{ github.ref_name }}
VER=${VERSION#v}
SHA_ARM64=$(sha256sum dist/caddyview-${VERSION}-darwin-arm64.tar.gz | awk '{print $1}')
SHA_AMD64=$(sha256sum dist/caddyview-${VERSION}-darwin-amd64.tar.gz | awk '{print $1}')
SHA_LINUX=$(sha256sum dist/caddyview-${VERSION}-linux-amd64.tar.gz | awk '{print $1}')
git clone "https://x-access-token:${TAP_TOKEN}@github.com/janvete/homebrew-tools.git" tap
cat > tap/Formula/caddyview.rb << FORMULA
class Caddyview < Formula
desc "TUI SSH monitor for Caddy web server logs"
homepage "https://git.janvete.com/seth/Caddyview"
version "${VER}"
license "MIT"
on_macos do
if Hardware::CPU.arm?
url "https://git.janvete.com/seth/Caddyview/releases/download/${VERSION}/caddyview-${VERSION}-darwin-arm64.tar.gz"
sha256 "${SHA_ARM64}"
else
url "https://git.janvete.com/seth/Caddyview/releases/download/${VERSION}/caddyview-${VERSION}-darwin-amd64.tar.gz"
sha256 "${SHA_AMD64}"
end
end
on_linux do
if Hardware::CPU.intel?
url "https://git.janvete.com/seth/Caddyview/releases/download/${VERSION}/caddyview-${VERSION}-linux-amd64.tar.gz"
sha256 "${SHA_LINUX}"
end
end
def install
bin.install "caddyview"
end
test do
assert_match "TUI monitor", shell_output("#{bin}/caddyview --help")
end
end
FORMULA
cd tap
git config user.email "forgejo-actions[bot]@users.noreply.github.com"
git config user.name "forgejo-actions[bot]"
git add Formula/caddyview.rb
git commit -m "chore: bump caddyview to ${VERSION}"
git push