Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
32cf25ff73 | ||
|
|
032093e8c0 |
@@ -71,11 +71,18 @@ jobs:
|
|||||||
EXT=""
|
EXT=""
|
||||||
[ "$GOOS" = "windows" ] && EXT=".exe"
|
[ "$GOOS" = "windows" ] && EXT=".exe"
|
||||||
NAME="relspec-${GOOS}-${GOARCH}${EXT}"
|
NAME="relspec-${GOOS}-${GOARCH}${EXT}"
|
||||||
GOOS="$GOOS" GOARCH="$GOARCH" go build \
|
GOOS="$GOOS" GOARCH="$GOARCH" CGO_ENABLED=0 go build \
|
||||||
-trimpath \
|
-trimpath \
|
||||||
-ldflags "$LDFLAGS" \
|
-ldflags "$LDFLAGS" \
|
||||||
-o "$NAME" ./cmd/relspec
|
-o "$NAME" ./cmd/relspec
|
||||||
echo "Built $NAME"
|
echo "Built $NAME"
|
||||||
|
if [ "$GOOS" = "linux" ]; then
|
||||||
|
TARNAME="relspec_${VERSION#v}_${GOOS}_${GOARCH}.tar.gz"
|
||||||
|
cp "$NAME" relspec
|
||||||
|
tar czf "$TARNAME" relspec LICENSE
|
||||||
|
rm relspec
|
||||||
|
echo "Packed $TARNAME"
|
||||||
|
fi
|
||||||
done
|
done
|
||||||
|
|
||||||
- name: Build Windows installer
|
- name: Build Windows installer
|
||||||
@@ -121,7 +128,7 @@ jobs:
|
|||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
for f in relspec-*; do
|
for f in relspec-* relspec_*.tar.gz; do
|
||||||
echo "Uploading $f..."
|
echo "Uploading $f..."
|
||||||
curl -s -X POST "${UPLOAD_URL}?name=${f}" \
|
curl -s -X POST "${UPLOAD_URL}?name=${f}" \
|
||||||
-H "Authorization: token ${GITHUB_TOKEN}" \
|
-H "Authorization: token ${GITHUB_TOKEN}" \
|
||||||
@@ -132,8 +139,13 @@ jobs:
|
|||||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
|
||||||
pkg-aur:
|
pkg-aur:
|
||||||
|
name: AUR package (${{ matrix.pkg }})
|
||||||
needs: release
|
needs: release
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
|
strategy:
|
||||||
|
fail-fast: false
|
||||||
|
matrix:
|
||||||
|
pkg: [relspec, relspec-bin]
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v4
|
- uses: actions/checkout@v4
|
||||||
|
|
||||||
@@ -145,6 +157,7 @@ jobs:
|
|||||||
|
|
||||||
VERSION="${{ github.event.inputs.tag || github.ref_name }}"
|
VERSION="${{ github.event.inputs.tag || github.ref_name }}"
|
||||||
PKGVER="${VERSION#v}"
|
PKGVER="${VERSION#v}"
|
||||||
|
PKG="${{ matrix.pkg }}"
|
||||||
AUR_KEY_PATH="$HOME/.ssh/aur"
|
AUR_KEY_PATH="$HOME/.ssh/aur"
|
||||||
AUR_KNOWN_HOSTS="$HOME/.ssh/known_hosts"
|
AUR_KNOWN_HOSTS="$HOME/.ssh/known_hosts"
|
||||||
|
|
||||||
@@ -183,10 +196,15 @@ jobs:
|
|||||||
|
|
||||||
# Clone AUR repo
|
# Clone AUR repo
|
||||||
GIT_SSH_COMMAND="ssh -o IdentitiesOnly=yes -o StrictHostKeyChecking=yes -o UserKnownHostsFile=$AUR_KNOWN_HOSTS -i $AUR_KEY_PATH" \
|
GIT_SSH_COMMAND="ssh -o IdentitiesOnly=yes -o StrictHostKeyChecking=yes -o UserKnownHostsFile=$AUR_KNOWN_HOSTS -i $AUR_KEY_PATH" \
|
||||||
git clone ssh://aur@aur.archlinux.org/relspec.git aur-repo
|
git clone "ssh://aur@aur.archlinux.org/${PKG}.git" aur-repo
|
||||||
|
|
||||||
CURRENT_PKGVER=$(awk -F= '/^pkgver=/ {print $2; exit}' aur-repo/PKGBUILD | tr -d "[:space:]")
|
if [ -f aur-repo/PKGBUILD ]; then
|
||||||
CURRENT_PKGREL=$(awk -F= '/^pkgrel=/ {print $2; exit}' aur-repo/PKGBUILD | tr -d "[:space:]")
|
CURRENT_PKGVER=$(awk -F= '/^pkgver=/ {print $2; exit}' aur-repo/PKGBUILD | tr -d "[:space:]")
|
||||||
|
CURRENT_PKGREL=$(awk -F= '/^pkgrel=/ {print $2; exit}' aur-repo/PKGBUILD | tr -d "[:space:]")
|
||||||
|
else
|
||||||
|
CURRENT_PKGVER=""
|
||||||
|
CURRENT_PKGREL=0
|
||||||
|
fi
|
||||||
|
|
||||||
if [ "$CURRENT_PKGVER" = "$PKGVER" ]; then
|
if [ "$CURRENT_PKGVER" = "$PKGVER" ]; then
|
||||||
case "$CURRENT_PKGREL" in
|
case "$CURRENT_PKGREL" in
|
||||||
@@ -202,16 +220,25 @@ jobs:
|
|||||||
PKGREL=1
|
PKGREL=1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
echo "Publishing AUR package version ${PKGVER}-${PKGREL}"
|
echo "Publishing AUR package ${PKG} ${PKGVER}-${PKGREL}"
|
||||||
|
|
||||||
# Compute SHA256 of the source archive from the same URL the PKGBUILD will download.
|
# Compute SHA256 of the artifacts from the same URLs the PKGBUILD will download.
|
||||||
SHA=$(curl -fsSL "https://git.warky.dev/wdevs/relspecgo/releases/download/v${PKGVER}/relspec-v${PKGVER}-source.zip" | sha256sum | cut -d' ' -f1)
|
DL="https://git.warky.dev/wdevs/relspecgo/releases/download/v${PKGVER}"
|
||||||
|
if [ "$PKG" = "relspec-bin" ]; then
|
||||||
|
SHA_AMD64=$(curl -fsSL "${DL}/relspec_${PKGVER}_linux_amd64.tar.gz" | sha256sum | cut -d' ' -f1)
|
||||||
|
SHA_ARM64=$(curl -fsSL "${DL}/relspec_${PKGVER}_linux_arm64.tar.gz" | sha256sum | cut -d' ' -f1)
|
||||||
|
SUMS=(-e "s/^sha256sums_x86_64=.*/sha256sums_x86_64=('${SHA_AMD64}')/" \
|
||||||
|
-e "s/^sha256sums_aarch64=.*/sha256sums_aarch64=('${SHA_ARM64}')/")
|
||||||
|
else
|
||||||
|
SHA=$(curl -fsSL "${DL}/relspec-v${PKGVER}-source.zip" | sha256sum | cut -d' ' -f1)
|
||||||
|
SUMS=(-e "s/^sha256sums=.*/sha256sums=('${SHA}')/")
|
||||||
|
fi
|
||||||
|
|
||||||
# Update PKGBUILD — keep remote source URL, bump version/checksum, and increment pkgrel for same-version rebuilds.
|
# Update PKGBUILD — keep remote source URL, bump version/checksum, and increment pkgrel for same-version rebuilds.
|
||||||
sed -e "s/^pkgver=.*/pkgver=${PKGVER}/" \
|
sed -e "s/^pkgver=.*/pkgver=${PKGVER}/" \
|
||||||
-e "s/^pkgrel=.*/pkgrel=${PKGREL}/" \
|
-e "s/^pkgrel=.*/pkgrel=${PKGREL}/" \
|
||||||
-e "s/^sha256sums=.*/sha256sums=('${SHA}')/" \
|
"${SUMS[@]}" \
|
||||||
linux/arch/PKGBUILD > aur-repo/PKGBUILD
|
"linux/arch/${PKG}/PKGBUILD" > aur-repo/PKGBUILD
|
||||||
|
|
||||||
# Generate .SRCINFO inside an Arch container (docker cp avoids DinD volume mount issues)
|
# Generate .SRCINFO inside an Arch container (docker cp avoids DinD volume mount issues)
|
||||||
CID=$(docker run -d archlinux:latest sleep infinity)
|
CID=$(docker run -d archlinux:latest sleep infinity)
|
||||||
|
|||||||
@@ -238,9 +238,9 @@ release: lint fmt-check govulncheck test build ## Run lint, format check, govuln
|
|||||||
PKGVER=$${version#v}; \
|
PKGVER=$${version#v}; \
|
||||||
echo "Updating package metadata to $$PKGVER..."; \
|
echo "Updating package metadata to $$PKGVER..."; \
|
||||||
echo "$$PKGVER" > VERSION; \
|
echo "$$PKGVER" > VERSION; \
|
||||||
sed -i "s/^pkgver=.*/pkgver=$$PKGVER/" linux/arch/PKGBUILD; \
|
sed -i "s/^pkgver=.*/pkgver=$$PKGVER/" linux/arch/relspec/PKGBUILD linux/arch/relspec-bin/PKGBUILD; \
|
||||||
sed -i "s/^Version:.*/Version: $$PKGVER/" linux/centos/relspec.spec; \
|
sed -i "s/^Version:.*/Version: $$PKGVER/" linux/centos/relspec.spec; \
|
||||||
git add VERSION linux/arch/PKGBUILD linux/centos/relspec.spec; \
|
git add VERSION linux/arch/relspec/PKGBUILD linux/arch/relspec-bin/PKGBUILD linux/centos/relspec.spec; \
|
||||||
if ! git diff --cached --quiet; then \
|
if ! git diff --cached --quiet; then \
|
||||||
git commit -m "chore(release): update package version to $$PKGVER"; \
|
git commit -m "chore(release): update package version to $$PKGVER"; \
|
||||||
fi; \
|
fi; \
|
||||||
@@ -262,9 +262,9 @@ release-version: lint fmt-check staticcheck govulncheck ## Run lint, format chec
|
|||||||
NEXT="v$$PKGVER"; \
|
NEXT="v$$PKGVER"; \
|
||||||
echo "Current: v$$CURRENT → Next: $$NEXT"; \
|
echo "Current: v$$CURRENT → Next: $$NEXT"; \
|
||||||
echo "$$PKGVER" > VERSION; \
|
echo "$$PKGVER" > VERSION; \
|
||||||
sed -i "s/^pkgver=.*/pkgver=$$PKGVER/" linux/arch/PKGBUILD; \
|
sed -i "s/^pkgver=.*/pkgver=$$PKGVER/" linux/arch/relspec/PKGBUILD linux/arch/relspec-bin/PKGBUILD; \
|
||||||
sed -i "s/^Version:.*/Version: $$PKGVER/" linux/centos/relspec.spec; \
|
sed -i "s/^Version:.*/Version: $$PKGVER/" linux/centos/relspec.spec; \
|
||||||
git add VERSION linux/arch/PKGBUILD linux/centos/relspec.spec; \
|
git add VERSION linux/arch/relspec/PKGBUILD linux/arch/relspec-bin/PKGBUILD linux/centos/relspec.spec; \
|
||||||
git commit -m "chore(release): update package version to $$PKGVER"; \
|
git commit -m "chore(release): update package version to $$PKGVER"; \
|
||||||
git tag -a "$$NEXT" -m "Release $$NEXT"; \
|
git tag -a "$$NEXT" -m "Release $$NEXT"; \
|
||||||
git push origin HEAD "$$NEXT"; \
|
git push origin HEAD "$$NEXT"; \
|
||||||
|
|||||||
@@ -0,0 +1,24 @@
|
|||||||
|
# Maintainer: Hein (Warky Devs) <hein@warky.dev>
|
||||||
|
pkgname=relspec-bin
|
||||||
|
pkgver=1.0.91
|
||||||
|
pkgrel=1
|
||||||
|
pkgdesc="RelSpec is a comprehensive database relations management tool that reads, transforms, and writes database table specifications across multiple formats and ORMs."
|
||||||
|
arch=('x86_64' 'aarch64')
|
||||||
|
url="https://git.warky.dev/wdevs/relspecgo"
|
||||||
|
license=('MIT')
|
||||||
|
provides=('relspec')
|
||||||
|
conflicts=('relspec')
|
||||||
|
options=('!debug')
|
||||||
|
source_x86_64=("$pkgname-$pkgver-x86_64.tar.gz::$url/releases/download/v$pkgver/relspec_${pkgver}_linux_amd64.tar.gz")
|
||||||
|
source_aarch64=("$pkgname-$pkgver-aarch64.tar.gz::$url/releases/download/v$pkgver/relspec_${pkgver}_linux_arm64.tar.gz")
|
||||||
|
sha256sums_x86_64=('SKIP')
|
||||||
|
sha256sums_aarch64=('SKIP')
|
||||||
|
|
||||||
|
package() {
|
||||||
|
# Binary
|
||||||
|
install -Dm755 "relspec" "$pkgdir/usr/bin/relspec"
|
||||||
|
install -Dm644 "LICENSE" "$pkgdir/usr/share/licenses/$pkgname/LICENSE"
|
||||||
|
|
||||||
|
# Default config dir
|
||||||
|
install -dm755 "$pkgdir/etc/relspec"
|
||||||
|
}
|
||||||
@@ -1,6 +1,6 @@
|
|||||||
# Maintainer: Hein (Warky Devs) <hein@warky.dev>
|
# Maintainer: Hein (Warky Devs) <hein@warky.dev>
|
||||||
pkgname=relspec
|
pkgname=relspec
|
||||||
pkgver=1.0.90
|
pkgver=1.0.91
|
||||||
pkgrel=1
|
pkgrel=1
|
||||||
pkgdesc="RelSpec is a comprehensive database relations management tool that reads, transforms, and writes database table specifications across multiple formats and ORMs."
|
pkgdesc="RelSpec is a comprehensive database relations management tool that reads, transforms, and writes database table specifications across multiple formats and ORMs."
|
||||||
arch=('x86_64' 'aarch64')
|
arch=('x86_64' 'aarch64')
|
||||||
@@ -1,5 +1,5 @@
|
|||||||
Name: relspec
|
Name: relspec
|
||||||
Version: 1.0.90
|
Version: 1.0.91
|
||||||
Release: 1%{?dist}
|
Release: 1%{?dist}
|
||||||
Summary: RelSpec is a comprehensive database relations management tool that reads, transforms, and writes database table specifications across multiple formats and ORMs.
|
Summary: RelSpec is a comprehensive database relations management tool that reads, transforms, and writes database table specifications across multiple formats and ORMs.
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user