From c95e26b4afbe428454c423924bdca06fe49e3eb8 Mon Sep 17 00:00:00 2001 From: layue13 Date: Tue, 30 Jun 2026 17:31:23 +0800 Subject: [PATCH] Add Gitea CI and repository hygiene --- .gitattributes | 15 +++++++++++++++ .gitea/workflows/ci.yml | 34 ++++++++++++++++++++++++++++++++++ .gitignore | 21 +++++++++++++++++++++ README.md | 10 ++++++++++ 4 files changed, 80 insertions(+) create mode 100644 .gitattributes create mode 100644 .gitea/workflows/ci.yml create mode 100644 .gitignore diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..b2243d3 --- /dev/null +++ b/.gitattributes @@ -0,0 +1,15 @@ +* text=auto eol=lf + +*.bat text eol=crlf +*.cmd text eol=crlf +*.ps1 text eol=crlf + +*.jar binary +*.zip binary +*.gz binary +*.png binary +*.jpg binary +*.jpeg binary +*.gif binary +*.ico binary +*.pdf binary diff --git a/.gitea/workflows/ci.yml b/.gitea/workflows/ci.yml new file mode 100644 index 0000000..2c953de --- /dev/null +++ b/.gitea/workflows/ci.yml @@ -0,0 +1,34 @@ +name: ci + +on: + push: + branches: + - main + pull_request: + workflow_dispatch: + +jobs: + verify: + name: Java 25 verification + runs-on: ubuntu-latest + timeout-minutes: 30 + + steps: + - name: Checkout + uses: actions/checkout@v4 + + - name: Set up Java 25 + uses: actions/setup-java@v4 + with: + distribution: zulu + java-version: "25" + cache: gradle + + - name: Make Gradle wrapper executable + run: chmod +x ./gradlew + + - name: Verify build, tests, release gates, and installed distributions + run: ./gradlew --no-daemon --configuration-cache check installDist :proxy-admin-cli:installDist :proxy-query:installDist + + - name: Build release bundle + run: ./gradlew --no-daemon --configuration-cache release diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..007b83e --- /dev/null +++ b/.gitignore @@ -0,0 +1,21 @@ +.gradle/ +build/ +**/build/ + +out/ +target/ + +*.class +*.log +*.tmp +*.pid + +.idea/ +.vscode/ +*.iml + +hs_err_pid* +replay_pid* + +data/ +*.invalid-* diff --git a/README.md b/README.md index 3120306..7ac9538 100644 --- a/README.md +++ b/README.md @@ -11,6 +11,7 @@ The core model intentionally does not contain `modpackId`. Routing decisions are - Version Catalog - Convention plugins in `proxy-build-logic` - Configuration cache enabled +- Gitea Actions CI in `.gitea/workflows/ci.yml` runs Java 25 `check`, installed distribution smoke tests, release audit, performance profile validation, and release bundle creation on `main` pushes and pull requests The local machine currently has JDK 25 installed at `C:\Program Files\Zulu\zulu-25`, while the default `java` on PATH may still point to Java 8. Use `JAVA_HOME=C:\Program Files\Zulu\zulu-25` or update PATH before building. @@ -73,6 +74,15 @@ Get-ChildItem .\build\release Get-Content .\build\release\strataproxy-0.1.0-SNAPSHOT.zip.sha256 ``` +The same core verification is automated in Gitea CI: + +```text +./gradlew --no-daemon --configuration-cache check installDist :proxy-admin-cli:installDist :proxy-query:installDist +./gradlew --no-daemon --configuration-cache release +``` + +CI proves build, unit/integration tests, installed command smoke tests, release metadata/SBOM/checksum audits, deployment asset validation, and performance profile schema validation. It does not replace the dedicated Linux native acceptance run for the 10k idle / 2k active-player performance target; record that evidence with `deployment/performance/profile-result-template.json`. + The release bundle contains app, Admin CLI, query CLI distribution archives, deployment profiles, sample configs, observability assets, README, `RELEASE-MANIFEST.txt`, `strataproxy-.sbom.cdx.json`, and `strataproxy-.metadata.json`. The checksum file covers the outer release bundle, the three inner distribution archives, the SBOM, and release metadata. Release metadata is unsigned by default for local builds. Set `STRATAPROXY_RELEASE_SIGNING_KEY` or Gradle property `strataproxy.releaseSigningKey` to emit an HMAC-SHA256 signature over the release metadata payload: