Appearance
GitHub Actions 集成
基础工作流
yaml
# .github/workflows/build.yml
name: Build
on:
push:
branches: [ main, develop ]
pull_request:
branches: [ main ]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Set up JDK 17
uses: actions/setup-java@v4
with:
java-version: '17'
distribution: 'temurin'
# 缓存 Gradle 依赖(大幅加速)
- name: Cache Gradle packages
uses: actions/cache@v4
with:
path: |
~/.gradle/caches
~/.gradle/wrapper
key: gradle-${{ runner.os }}-${{ hashFiles('**/*.gradle*', '**/gradle-wrapper.properties') }}
restore-keys: |
gradle-${{ runner.os }}-
- name: Build with Gradle
run: ./gradlew build --parallel --build-cache
env:
GRADLE_OPTS: "-Dorg.gradle.daemon=false"
- name: Upload test results
if: always()
uses: actions/upload-artifact@v4
with:
name: test-results
path: '**/build/test-results/**/*.xml'
- name: Publish test results
if: always()
uses: mikepenz/action-junit-report@v4
with:
report_paths: '**/build/test-results/**/*.xml'使用 Gradle 官方 Action
yaml
- name: Setup Gradle
uses: gradle/actions/setup-gradle@v3
with:
gradle-version: wrapper # 使用项目 Wrapper 版本
cache-enabled: true # 自动缓存
- name: Build
run: ./gradlew build多版本 Java 测试
yaml
jobs:
test:
runs-on: ubuntu-latest
strategy:
matrix:
java: [17, 21]
steps:
- uses: actions/checkout@v4
- name: Set up JDK ${{ matrix.java }}
uses: actions/setup-java@v4
with:
java-version: ${{ matrix.java }}
distribution: 'temurin'
- uses: gradle/actions/setup-gradle@v3
- run: ./gradlew test发布工作流
yaml
name: Release
on:
push:
tags:
- 'v*'
jobs:
release:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-java@v4
with:
java-version: '17'
distribution: 'temurin'
gpg-private-key: ${{ secrets.GPG_PRIVATE_KEY }}
gpg-passphrase: GPG_PASSPHRASE
- uses: gradle/actions/setup-gradle@v3
- name: Publish to Maven Central
run: ./gradlew publish
env:
GPG_PASSPHRASE: ${{ secrets.GPG_PASSPHRASE }}
OSSRH_USERNAME: ${{ secrets.OSSRH_USERNAME }}
OSSRH_PASSWORD: ${{ secrets.OSSRH_PASSWORD }}Build Scan 集成
yaml
- name: Build with scan
run: ./gradlew build --scan
env:
GRADLE_ENTERPRISE_ACCESS_KEY: ${{ secrets.GRADLE_ENTERPRISE_ACCESS_KEY }}下一步
- GitLab CI 集成 - GitLab CI 配置