diff --git a/.gitea/workflows/wiki-sync.yml b/.gitea/workflows/wiki-sync.yml new file mode 100644 index 0000000..598154e --- /dev/null +++ b/.gitea/workflows/wiki-sync.yml @@ -0,0 +1,61 @@ +name: "Wiki Sync" + +on: + push: + branches: + - main + +jobs: + sync-wiki: + name: "Синхронизация Wiki" + runs-on: ubuntu-latest + + steps: + - name: "Checkout main repository" + uses: actions/checkout@v4 + + - name: "Validate wiki source folder" + run: | + if [ ! -d "wiki" ]; then + echo "Папка wiki/ не найдена — синхронизация не требуется." + exit 0 + fi + + - name: "Sync wiki folder to Gitea Wiki repository" + env: + GIT_TOKEN: ${{ secrets.GIT_TOKEN }} + run: | + if [ -z "${GIT_TOKEN}" ]; then + echo "GIT_TOKEN не задан. Добавьте секрет в Settings -> Secrets -> Actions." + echo "Пропуск синхронизации wiki без ошибки." + exit 0 + fi + + WIKI_REPO_URL="${{ github.server_url }}/${{ github.repository }}.wiki.git" + AUTH_WIKI_REPO_URL="${WIKI_REPO_URL/https:\/\//https:\/\/oauth2:${GIT_TOKEN}@}" + + echo "Клонируем: ${WIKI_REPO_URL}" + git clone --depth 1 "${AUTH_WIKI_REPO_URL}" .wiki-repo + + rsync -a --delete --exclude '.git/' wiki/ .wiki-repo/ + + cd .wiki-repo + git add -A + + if git diff --cached --quiet; then + echo "Изменений в wiki нет — пуш не требуется." + exit 0 + fi + + git config user.name "gitea-actions[bot]" + git config user.email "gitea-actions@local" + + DEFAULT_BRANCH=$(git remote show origin | sed -n '/HEAD branch/s/.*: //p') + if [ -z "${DEFAULT_BRANCH}" ]; then + DEFAULT_BRANCH="master" + fi + + git commit -m "docs(wiki): sync from main @ ${{ github.sha }}" + git push origin "HEAD:${DEFAULT_BRANCH}" + + echo "Wiki синхронизирована в ветку ${DEFAULT_BRANCH}."