50 lines
1.9 KiB
Bash
50 lines
1.9 KiB
Bash
#!/bin/bash
|
||
set -e
|
||
|
||
# public/version.json üretir (deploy öncesi, HOST üzerinde).
|
||
#
|
||
# Asıl uygulama scripts/generate-version.js dosyasıdır; node varsa o çalışır.
|
||
# Aşağıdaki bash karşılığı yalnızca node bulunmayan sunucular içindir ve
|
||
# js sürümüyle aynı çıktıyı üretmelidir.
|
||
|
||
cd "$(dirname "$0")/.."
|
||
|
||
echo "> version.json oluşturuluyor..."
|
||
|
||
if command -v node >/dev/null 2>&1; then
|
||
node scripts/generate-version.js
|
||
exit 0
|
||
fi
|
||
|
||
# origin'de olmayan yerel tag'ler sürüm numarasını bozar; temizle.
|
||
git fetch --prune --prune-tags --tags origin >/dev/null 2>&1 || true
|
||
|
||
# Sürüm sırası tag adına göre (creatordate değil); 1.1.10 > 1.1.09.
|
||
VERSIONS=$(git tag --sort=-v:refname)
|
||
ROOT_COMMIT=$(git rev-parse --short HEAD)
|
||
BUILD_TIME=$(date -u +%Y-%m-%dT%H:%M:%SZ)
|
||
BUILD_DATE=$(date -u +%Y-%m-%d)
|
||
# Her deploy'da değişir; uygulamanın yeni sürüm algılaması buna bakar.
|
||
BUILD_ID="${ROOT_COMMIT}.$(date -u +%s)"
|
||
|
||
RELEASES=""
|
||
FIRST=true
|
||
for TAG in $VERSIONS; do
|
||
VER=$(echo "$TAG" | sed 's/^v//')
|
||
DATE=$(git log -1 --format=%ad --date=short "$TAG")
|
||
COMMIT=$(git rev-list -n 1 "$TAG")
|
||
MESSAGE=$(git tag -l --format="%(contents)" "$TAG" | grep -v '^$' | sed 's/^[[:space:]]*-[[:space:]]*//' | jq -R . | jq -s .)
|
||
|
||
if [ "$FIRST" = true ]; then FIRST=false; else RELEASES+=","; fi
|
||
RELEASES+="{\"version\":\"$VER\",\"buildDate\":\"$DATE\",\"commit\":\"$COMMIT\",\"changeLog\":$MESSAGE}"
|
||
done
|
||
|
||
# Sürüm = en son tag. Tag'siz commit'ler için sahte sürüm üretilmez; deploy
|
||
# algılaması sürüm numarasına değil, her derlemede değişen buildId'ye bakar.
|
||
LAST_TAG=$(echo "$VERSIONS" | head -n1 | sed 's/^v//')
|
||
VERSION=${LAST_TAG:-$(jq -r .version package.json)}
|
||
|
||
printf '{"buildId":"%s","buildTime":"%s","buildDate":"%s","commit":"%s","version":"%s","releases":[%s]}' \
|
||
"$BUILD_ID" "$BUILD_TIME" "$BUILD_DATE" "$ROOT_COMMIT" "$VERSION" "$RELEASES" | jq . > public/version.json
|
||
|
||
echo "> version.json: v${VERSION} (${BUILD_ID})"
|