diff --git a/.gitea/workflows/build-and-push.yml b/.gitea/workflows/build-and-push.yml index 506de17..0aa120c 100644 --- a/.gitea/workflows/build-and-push.yml +++ b/.gitea/workflows/build-and-push.yml @@ -7,33 +7,50 @@ on: jobs: build-and-push: - runs-on: ubuntu-latest + 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" - # Это позволит пройти проверку SSL (имя совпадает), но пакеты пойдут по локалке. - sudo echo "192.168.50.55 dungeonsiege.synology.me" | sudo tee -a /etc/hosts + # Записываем 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: | - # Логинимся стандартной командой. Она увидит запись в hosts и пойдет на 192.168.50.55 echo "${{ secrets.GIT_TOKEN }}" | docker login dungeonsiege.synology.me -u ${{ secrets.GIT_USERNAME }} --password-stdin - - name: Build Image + - name: Build and Push + if: steps.version_check.outputs.changed == 'true' run: | - # Собираем обычным способом. Здесь интернет БУДЕТ работать. - docker build -t dungeonsiege.synology.me/poignatov/play-life:latest . - - - name: Push Image - run: | - # Отправляем образ. Благодаря шагу Patch DNS, он улетит на локальный IP. - docker push dungeonsiege.synology.me/poignatov/play-life:latest + REGISTRY="dungeonsiege.synology.me/poignatov/play-life" + VER="${{ steps.version_check.outputs.current }}" - # Тэгируем версию коммита - docker tag dungeonsiege.synology.me/poignatov/play-life:latest dungeonsiege.synology.me/poignatov/play-life:${{ github.sha }} - docker push dungeonsiege.synology.me/poignatov/play-life:${{ github.sha }} \ No newline at end of file + # Собираем один раз + docker build -t $REGISTRY:latest -t $REGISTRY:$VER . + + # Пушим оба тега + docker push $REGISTRY:latest + docker push $REGISTRY:$VER \ No newline at end of file diff --git a/VERSION b/VERSION new file mode 100644 index 0000000..5bc4571 --- /dev/null +++ b/VERSION @@ -0,0 +1,2 @@ +1.0.0 +