diff --git a/.forgejo/workflows/release.yml b/.forgejo/workflows/release.yml index ae4c760..884121d 100644 --- a/.forgejo/workflows/release.yml +++ b/.forgejo/workflows/release.yml @@ -12,6 +12,11 @@ jobs: image: golang:1.27 steps: + - name: Install packaging tools + run: | + apt-get update + apt-get install -y dpkg-dev git curl + - name: Checkout source env: FORGEJO_TOKEN: ${{ secrets.FORGEJO_TOKEN }} @@ -20,10 +25,11 @@ jobs: cd src git checkout "${{ github.ref_name }}" - - name: Build binaries and archives + - name: Build binaries, archives and .deb working-directory: src run: | VERSION=${{ github.ref_name }} + VER=${VERSION#v} mkdir -p dist for PAIR in darwin/arm64 darwin/amd64 linux/amd64; do @@ -36,8 +42,28 @@ jobs: rm -rf ${STAGING} done + # Build .deb for linux/amd64 + DEB_DIR="caddyview_${VER}_amd64" + mkdir -p "${DEB_DIR}/DEBIAN" + mkdir -p "${DEB_DIR}/usr/local/bin" + cp dist/caddyview-linux-amd64 "${DEB_DIR}/usr/local/bin/caddyview" + chmod 755 "${DEB_DIR}/usr/local/bin/caddyview" + + cat > "${DEB_DIR}/DEBIAN/control" << CONTROL + Package: caddyview + Version: ${VER} + Section: utils + Priority: optional + Architecture: amd64 + Maintainer: seth + Description: TUI SSH monitor for Caddy web server logs + CONTROL + + dpkg-deb --build "${DEB_DIR}" "dist/caddyview_${VER}_amd64.deb" + mv "${DEB_DIR}" "dist/" + echo "=== SHA256 checksums ===" - sha256sum dist/*.tar.gz + sha256sum dist/*.tar.gz dist/*.deb - name: Create Forgejo Release working-directory: src @@ -64,19 +90,22 @@ jobs: echo "release_id=${RELEASE_ID}" >> "$GITHUB_ENV" - for ARCHIVE in dist/*.tar.gz; do + for ARCHIVE in dist/*.tar.gz dist/*.deb; do + [ -e "${ARCHIVE}" ] || continue NAME=$(basename "${ARCHIVE}") + CONTENT_TYPE="application/gzip" + case "${NAME}" in *.deb) CONTENT_TYPE="application/vnd.debian.binary-package" ;; esac curl -sS -H "Authorization: token ${FORGEJO_TOKEN}" \ - -H "Content-Type: application/gzip" \ + -H "Content-Type: ${CONTENT_TYPE}" \ --data-binary "@${ARCHIVE}" \ "${API}/releases/${RELEASE_ID}/assets?name=${NAME}" echo "Uploaded ${NAME}" done - - name: Update Homebrew formula + - name: Update Homebrew tap working-directory: src env: - TAP_TOKEN: ${{ secrets.TAP_TOKEN }} + FORGEJO_TOKEN: ${{ secrets.FORGEJO_TOKEN }} run: | VERSION=${{ github.ref_name }} VER=${VERSION#v} @@ -84,7 +113,7 @@ jobs: 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://${TAP_TOKEN}:x-oauth-basic@github.com/janvete/homebrew-tools.git" tap + git clone "https://token:${FORGEJO_TOKEN}@git.janvete.com/seth/homebrew-tools.git" tap cat > tap/Formula/caddyview.rb << FORMULA class Caddyview < Formula @@ -121,8 +150,50 @@ jobs: FORMULA cd tap - git config user.email "forgejo-actions[bot]@users.noreply.github.com" + git config user.email "forgejo-actions[bot]@janvete.com" git config user.name "forgejo-actions[bot]" git add Formula/caddyview.rb git commit -m "chore: bump caddyview to ${VERSION}" git push + + - name: Update APT repository + working-directory: src + env: + FORGEJO_TOKEN: ${{ secrets.FORGEJO_TOKEN }} + run: | + VERSION=${{ github.ref_name }} + VER=${VERSION#v} + + git clone "https://token:${FORGEJO_TOKEN}@git.janvete.com/seth/apt.git" apt-repo + cp "dist/caddyview_${VER}_amd64.deb" apt-repo/ + + cd apt-repo + dpkg-scanpackages . > Packages + gzip -k -f Packages + + cat > Release << RELEASE + Origin: janvete + Label: janvete + Suite: stable + Codename: stable + Version: 1.0 + Architectures: amd64 + Components: main + Description: janvete tools APT repository + Date: $(date -Ru) + RELEASE + + # Append hashes to Release + { + echo "SHA256:" + for f in Packages Packages.gz *.deb; do + [ -e "$f" ] || continue + printf " %s %16d %s\n" "$(sha256sum "$f" | cut -d' ' -f1)" "$(stat -c%s "$f")" "$f" + done + } >> Release + + git config user.email "forgejo-actions[bot]@janvete.com" + git config user.name "forgejo-actions[bot]" + git add -A + git commit -m "chore: add caddyview ${VERSION}" + git push diff --git a/README.md b/README.md index d4b4ba2..ef0a886 100644 --- a/README.md +++ b/README.md @@ -7,16 +7,24 @@ Remote Caddy log viewer over SSH. ### macOS (Homebrew) ```bash -brew tap janvete/tools +brew tap janvete/tools https://git.janvete.com/seth/homebrew-tools.git brew install caddyview ``` -### Linux +### Linux (APT) + +```bash +echo "deb [trusted=yes] https://git.janvete.com/seth/apt/raw/branch/main ./" | sudo tee /etc/apt/sources.list.d/janvete.list +sudo apt update +sudo apt install caddyview +``` + +### Linux (tarball) Download the latest release from the [releases page](https://git.janvete.com/seth/Caddyview/releases) and extract it: ```bash -VERSION=v0.6.0 +VERSION=v0.7.0 curl -L "https://git.janvete.com/seth/Caddyview/releases/download/${VERSION}/caddyview-${VERSION}-linux-amd64.tar.gz" | tar xz sudo mv caddyview /usr/local/bin/ ```