69 lines
2.1 KiB
Bash
Executable File
69 lines
2.1 KiB
Bash
Executable File
#!/bin/bash
|
|
set -euo pipefail
|
|
|
|
HARBOR="${HARBOR:-192.168.100.49:30002}"
|
|
HARBOR_PROJECT="${HARBOR_PROJECT:-prd}"
|
|
HARBOR_USER="${HARBOR_USER:?HARBOR_USER is required}"
|
|
HARBOR_PASS="${HARBOR_PASS:?HARBOR_PASS is required}"
|
|
SERVICE="${SERVICE:-imes-custom-nalinv-int}"
|
|
IMAGE_REPO="${HARBOR}/${HARBOR_PROJECT}/${SERVICE}"
|
|
GITEA_REPO="${GITEA_REPO:?GITEA_REPO is required}"
|
|
MANIFEST="${MANIFEST:-prd/${SERVICE}.yaml}"
|
|
|
|
ROOT="$(cd "$(dirname "$0")/.." && pwd)"
|
|
cd "$ROOT"
|
|
|
|
MAVEN_SETTINGS="${MAVEN_SETTINGS:-}"
|
|
if [ -z "$MAVEN_SETTINGS" ] && [ -f /var/jenkins_home/.m2/settings.xml ]; then
|
|
MAVEN_SETTINGS="/var/jenkins_home/.m2/settings.xml"
|
|
fi
|
|
|
|
MAVEN_REPO_LOCAL="${MAVEN_REPO_LOCAL:-}"
|
|
if [ -z "$MAVEN_REPO_LOCAL" ] && [ -d /var/jenkins_home/.m2/repository ]; then
|
|
MAVEN_REPO_LOCAL="/var/jenkins_home/.m2/repository"
|
|
fi
|
|
|
|
MAVEN_CMD=(mvn)
|
|
if [ -n "$MAVEN_SETTINGS" ]; then
|
|
MAVEN_CMD+=(--settings "$MAVEN_SETTINGS")
|
|
fi
|
|
if [ -n "$MAVEN_REPO_LOCAL" ]; then
|
|
MAVEN_CMD+=("-Dmaven.repo.local=$MAVEN_REPO_LOCAL")
|
|
fi
|
|
|
|
echo "==> [1/4] 构建 JAR..."
|
|
"${MAVEN_CMD[@]}" clean package -DskipTests -pl int-app -am -q
|
|
echo " 完成: int-app/target/iep-int.jar ($(du -sh int-app/target/iep-int.jar | cut -f1))"
|
|
|
|
TAG=$(date +%Y%m%d%H%M%S)
|
|
IMAGE="${IMAGE_REPO}:${TAG}"
|
|
echo "==> [2/4] 构建镜像 $IMAGE ..."
|
|
if docker buildx version >/dev/null 2>&1; then
|
|
docker buildx build --platform linux/amd64 -t "$IMAGE" --load .
|
|
else
|
|
docker build -t "$IMAGE" .
|
|
fi
|
|
echo " 镜像构建完成"
|
|
|
|
echo "==> [3/4] 推送到 Harbor..."
|
|
echo "$HARBOR_PASS" | docker login "$HARBOR" -u "$HARBOR_USER" --password-stdin
|
|
docker push "$IMAGE"
|
|
echo " 推送完成"
|
|
|
|
echo "==> [4/4] 更新 k8s-manifests/prd..."
|
|
TMPDIR=$(mktemp -d)
|
|
trap 'rm -rf "$TMPDIR"' EXIT
|
|
git clone "$GITEA_REPO" "$TMPDIR" -q
|
|
cd "$TMPDIR"
|
|
git config user.email "deploy@mes.local"
|
|
git config user.name "deploy-jenkins"
|
|
sed -i '' "s|${IMAGE_REPO}:[^ ]*|${IMAGE}|" "$MANIFEST" 2>/dev/null || \
|
|
sed -i "s|${IMAGE_REPO}:[^ ]*|${IMAGE}|" "$MANIFEST"
|
|
git add "$MANIFEST"
|
|
git commit -m "deploy: ${SERVICE} prd -> ${TAG}"
|
|
git push -q
|
|
|
|
echo ""
|
|
echo "PRD 部署提交完成: $IMAGE"
|
|
echo "ArgoCD Application: prd-services"
|