Dokumentacija: ažurirani README, dodata start.sh skripta
- Readme.md i Readme_sr.md prošireni: demo mod, Docker uputstvo za produkciju i demo, promenljive okruženja (NTECH_SECRET, NTECH_TOTP_KEY), start.sh u strukturi projekta - start.sh dodata u repozitorijum (uklonjena iz .git/info/exclude)
This commit is contained in:
@@ -0,0 +1,207 @@
|
||||
#!/bin/bash
|
||||
set -e
|
||||
|
||||
GITEA_IMAGE="git.vm-net.in.rs/dasko/ntech"
|
||||
GITHUB_IMAGE="ghcr.io/dalibor31/ntech"
|
||||
VER_FAJL="VERSION"
|
||||
|
||||
clear
|
||||
echo "╔══════════════════════════════════════╗"
|
||||
echo "║ NTech — Build alat ║"
|
||||
echo "╚══════════════════════════════════════╝"
|
||||
echo ""
|
||||
|
||||
# 1. Verzija
|
||||
VERZIJA_DEFAULT=$(cat "$VER_FAJL" 2>/dev/null || echo "0.0.0")
|
||||
read -p "1) Verzija [${VERZIJA_DEFAULT}]: " VERZIJA
|
||||
VERZIJA="${VERZIJA:-$VERZIJA_DEFAULT}"
|
||||
if [ "$VERZIJA" != "$VERZIJA_DEFAULT" ]; then
|
||||
echo "$VERZIJA" > "$VER_FAJL"
|
||||
echo " → VERSION ažuriran na: $VERZIJA"
|
||||
fi
|
||||
echo ""
|
||||
|
||||
# 2. Okruženje
|
||||
echo "2) Okruženje:"
|
||||
echo " 1) Production (podrazumevano)"
|
||||
echo " 2) Development"
|
||||
read -p " Izbor [1/2]: " OKR_IZBOR
|
||||
OKR_IZBOR="${OKR_IZBOR:-1}"
|
||||
echo ""
|
||||
|
||||
# 3. Platforma
|
||||
echo "3) Platforma:"
|
||||
echo " 1) Linux (podrazumevano)"
|
||||
echo " 2) Windows"
|
||||
echo " 3) Obe"
|
||||
read -p " Izbor [1/2/3]: " PLATFORMA_IZBOR
|
||||
PLATFORMA_IZBOR="${PLATFORMA_IZBOR:-1}"
|
||||
echo ""
|
||||
|
||||
# 4. UPX
|
||||
read -p "4) Kompresovati UPX-om? [d/N]: " UPX_IZBOR
|
||||
UPX_IZBOR="${UPX_IZBOR:-n}"
|
||||
echo ""
|
||||
|
||||
# 5. Build
|
||||
read -p "5) Pokrenuti build? [D/n]: " BUILD_IZBOR
|
||||
BUILD_IZBOR="${BUILD_IZBOR:-d}"
|
||||
echo ""
|
||||
|
||||
# 6. Docker push
|
||||
read -p "6) Push Docker image (Gitea + GitHub)? [d/N]: " DOCKER_IZBOR
|
||||
DOCKER_IZBOR="${DOCKER_IZBOR:-n}"
|
||||
echo ""
|
||||
|
||||
# ── Izračunaj vrednosti ──────────────────────────
|
||||
if [ "$OKR_IZBOR" = "2" ]; then
|
||||
OKRUZENJE="development"
|
||||
VERZIJA_BUILD="dev-${VERZIJA}"
|
||||
LDFLAGS="-X main.Verzija=dev-${VERZIJA}"
|
||||
TRIMPATH=""
|
||||
else
|
||||
OKRUZENJE="production"
|
||||
VERZIJA_BUILD="${VERZIJA}"
|
||||
LDFLAGS="-X main.Verzija=${VERZIJA} -s -w"
|
||||
TRIMPATH="-trimpath"
|
||||
fi
|
||||
|
||||
case "$PLATFORMA_IZBOR" in
|
||||
2) PLATFORMA_NAZIV="Windows" ;;
|
||||
3) PLATFORMA_NAZIV="Linux + Windows" ;;
|
||||
*) PLATFORMA_NAZIV="Linux" ;;
|
||||
esac
|
||||
|
||||
if [[ "$UPX_IZBOR" =~ ^[dDyY] ]]; then UPX_NAZIV="da"; else UPX_NAZIV="ne"; fi
|
||||
if [[ "$BUILD_IZBOR" =~ ^[dDyY] ]]; then BUILD_NAZIV="da"; else BUILD_NAZIV="ne"; fi
|
||||
if [[ "$DOCKER_IZBOR" =~ ^[dDyY] ]]; then DOCKER_NAZIV="da"; else DOCKER_NAZIV="ne"; fi
|
||||
|
||||
# ── Sažetak ──────────────────────────────────────
|
||||
echo "──────────────────────────────────────────"
|
||||
echo " Verzija : ${VERZIJA_BUILD}"
|
||||
echo " Okruženje : ${OKRUZENJE}"
|
||||
echo " Platforma : ${PLATFORMA_NAZIV}"
|
||||
echo " UPX : ${UPX_NAZIV}"
|
||||
echo " Build : ${BUILD_NAZIV}"
|
||||
echo " Docker : ${DOCKER_NAZIV}"
|
||||
echo "──────────────────────────────────────────"
|
||||
echo ""
|
||||
read -p "Pokrenuti? [D/n]: " POTVRDA
|
||||
POTVRDA="${POTVRDA:-d}"
|
||||
if [[ ! "$POTVRDA" =~ ^[dDyY] ]]; then
|
||||
echo "Otkazano."
|
||||
exit 0
|
||||
fi
|
||||
echo ""
|
||||
|
||||
# ── UPX: instaliraj ako treba ────────────────────
|
||||
if [[ "$UPX_IZBOR" =~ ^[dDyY] ]] && [[ "$BUILD_IZBOR" =~ ^[dDyY] ]]; then
|
||||
if ! command -v upx &>/dev/null; then
|
||||
echo "→ UPX nije instaliran. Instaliram..."
|
||||
if command -v apt-get &>/dev/null; then
|
||||
sudo apt-get install -y upx
|
||||
elif command -v dnf &>/dev/null; then
|
||||
sudo dnf install -y upx
|
||||
elif command -v pacman &>/dev/null; then
|
||||
sudo pacman -S --noconfirm upx
|
||||
elif command -v brew &>/dev/null; then
|
||||
brew install upx
|
||||
else
|
||||
echo " UPOZORENJE: Ne mogu da instaliram UPX — nepoznat menadžer paketa. Kompresija preskočena."
|
||||
UPX_IZBOR="n"
|
||||
fi
|
||||
echo ""
|
||||
fi
|
||||
fi
|
||||
|
||||
# ── Build funkcija ───────────────────────────────
|
||||
build_za() {
|
||||
local GOOS_VAL="$1"
|
||||
local NAZIV="$2"
|
||||
echo "→ Build ${GOOS_VAL}/amd64: ${NAZIV}"
|
||||
CGO_ENABLED=0 GOOS="${GOOS_VAL}" GOARCH=amd64 go build \
|
||||
-ldflags "${LDFLAGS}" \
|
||||
${TRIMPATH} \
|
||||
-o "${NAZIV}" \
|
||||
./cmd/ntech
|
||||
ls -lh "${NAZIV}"
|
||||
|
||||
if [[ "$UPX_IZBOR" =~ ^[dDyY] ]] && command -v upx &>/dev/null; then
|
||||
echo " Kompresovanje sa UPX..."
|
||||
upx --best "${NAZIV}"
|
||||
ls -lh "${NAZIV}"
|
||||
fi
|
||||
}
|
||||
|
||||
# ── 5. Build ─────────────────────────────────────
|
||||
if [[ "$BUILD_IZBOR" =~ ^[dDyY] ]]; then
|
||||
echo "=== Build ==="
|
||||
case "$PLATFORMA_IZBOR" in
|
||||
2)
|
||||
build_za "windows" "ntech.exe"
|
||||
;;
|
||||
3)
|
||||
build_za "linux" "ntech" &
|
||||
PID_LINUX=$!
|
||||
build_za "windows" "ntech.exe" &
|
||||
PID_WIN=$!
|
||||
wait $PID_LINUX $PID_WIN
|
||||
;;
|
||||
*)
|
||||
build_za "linux" "ntech"
|
||||
;;
|
||||
esac
|
||||
echo ""
|
||||
fi
|
||||
|
||||
# ── 6. Docker push ───────────────────────────────
|
||||
if [[ "$DOCKER_IZBOR" =~ ^[dDyY] ]]; then
|
||||
echo "=== Docker ==="
|
||||
|
||||
# Ako Linux binary nije izgrađen u ovom pozivu (build=ne ili platforma=Windows), izgradi ga
|
||||
LINUX_VEC_IZGRADJEN=0
|
||||
if [[ "$BUILD_IZBOR" =~ ^[dDyY] ]] && [ "$PLATFORMA_IZBOR" != "2" ]; then
|
||||
LINUX_VEC_IZGRADJEN=1
|
||||
fi
|
||||
|
||||
if [ "$LINUX_VEC_IZGRADJEN" = "0" ]; then
|
||||
echo "→ Gradim Linux binary za Docker (sa UPX ako je uključen)..."
|
||||
# instaliraj UPX ako treba, a još nije instaliran
|
||||
if [[ "$UPX_IZBOR" =~ ^[dDyY] ]] && ! command -v upx &>/dev/null; then
|
||||
echo "→ UPX nije instaliran. Instaliram..."
|
||||
if command -v apt-get &>/dev/null; then
|
||||
sudo apt-get install -y upx
|
||||
elif command -v dnf &>/dev/null; then
|
||||
sudo dnf install -y upx
|
||||
elif command -v pacman &>/dev/null; then
|
||||
sudo pacman -S --noconfirm upx
|
||||
elif command -v brew &>/dev/null; then
|
||||
brew install upx
|
||||
else
|
||||
echo " UPOZORENJE: Ne mogu da instaliram UPX — kompresija preskočena."
|
||||
UPX_IZBOR="n"
|
||||
fi
|
||||
fi
|
||||
build_za "linux" "ntech"
|
||||
echo ""
|
||||
fi
|
||||
|
||||
echo "→ Build Docker image..."
|
||||
docker build --build-arg="VERZIJA=${VERZIJA}" \
|
||||
-t "${GITEA_IMAGE}:${VERZIJA}" \
|
||||
-t "${GITEA_IMAGE}:latest" \
|
||||
-t "${GITHUB_IMAGE}:${VERZIJA}" \
|
||||
-t "${GITHUB_IMAGE}:latest" \
|
||||
.
|
||||
|
||||
echo "→ Push na Gitea..."
|
||||
docker push "${GITEA_IMAGE}:${VERZIJA}"
|
||||
docker push "${GITEA_IMAGE}:latest"
|
||||
|
||||
echo "→ Push na GitHub..."
|
||||
docker push "${GITHUB_IMAGE}:${VERZIJA}"
|
||||
docker push "${GITHUB_IMAGE}:latest"
|
||||
echo ""
|
||||
fi
|
||||
|
||||
echo "==> Gotovo! NTech v${VERZIJA_BUILD}"
|
||||
Reference in New Issue
Block a user