diff --git a/.gitea/workflows/deploy.yml b/.gitea/workflows/deploy.yml index cc02a16..8eb9aa6 100644 --- a/.gitea/workflows/deploy.yml +++ b/.gitea/workflows/deploy.yml @@ -15,6 +15,7 @@ jobs: runs-on: ubuntu-latest env: SERVICE: max-bot-test + REPO: max-bot-test HEALTHCHECK: "" BUILD: "true" SERVER_HOST: ${{ vars.SERVER_HOST }} @@ -33,24 +34,33 @@ jobs: ssh-keyscan -p "$SERVER_PORT" "$SERVER_HOST" >> ~/.ssh/known_hosts 2>/dev/null - name: Clone or reset repo on server + env: + GIT_TOKEN: ${{ secrets.GIT_TOKEN }} run: | + # Аутентификация git к приватным репо через http.extraHeader (токен не + # оседает в .git/config сервера). fetch и reset — РАЗДЕЛЬНО, иначе при + # set -e ошибка fetch в 'fetch && reset' молча проглатывается. + AUTH="http.extraHeader=Authorization: token ${GIT_TOKEN}" ssh -i ~/.ssh/id_rsa -p "$SERVER_PORT" "$SERVER_USER@$SERVER_HOST" " set -e - URL=https://git.pkirillw-server.ru/pkirillw/$SERVICE.git + URL=https://git.pkirillw-server.ru/pkirillw/$REPO.git if [ -d '$SERVER_BASE/$SERVICE/.git' ]; then cd '$SERVER_BASE/$SERVICE' - git rev-parse HEAD > /tmp/deploy_prev_$SERVICE - git fetch origin main && git reset --hard origin/main + git rev-parse HEAD > /tmp/deploy_prev_$SERVICE 2>/dev/null || : > /tmp/deploy_prev_$SERVICE + git -c \"$AUTH\" fetch origin main + git reset --hard origin/main elif [ -d '$SERVER_BASE/$SERVICE' ]; then # папка есть, но не git (развёрнуто вручную) — инициализируем на месте cd '$SERVER_BASE/$SERVICE' git init -q git remote add origin \$URL 2>/dev/null || git remote set-url origin \$URL - git fetch -q origin main && git reset --hard origin/main + git -c \"$AUTH\" fetch origin main + git reset --hard origin/main : > /tmp/deploy_prev_$SERVICE else mkdir -p '$SERVER_BASE' - cd '$SERVER_BASE' && git clone \$URL '$SERVICE' + cd '$SERVER_BASE' + git -c \"$AUTH\" clone \$URL '$SERVICE' : > /tmp/deploy_prev_$SERVICE fi"