From cd36bd824a0d424fbbdb65df7406fbd07f940c3c Mon Sep 17 00:00:00 2001 From: Ember Date: Thu, 30 Jan 2025 01:30:51 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BD=BF=E7=94=A8git=20checkout=E8=84=9A?= =?UTF-8?q?=E6=9C=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitea/workflows/buildsite.yaml | 55 +++++++++++++++++++++++---------- 1 file changed, 38 insertions(+), 17 deletions(-) diff --git a/.gitea/workflows/buildsite.yaml b/.gitea/workflows/buildsite.yaml index 0690551..63c9c07 100644 --- a/.gitea/workflows/buildsite.yaml +++ b/.gitea/workflows/buildsite.yaml @@ -2,33 +2,54 @@ name: Deploy Incremental Updates to NEUxiaozhan on: push: - branches: - - master + branches: [master] jobs: deploy: runs-on: self-hosted steps: - - name: Deploy Incremental Updates + - name: Prepare workspace shell: bash run: | - REPO_PATH="/opt/gitea/data/gitea-repositories/ember/front.git" - WEB_ROOT="/www/wwwroot/front/public" + # 设置本地仓库路径(根据实际路径调整) + LOCAL_REPO="/opt/gitea/data/gitea-repositories/ember/front.git" + WORKSPACE="/tmp/gitea_workflow" - # 进入仓库目录 - cd "$REPO_PATH" + # 创建临时工作区 + mkdir -p $WORKSPACE + cd $WORKSPACE + + # 克隆本地仓库(使用bare repo) + git clone $LOCAL_REPO . - # 获取最新代码 - git fetch origin master + - name: Get changed files + id: changed-files + shell: bash + run: | + cd /tmp/gitea_workflow + + # 处理首次提交的情况 + if git rev-parse HEAD^ >/dev/null 2>&1; then + git diff --name-only HEAD^ HEAD > changed_files.txt + else + git ls-files > changed_files.txt + fi - # 获取最新提交和上一次提交的差异 - LAST_COMMIT=$(git rev-parse HEAD) - git reset --hard origin/master - CURRENT_COMMIT=$(git rev-parse HEAD) + # 生成绝对路径文件列表 + sed -i "s|^|$WORKSPACE/|" changed_files.txt + echo "CHANGED_FILES=/tmp/gitea_workflow/changed_files.txt" >> $GITHUB_ENV - echo "Syncing changes from $LAST_COMMIT to $CURRENT_COMMIT" + - name: Sync changes + shell: bash + run: | + # 创建目标目录 + sudo mkdir -p /www/wwwroot/front/public - # 获取变更文件并同步 - rsync -av --delete --files-from=<(git diff --name-only $LAST_COMMIT $CURRENT_COMMIT) "$REPO_PATH/" "$WEB_ROOT/" + # 带权限同步(使用sudo保留权限) + sudo rsync -av --chown=www-data:www-data \ + --files-from=$CHANGED_FILES \ + /tmp/gitea_workflow/ \ + /www/wwwroot/front/public/ - echo "Deployment completed!" + # 清理临时文件 + rm -rf /tmp/gitea_workflow \ No newline at end of file