kind: pipeline type: exec name: deploy clone: disable: true # 触发分支须包含下方 DEPLOY_BRANCH(或在 Drone 仓库变量里覆盖 DEPLOY_BRANCH) trigger: branch: - deploy event: - push steps: - name: deploy environment: DEPLOY_BRANCH: deploy DEPLOY_SSH_KEY: from_secret: DEPLOY_SSH_KEY DATABASE_URL: from_secret: DATABASE_URL STATIC_DIR: from_secret: STATIC_DIR TMP_DIR: from_secret: TMP_DIR NUXT_PUBLIC_SITE_URL: from_secret: NUXT_PUBLIC_SITE_URL BOOTSTRAP_ADMIN_USERNAME: from_secret: BOOTSTRAP_ADMIN_USERNAME BOOTSTRAP_ADMIN_PASSWORD: from_secret: BOOTSTRAP_ADMIN_PASSWORD commands: - export HOME=/root - mkdir -p "$HOME/.ssh" - chmod 700 "$HOME/.ssh" - 'printf "%s\n" "$DEPLOY_SSH_KEY" > "$HOME/.ssh/id_rsa"' - chmod 600 "$HOME/.ssh/id_rsa" - 'ssh-keyscan -H gitee.com > "$HOME/.ssh/known_hosts"' - chmod 644 "$HOME/.ssh/known_hosts" - 'export SSH_OPTS="-i $HOME/.ssh/id_rsa -o IdentitiesOnly=yes -o UserKnownHostsFile=$HOME/.ssh/known_hosts -o StrictHostKeyChecking=accept-new -o BatchMode=yes -o ConnectTimeout=10 -o ServerAliveInterval=15 -o ServerAliveCountMax=3"' - 'ssh $SSH_OPTS -T gitee.com || true' - 'export GIT_SSH_COMMAND="ssh $SSH_OPTS"' - 'export REPO_DIR="$HOME/projects/nuxt4-demo/nuxt4-demo" PROD_DIR="$HOME/projects/nuxt4-demo/production-dist"' - | set -e BRANCH="$DEPLOY_BRANCH" GIT_REMOTE="git@gitee.com:xieyaxin/nuxt4-demo.git" if [ -d "$REPO_DIR/.git" ]; then git -C "$REPO_DIR" fetch --depth 1 origin "$BRANCH" git -C "$REPO_DIR" checkout -B "$BRANCH" "origin/$BRANCH" git -C "$REPO_DIR" reset --hard "origin/$BRANCH" git -C "$REPO_DIR" clean -fdx else rm -rf "$REPO_DIR" mkdir -p "$(dirname "$REPO_DIR")" git clone --depth 1 -b "$BRANCH" "$GIT_REMOTE" "$REPO_DIR" fi - '[ -f "$REPO_DIR/build-output.tar.gz" ] || { echo "build-output.tar.gz not found in $REPO_DIR"; exit 1; }' - 'rm -rf "$PROD_DIR" && mkdir -p "$PROD_DIR"' - 'tar -xzf "$REPO_DIR/build-output.tar.gz" -C "$PROD_DIR"' - 'bash -lc "cd $HOME/projects/nuxt4-demo/production-dist && pm2 stop nuxt4-demo || true"' - 'bash -lc "cd $HOME/projects/nuxt4-demo/production-dist && pm2 delete nuxt4-demo || true"' - 'bash -lc "cd $HOME/projects/nuxt4-demo/production-dist && pm2 start ./run.sh --name nuxt4-demo"'