4.23
安卓应用的 CI/CD 集成
以下是使用 GitHub Actions 实现安卓应用 CI/CD 的 Java 实践:
- 创建 workflow 文件
在项目根目录下创建.github/workflows/android.yml文件:
yaml
name: Android CI
on:
push:
branches: [ main ]
pull_request:
branches: [ main ]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Set up JDK 11
uses: actions/setup-java@v3
with:
java-version: '11'
distribution: 'adopt'
- name: Validate Gradle wrapper
uses: gradle/wrapper-validation-action@v1
- name: Build with Gradle
run: ./gradlew build
- name: Run tests
run: ./gradlew test
- name: Upload APK
uses: actions/upload-artifact@v3
with:
name: app-debug.apk
path: app/build/outputs/apk/debug/app-debug.apk
- name: Sign APK
if: github.event_name == 'push' && github.ref == 'refs/heads/main'
run: |
echo "$KEYSTORE" | base64 -d > release.keystore
./gradlew assembleRelease \
-Pandroid.injected.signing.store.file=release.keystore \
-Pandroid.injected.signing.store.password=$KEYSTORE_PASSWORD \
-Pandroid.injected.signing.key.alias=$KEY_ALIAS \
-Pandroid.injected.signing.key.password=$KEY_PASSWORD
env:
KEYSTORE: ${{ secrets.KEYSTORE }}
KEYSTORE_PASSWORD: ${{ secrets.KEYSTORE_PASSWORD }}
KEY_ALIAS: ${{ secrets.KEY_ALIAS }}
KEY_PASSWORD: ${{ secrets.KEY_PASSWORD }}
- name: Upload Release APK
if: github.event_name == 'push' && github.ref == 'refs/heads/main'
uses: actions/upload-artifact@v3
with:
name: app-release.apk
path: app/build/outputs/apk/release/app-release.apk
- 配置密钥
在 GitHub 仓库的 Settings > Secrets 中添加以下密钥:
KEYSTORE: 经过 Base64 编码的签名密钥库文件
KEYSTORE_PASSWORD: 密钥库密码
KEY_ALIAS: 密钥别名
KEY_PASSWORD: 密钥密码
3. 生成 Base64 编码的密钥库
bash
base64 release.keystore > release.keystore.base64
通过以上配置,每次推送到 main 分支时,GitHub Actions 会自动构建、测试并上传 APK 文件。
浙公网安备 33010602011771号