63 lines
1.9 KiB
YAML
63 lines
1.9 KiB
YAML
name: Deploy Incremental Updates to NEUxiaozhan
|
||
|
||
on:
|
||
push:
|
||
branches: [master]
|
||
|
||
jobs:
|
||
deploy:
|
||
runs-on: self-hosted
|
||
steps:
|
||
- name: Setup local repository
|
||
shell: bash
|
||
run: |
|
||
# 定义本地仓库路径(根据实际情况调整)
|
||
REPO_PATH="/opt/gitea/data/gitea-repositories/ember/front.git"
|
||
WORK_TREE="/tmp/gitea_worktree"
|
||
|
||
# 创建临时工作目录
|
||
mkdir -p $WORK_TREE
|
||
|
||
# 使用git worktree挂载最新代码
|
||
git --git-dir=$REPO_PATH worktree add --force $WORK_TREE HEAD
|
||
|
||
- name: Detect changed files
|
||
shell: bash
|
||
run: |
|
||
cd /tmp/gitea_worktree
|
||
|
||
# 智能识别首次提交情况
|
||
if git rev-parse HEAD^ >/dev/null 2>&1; then
|
||
DIFF_REF="HEAD^..HEAD"
|
||
else
|
||
DIFF_REF="HEAD"
|
||
fi
|
||
|
||
# 生成带完整路径的变更文件列表
|
||
git diff --name-only --diff-filter=d $DIFF_REF > /tmp/changed_files.txt
|
||
|
||
- name: Sync incremental files
|
||
shell: bash
|
||
run: |
|
||
# 配置路径参数
|
||
SOURCE_DIR="/tmp/gitea_worktree"
|
||
TARGET_DIR="/www/wwwroot/front/public"
|
||
|
||
# 使用rsync进行增量同步
|
||
rsync -avR --remove-source-files \
|
||
--files-from=/tmp/changed_files.txt \
|
||
$SOURCE_DIR/ \
|
||
$TARGET_DIR/
|
||
|
||
# 权限设置(根据Web服务器用户调整)
|
||
# sudo chown -R www:www $TARGET_DIR
|
||
# sudo find $TARGET_DIR -type d -exec chmod 755 {} \;
|
||
# sudo find $TARGET_DIR -type f -exec chmod 644 {} \;
|
||
|
||
- name: Cleanup
|
||
shell: bash
|
||
run: |
|
||
# 清理临时工作目录
|
||
WORK_TREE="/tmp/gitea_worktree"
|
||
git --git-dir=/opt/gitea/data/gitea-repositories/ember/front.git worktree remove $WORK_TREE --force
|
||
rm -rf $WORK_TREE /tmp/changed_files.txt |