name: Build and Push Docker Image on: push: branches: - main jobs: build-and-push: runs-on: ubuntu-latest # Убедитесь, что у вашего раннера есть этот тег steps: - name: Checkout code uses: actions/checkout@v4 with: fetch-depth: 2 - name: Get versions and check change id: version_check run: | # Извлекаем текущую версию CUR=$(cat VERSION | tr -d '[:space:]') echo "current=$CUR" >> $GITHUB_OUTPUT # Безопасно извлекаем старую версию PREV=$(git show HEAD~1:VERSION 2>/dev/null | tr -d '[:space:]' || echo "none") if [ "$CUR" != "$PREV" ]; then echo "changed=true" >> $GITHUB_OUTPUT else echo "changed=false" >> $GITHUB_OUTPUT fi - name: Patch DNS for Local Network if: steps.version_check.outputs.changed == 'true' run: | # Записываем IP Synology прямо в контейнер сборки echo "192.168.50.55 dungeonsiege.synology.me" | sudo tee -a /etc/hosts - name: Log in to Gitea Registry if: steps.version_check.outputs.changed == 'true' run: | echo "${{ secrets.GIT_TOKEN }}" | docker login dungeonsiege.synology.me -u ${{ secrets.GIT_USERNAME }} --password-stdin - name: Build and Push id: build if: steps.version_check.outputs.changed == 'true' run: | REGISTRY="dungeonsiege.synology.me/poignatov/play-life" VER="${{ steps.version_check.outputs.current }}" echo "Building Docker image..." echo "Registry: $REGISTRY" echo "Tags: latest, $VER" # Собираем один раз docker build -t $REGISTRY:latest -t $REGISTRY:$VER . # Пушим оба тега echo "Pushing image to registry..." docker push $REGISTRY:latest docker push $REGISTRY:$VER echo "✅ Successfully pushed to registry:" echo " - $REGISTRY:latest" echo " - $REGISTRY:$VER" - name: Send Telegram notification (success) if: success() && steps.version_check.outputs.changed == 'true' uses: appleboy/telegram-action@master with: to: ${{ secrets.TELEGRAM_TO }} token: ${{ secrets.TELEGRAM_TOKEN }} message: | ✅ Сборка и публикация успешны! Проект: play-life Версия: ${{ steps.version_check.outputs.current }} Registry: dungeonsiege.synology.me/poignatov/play-life Теги: latest, ${{ steps.version_check.outputs.current }} Ветка: ${{ github.ref_name }} Коммит: ${{ github.sha }} - name: Send Telegram notification (failure) if: failure() uses: appleboy/telegram-action@master with: to: ${{ secrets.TELEGRAM_TO }} token: ${{ secrets.TELEGRAM_TOKEN }} message: | ❌ Сборка завершилась с ошибкой! Проект: play-life Версия: ${{ steps.version_check.outputs.current }} Ветка: ${{ github.ref_name }} Коммит: ${{ github.sha }} - name: Send Telegram notification (skipped) if: steps.version_check.outputs.changed == 'false' uses: appleboy/telegram-action@master with: to: ${{ secrets.TELEGRAM_TO }} token: ${{ secrets.TELEGRAM_TOKEN }} message: | ℹ️ Сборка пропущена Проект: play-life Версия не изменилась: ${{ steps.version_check.outputs.current }} Ветка: ${{ github.ref_name }}