From f156aff8396ee550cb68f91a587bce4d452d7147 Mon Sep 17 00:00:00 2001 From: Leo Galambos Date: Wed, 11 Feb 2026 20:53:35 +0100 Subject: [PATCH] chore: workflow for standalone apps added chore: PMD added chore: git-version for releases --- .gitea/workflows/release.yml | 84 +++++++++ .ruleset | 357 +++++++++++++++++++++++++++++++++++ build.gradle | 51 ++++- 3 files changed, 491 insertions(+), 1 deletion(-) create mode 100644 .gitea/workflows/release.yml create mode 100644 .ruleset diff --git a/.gitea/workflows/release.yml b/.gitea/workflows/release.yml new file mode 100644 index 0000000..edd763c --- /dev/null +++ b/.gitea/workflows/release.yml @@ -0,0 +1,84 @@ +name: Release + +on: + push: + tags: + - 'release@*' + +jobs: + release: + runs-on: ubuntu-latest + + steps: + - name: Checkout code + uses: actions/checkout@v4 + with: + fetch-depth: 0 + + - name: Set up Java 21 + uses: actions/setup-java@v3 + with: + distribution: temurin + java-version: 21 + + - name: Cache Gradle + uses: actions/cache@v4 + with: + path: | + ~/.gradle/caches + ~/.gradle/wrapper + key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle*', '**/gradle-wrapper.properties') }} + restore-keys: | + ${{ runner.os }}-gradle- + + - name: Build + run: ./gradlew clean build --no-daemon + + - name: Generate release notes + id: notes + run: | + current_tag="${{ github.ref_name }}" + + # strip the prefix for sorting, keep prefix for matching + prefix="release@" + + # get all matching tags, strip prefix, sort them + all_versions=$(git tag --list "${prefix}*" | sed "s/^${prefix}//" | sort -V) + + # find previous version + previous_tag="" + for v in $all_versions; do + if [[ "$prefix$v" == "$current_tag" ]]; then + break + fi + previous_tag="$prefix$v" + done + + if [[ -z "$previous_tag" ]]; then + range="" + else + range="$previous_tag..$current_tag" + fi + + echo "Comparing range: $range" + + body="## What's New" + + for category in "feat: Features" "fix: Bug Fixes" "docs: Documentation" "chore: Chores"; do + prefix="${category%%:*}" + title="${category##*: }" + entries=$(git log $range --pretty=format:"%B" --no-merges | ( grep "^${prefix}" || true ) | sed "s/^${prefix}:/- /") + if [[ -n "$entries" ]]; then + body="$body\n\n### $title\n$entries" + fi + done + + echo -e "$body" > /tmp/release_notes.md + + - name: Create Gitea Release + uses: softprops/action-gh-release@v2 + with: + files: | + build/distributions/*.tar + build/distributions/*.zip + body_path: /tmp/release_notes.md diff --git a/.ruleset b/.ruleset new file mode 100644 index 0000000..467ba2e --- /dev/null +++ b/.ruleset @@ -0,0 +1,357 @@ + + + Egothor preferences rule set + .*/package-info\.java + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/build.gradle b/build.gradle index b2cdac2..651d764 100644 --- a/build.gradle +++ b/build.gradle @@ -1,10 +1,12 @@ plugins { id 'java' id 'application' + id 'pmd' + id 'com.palantir.git-version' version '4.0.0' } group = 'org.egothor.methodatlas' -version = '0.1.0-SNAPSHOT' +version = gitVersion(prefix:'release@') java { toolchain { @@ -32,6 +34,32 @@ tasks.test { useJUnitPlatform() } +javadoc { + failOnError = false + + options.addStringOption('Xdoclint:all,-missing', '-quiet') + options.addBooleanOption('html5', true) + options.tags('apiNote:a:API Note:') + options.tags('implSpec:a:Implementation Requirements:') + options.tags('implNote:a:Implementation Note:') + options.tags('param') + options.tags('return') + options.tags('throws') + options.tags('since') + options.tags('version') + options.tags('serialData') + options.tags('factory') + options.tags('see') + + options.use = true + options.author = true + options.version = true + options.windowTitle = 'MethodAtlas' + options.docTitle = 'MethodAtlas API' + + source = sourceSets.main.allJava +} + jar { manifest { attributes( @@ -66,3 +94,24 @@ jar { duplicatesStrategy = DuplicatesStrategy.EXCLUDE } + +gradle.taskGraph.whenReady { taskGraph -> + def banner = """ +\u001B[34m + +8888888888 .d8888b. .d88888b. 88888888888 888 888 .d88888b. 8888888b. +888 d88P Y88b d88P" "Y88b 888 888 888 d88P" "Y88b 888 Y88b +888 888 888 888 888 888 888 888 888 888 888 888 +8888888 888 888 888 888 8888888888 888 888 888 d88P +888 888 88888 888 888 888 888 888 888 888 8888888P" +888 888 888 888 888 888 888 888 888 888 888 T88b +888 Y88b d88P Y88b. .d88P 888 888 888 Y88b. .d88P 888 T88b +8888888888 "Y8888P88 "Y88888P" 888 888 888 "Y88888P" 888 T88b + +\u001B[36m + Project : ${project.name} + Version : ${project.version} +\u001B[0m +""" + println banner +}