ci: добавить Forgejo Actions workflows

Добавлены 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
This commit is contained in:
loki5512344 2026-04-07 13:21:34 +02:00
parent 4107731014
commit 3e5dcbf3ac
3 changed files with 125 additions and 0 deletions

View file

@ -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

View file

@ -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

View file

@ -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 }}