Skip to content

Merge pull request #96 from tronprotocol/docs/streamline-docs-structure #4

Merge pull request #96 from tronprotocol/docs/streamline-docs-structure

Merge pull request #96 from tronprotocol/docs/streamline-docs-structure #4

Workflow file for this run

name: CI
on:
push:
branches: [main, develop, release_workflow, 'release_**']
pull_request:
branches: [main, develop, release_workflow]
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
jobs:
compile:
name: Compile Check
runs-on: ubuntu-latest
timeout-minutes: 30
steps:
- uses: actions/checkout@v4
- name: Set up JDK 8
uses: actions/setup-java@v4
with:
java-version: '8'
distribution: 'temurin'
- name: Cache Gradle packages
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: Compile
run: ./gradlew compileTestJava --no-daemon
checkstyle:
name: Checkstyle
runs-on: ubuntu-latest
timeout-minutes: 10
steps:
- uses: actions/checkout@v4
- name: Set up JDK 8
uses: actions/setup-java@v4
with:
java-version: '8'
distribution: 'temurin'
- name: Cache Gradle packages
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: Run Checkstyle
run: ./gradlew lint --no-daemon
fuzz-test:
name: Property-Based Tests
runs-on: ubuntu-latest
timeout-minutes: 15
steps:
- uses: actions/checkout@v4
- name: Set up JDK 8
uses: actions/setup-java@v4
with:
java-version: '8'
distribution: 'temurin'
- name: Cache Gradle packages
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: Run fuzz tests
run: ./gradlew fuzzTest --no-daemon
coverage-gate:
name: Coverage Threshold
if: github.event_name == 'pull_request'
runs-on: ubuntu-latest
timeout-minutes: 15
steps:
- uses: actions/checkout@v4
- name: Set up JDK 8
uses: actions/setup-java@v4
with:
java-version: '8'
distribution: 'temurin'
- name: Cache Gradle packages
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: Run coverage check
run: ./gradlew coverageCheck --no-daemon
pr-lint:
name: PR Title Lint
if: github.event_name == 'pull_request'
runs-on: ubuntu-latest
timeout-minutes: 5
steps:
- name: Validate PR title
uses: actions/github-script@v7
with:
script: |
const title = context.payload.pull_request.title;
// Aligned with java-tron pr-check.yml commit format
const types = 'feat|fix|test|refactor|docs|style|chore|ci|perf|build|revert';
const scopes = 'consensus|vm|account|token|api|resource|governance|network|ci|infra';
const pattern = new RegExp(`^(${types})(\\((${scopes})(\\/.+)?\\))?!?: .{3,64}$`);
if (!pattern.test(title)) {
core.setFailed(
`PR title "${title}" does not match convention.\n` +
`Expected: type(scope): subject\n` +
`Types: ${types}\n` +
`Scopes: ${scopes}\n` +
`Subject: 3-64 chars, imperative mood`
);
} else {
core.info(`PR title "${title}" is valid.`);
}