This commit is contained in:
parent
59e0ee33a5
commit
73de8a4fa9
2 changed files with 124 additions and 0 deletions
123
.forgejo/workflows/release.yaml
Normal file
123
.forgejo/workflows/release.yaml
Normal file
|
@ -0,0 +1,123 @@
|
||||||
|
name: QGato CLI Release Build
|
||||||
|
|
||||||
|
on:
|
||||||
|
workflow_dispatch: {}
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
build:
|
||||||
|
runs-on: alpine
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- name: Checkout source
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
|
||||||
|
- name: Check Go version
|
||||||
|
run: |
|
||||||
|
if ! command -v go >/dev/null; then
|
||||||
|
echo "❌ Go is not installed"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
echo "✅ Go version:"
|
||||||
|
go version
|
||||||
|
|
||||||
|
- name: Extract version from version.txt
|
||||||
|
id: version
|
||||||
|
run: |
|
||||||
|
VERSION=$(cat version.txt)
|
||||||
|
VERSION="v${VERSION#v}"
|
||||||
|
echo "$VERSION" > version.txt
|
||||||
|
echo "✅ Detected version: $VERSION"
|
||||||
|
|
||||||
|
- name: Build all targets
|
||||||
|
run: |
|
||||||
|
PLATFORMS=(
|
||||||
|
"linux/amd64"
|
||||||
|
"linux/arm64"
|
||||||
|
"linux/arm/v7"
|
||||||
|
"linux/arm/v6"
|
||||||
|
"linux/riscv64"
|
||||||
|
"windows/amd64"
|
||||||
|
"windows/arm64"
|
||||||
|
)
|
||||||
|
|
||||||
|
for TARGET in "${PLATFORMS[@]}"; do
|
||||||
|
OS=$(echo "$TARGET" | cut -d/ -f1)
|
||||||
|
ARCH=$(echo "$TARGET" | cut -d/ -f2)
|
||||||
|
VARIANT=$(echo "$TARGET" | cut -d/ -f3)
|
||||||
|
|
||||||
|
OUT="qgato-${OS}-${ARCH}"
|
||||||
|
[ -n "$VARIANT" ] && OUT="${OUT}${VARIANT}"
|
||||||
|
[ "$OS" = "windows" ] && OUT="${OUT}.exe"
|
||||||
|
|
||||||
|
echo "🔨 Building $OUT"
|
||||||
|
|
||||||
|
if [ "$ARCH" = "arm" ]; then
|
||||||
|
case "$VARIANT" in
|
||||||
|
v7) GOARM=7 ;;
|
||||||
|
v6) GOARM=6 ;;
|
||||||
|
*) GOARM=7 ;; # default fallback
|
||||||
|
esac
|
||||||
|
GOOS=$OS GOARCH=arm GOARM=$GOARM \
|
||||||
|
go build -ldflags="-s -w" -o "$OUT" ./.
|
||||||
|
else
|
||||||
|
GOOS=$OS GOARCH=$ARCH \
|
||||||
|
go build -ldflags="-s -w" -o "$OUT" ./.
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
- name: Create Forgejo release
|
||||||
|
run: |
|
||||||
|
TAG_NAME=$(cat version.txt)
|
||||||
|
echo "📦 Creating release for tag: $TAG_NAME"
|
||||||
|
|
||||||
|
DOWNLOAD_BASE="https://weforge.xyz/spitfire/Search/releases/download/$TAG_NAME"
|
||||||
|
|
||||||
|
echo "| Arch | Linux | Windows |" > release.md
|
||||||
|
echo "|-----------|------------------------------------------|----------------------------------------------|" >> release.md
|
||||||
|
echo "| amd64 | [qgato-linux-amd64]($DOWNLOAD_BASE/qgato-linux-amd64) | [qgato-windows-amd64.exe]($DOWNLOAD_BASE/qgato-windows-amd64.exe) |" >> release.md
|
||||||
|
echo "| arm64 | [qgato-linux-arm64]($DOWNLOAD_BASE/qgato-linux-arm64) | [qgato-windows-arm64.exe]($DOWNLOAD_BASE/qgato-windows-arm64.exe) |" >> release.md
|
||||||
|
echo "| armv7 | [qgato-linux-armv7]($DOWNLOAD_BASE/qgato-linux-armv7) | — |" >> release.md
|
||||||
|
echo "| armv6 | [qgato-linux-armv6]($DOWNLOAD_BASE/qgato-linux-armv6) | — |" >> release.md
|
||||||
|
echo "| riscv64 | [qgato-linux-riscv64]($DOWNLOAD_BASE/qgato-linux-riscv64) | — |" >> release.md
|
||||||
|
|
||||||
|
RELEASE_BODY=$(cat release.md | jq -Rs .)
|
||||||
|
|
||||||
|
curl -sSL -X POST "$FORGEJO_API/repos/${OWNER}/${REPO}/releases" \
|
||||||
|
-H "Authorization: token $FORGEJO_TOKEN" \
|
||||||
|
-H "Content-Type: application/json" \
|
||||||
|
-d "{
|
||||||
|
\"tag_name\": \"$TAG_NAME\",
|
||||||
|
\"name\": \"$TAG_NAME\",
|
||||||
|
\"body\": $RELEASE_BODY,
|
||||||
|
\"draft\": false,
|
||||||
|
\"prerelease\": false
|
||||||
|
}"
|
||||||
|
env:
|
||||||
|
FORGEJO_API: https://weforge.xyz/api/v1
|
||||||
|
OWNER: spitfire
|
||||||
|
REPO: Search
|
||||||
|
FORGEJO_TOKEN: ${{ secrets.FORGEJO_TOKEN }}
|
||||||
|
|
||||||
|
- name: Upload all binaries
|
||||||
|
run: |
|
||||||
|
TAG_NAME=$(cat version.txt)
|
||||||
|
RELEASE_ID=$(curl -s -H "Authorization: token $FORGEJO_TOKEN" \
|
||||||
|
"$FORGEJO_API/repos/${OWNER}/${REPO}/releases/tags/$TAG_NAME" | jq -r .id)
|
||||||
|
|
||||||
|
for BIN in qgato-*; do
|
||||||
|
echo "📤 Uploading $BIN"
|
||||||
|
CONTENT_TYPE="application/octet-stream"
|
||||||
|
case "$BIN" in
|
||||||
|
*.exe) CONTENT_TYPE="application/vnd.microsoft.portable-executable" ;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
curl -sSL -X POST "$FORGEJO_API/repos/${OWNER}/${REPO}/releases/${RELEASE_ID}/assets?name=$BIN" \
|
||||||
|
-H "Authorization: token $FORGEJO_TOKEN" \
|
||||||
|
-H "Content-Type: $CONTENT_TYPE" \
|
||||||
|
--data-binary "@$BIN"
|
||||||
|
done
|
||||||
|
env:
|
||||||
|
FORGEJO_API: https://weforge.xyz/api/v1
|
||||||
|
OWNER: partisan
|
||||||
|
REPO: qgato
|
||||||
|
FORGEJO_TOKEN: ${{ secrets.FORGEJO_TOKEN }}
|
1
version.txt
Normal file
1
version.txt
Normal file
|
@ -0,0 +1 @@
|
||||||
|
0.8.0
|
Loading…
Add table
Add a link
Reference in a new issue