Browse Source
- Introduced a new Drone CI/CD pipeline configuration for automated deployment on the 'deploy-branch'. - Created a deployment script that builds the project, manages temporary directories, and handles git operations for pushing build artifacts. - Updated the .env.example file to reflect new environment variable configurations for deployment. - Enhanced .gitignore to include temporary distribution files. These changes streamline the deployment process and improve project management for production releases.main
5 changed files with 85 additions and 4 deletions
@ -0,0 +1,37 @@ |
|||
kind: pipeline |
|||
type: exec |
|||
name: deploy |
|||
|
|||
trigger: |
|||
branch: |
|||
- deploy-branch |
|||
event: |
|||
- push |
|||
|
|||
steps: |
|||
- name: deploy |
|||
environment: |
|||
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: |
|||
- 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 -p 8892 git.xieyaxin.top >> "$HOME/.ssh/known_hosts"' |
|||
- chmod 644 "$HOME/.ssh/known_hosts" |
|||
- 'if [ ! -d "$HOME/projects/nuxt4-demo/nuxt4-demo" ]; then mkdir -p "$HOME/projects/nuxt4-demo" && GIT_SSH_COMMAND="ssh -i $HOME/.ssh/id_rsa -o IdentitiesOnly=yes" git clone -b deploy-branch "ssh://root@git.xieyaxin.top:8892/topuser/nuxt4-demo.git" "$HOME/projects/nuxt4-demo/nuxt4-demo"; else cd "$HOME/projects/nuxt4-demo/nuxt4-demo" && GIT_SSH_COMMAND="ssh -i $HOME/.ssh/id_rsa -o IdentitiesOnly=yes" git pull origin deploy-branch; fi' |
|||
- pm2 stop nuxt4-demo |
|||
- pm2 start nuxt4-demo |
|||
@ -0,0 +1,42 @@ |
|||
#!/usr/bin/env sh |
|||
|
|||
# 配置区(只改这里) |
|||
GIT_REPO_URL="ssh://root@git.xieyaxin.top:8892/topuser/nuxt4-demo.git" |
|||
PROD_BRANCH="deploy-branch" # 你要存放产物的分支名(会自动创建) |
|||
BUILD_FOLDER=".output" # 打包产物目录 |
|||
COMMIT_MSG="deploy: build at $(date +'%Y-%m-%d %H:%M:%S')" |
|||
|
|||
# 1. 先打包 |
|||
echo "📦 构建项目..." |
|||
bun run build |
|||
|
|||
# 2. 克隆远程产物分支到临时目录 |
|||
echo "⬇️ 拉取产物分支..." |
|||
git clone --single-branch --branch $PROD_BRANCH $GIT_REPO_URL .tmp_dist || { |
|||
echo "🆕 分支不存在,创建新分支..." |
|||
mkdir .tmp_dist |
|||
cd .tmp_dist |
|||
git init |
|||
git checkout -b $PROD_BRANCH |
|||
git remote add origin $GIT_REPO_URL |
|||
cd .. |
|||
} |
|||
|
|||
# 3. 删除旧产物,复制新产物 |
|||
echo "♻️ 更新产物文件..." |
|||
rm -rf .tmp_dist/* |
|||
cp -r $BUILD_FOLDER/* .tmp_dist/ |
|||
|
|||
# 4. 提交并推送 |
|||
cd .tmp_dist |
|||
git add -A |
|||
git commit -m "$COMMIT_MSG" |
|||
|
|||
echo "🚀 推送到远程分支 $PROD_BRANCH..." |
|||
git push origin $PROD_BRANCH |
|||
|
|||
# 5. 清理临时文件 |
|||
cd .. |
|||
rm -rf .tmp_dist |
|||
|
|||
echo "✅ 发布完成!" |
|||
Loading…
Reference in new issue