From 3e5dcbf3ac7b2ec224187f050c8b2f3549e74a6b Mon Sep 17 00:00:00 2001 From: loki5512344 Date: Tue, 7 Apr 2026 13:21:34 +0200 Subject: [PATCH] =?UTF-8?q?ci:=20=D0=B4=D0=BE=D0=B1=D0=B0=D0=B2=D0=B8?= =?UTF-8?q?=D1=82=D1=8C=20Forgejo=20Actions=20workflows?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Добавлены 3 workflow для CI/CD: 1. build.yml - основная сборка и тесты - Запускается на push в main/develop и PR - Сборка с Gradle - Запуск тестов - Загрузка артефактов (jar файлы, отчеты тестов) 2. release.yml - автоматические релизы - Запускается при создании тега v* - Сборка без тестов - Создание релиза с артефактами 3. quality.yml - проверка качества кода - Проверка стиля кода - Тесты с покрытием (Jacoco) - Загрузка отчетов о покрытии Требования: - JDK 21 (Temurin) - Gradle wrapper - Forgejo Actions runner --- .forgejo/workflows/build.yml | 47 ++++++++++++++++++++++++++++++++++ .forgejo/workflows/quality.yml | 39 ++++++++++++++++++++++++++++ .forgejo/workflows/release.yml | 39 ++++++++++++++++++++++++++++ 3 files changed, 125 insertions(+) create mode 100644 .forgejo/workflows/build.yml create mode 100644 .forgejo/workflows/quality.yml create mode 100644 .forgejo/workflows/release.yml diff --git a/.forgejo/workflows/build.yml b/.forgejo/workflows/build.yml new file mode 100644 index 0000000..d42ef6c --- /dev/null +++ b/.forgejo/workflows/build.yml @@ -0,0 +1,47 @@ +name: Build and Test + +on: + push: + branches: [ main, develop ] + pull_request: + branches: [ main ] + +jobs: + build: + runs-on: ubuntu-latest + + steps: + - name: Checkout code + uses: actions/checkout@v4 + + - name: Set up JDK 21 + uses: actions/setup-java@v4 + with: + java-version: '21' + distribution: 'temurin' + cache: gradle + + - name: Grant execute permission for gradlew + run: chmod +x gradlew + + - name: Build with Gradle + run: ./gradlew build --no-daemon + + - name: Run tests + run: ./gradlew test --no-daemon + + - name: Upload build artifacts + uses: actions/upload-artifact@v4 + if: success() + with: + name: lochat-plugin + path: build/libs/*.jar + retention-days: 30 + + - name: Upload test results + uses: actions/upload-artifact@v4 + if: always() + with: + name: test-results + path: build/reports/tests/ + retention-days: 7 diff --git a/.forgejo/workflows/quality.yml b/.forgejo/workflows/quality.yml new file mode 100644 index 0000000..faf688f --- /dev/null +++ b/.forgejo/workflows/quality.yml @@ -0,0 +1,39 @@ +name: Code Quality + +on: + push: + branches: [ main, develop ] + pull_request: + branches: [ main ] + +jobs: + quality: + runs-on: ubuntu-latest + + steps: + - name: Checkout code + uses: actions/checkout@v4 + + - name: Set up JDK 21 + uses: actions/setup-java@v4 + with: + java-version: '21' + distribution: 'temurin' + cache: gradle + + - name: Grant execute permission for gradlew + run: chmod +x gradlew + + - name: Check code style + run: ./gradlew check --no-daemon + + - name: Run tests with coverage + run: ./gradlew test jacocoTestReport --no-daemon + + - name: Upload coverage reports + uses: actions/upload-artifact@v4 + if: always() + with: + name: coverage-reports + path: build/reports/jacoco/ + retention-days: 7 diff --git a/.forgejo/workflows/release.yml b/.forgejo/workflows/release.yml new file mode 100644 index 0000000..9dbfe33 --- /dev/null +++ b/.forgejo/workflows/release.yml @@ -0,0 +1,39 @@ +name: Release + +on: + push: + tags: + - 'v*' + +jobs: + release: + runs-on: ubuntu-latest + + steps: + - name: Checkout code + uses: actions/checkout@v4 + + - name: Set up JDK 21 + uses: actions/setup-java@v4 + with: + java-version: '21' + distribution: 'temurin' + cache: gradle + + - name: Grant execute permission for gradlew + run: chmod +x gradlew + + - name: Build release + run: ./gradlew build -x test --no-daemon + + - name: Get version from tag + id: get_version + run: echo "VERSION=${GITHUB_REF#refs/tags/v}" >> $GITHUB_OUTPUT + + - name: Create Release + uses: actions/forgejo-release@v2 + with: + direction: upload + release-dir: build/libs + token: ${{ secrets.GITHUB_TOKEN }} + tag: ${{ github.ref_name }}