Kotlin项目的CI/CD:从A到Z掌握GitHub Actions

面向初学者的在线Python训练器

轻松学习Python,无需理论负担。在浏览器中直接解决带自动检查的实践任务,无需安装任何东西。

开始课程

引言:为什么CI/CD对Kotlin项目至关重要

\n

在现代Kotlin开发中,无论是基于Ktor的后端、Android应用还是多平台项目,手动执行重复性操作(构建、运行测试、代码风格检查)不仅浪费时间,而且容易出错。CI/CD(持续集成/持续部署)通过自动化从提交到生产环境的整个流程解决了这一问题。

\n

GitHub Actions是一个内置的自动化工具,非常适合Kotlin项目。它允许您直接在仓库中创建流水线,无需第三方服务。在本文中,我们将详细介绍如何使用GitHub Actions为Kotlin配置完整的CI/CD,从基础构建到部署。

\n\n

1. GitHub Actions与Kotlin基础

\n

GitHub Actions基于工作流(workflow)运行——即定义步骤顺序的YAML文件。每个工作流由触发器(push、pull request、schedule)启动,并在runner的虚拟环境中执行。

\n

对于Kotlin项目,标准技术栈包括:

\n
    \n
  • Gradle 或 Maven —— 构建系统;
  • \n
  • JUnit / Kotest —— 测试框架;
  • \n
  • Detekt / ktlint —— Kotlin代码检查工具。
  • \n
\n

第一步是在仓库根目录下创建文件 .github/workflows/ci.yml。我们来看一个用于构建和测试的最小配置。

\n\n

1.1 基础构建与测试

\n

从一个简单的流水线开始,该流水线在每次推送到main分支或创建pull request时触发:

\n
name: CI for Kotlin\n\non:\n  push:\n    branches: [ main ]\n  pull_request:\n    branches: [ main ]\n\njobs:\n  build:\n    runs-on: ubuntu-latest\n\n    steps:\n      - uses: actions/checkout@v3\n      - name: Set up JDK 17\n        uses: actions/setup-java@v3\n        with:\n          java-version: '17'\n          distribution: 'temurin'\n      - name: Grant execute permission for gradlew\n        run: chmod +x gradlew\n      - name: Build with Gradle\n        run: ./gradlew build\n      - name: Run tests\n        run: ./gradlew test
\n

这段代码执行以下操作:克隆仓库,安装JDK 17(Kotlin 1.9+的推荐版本),使gradlew可执行,执行构建并运行测试。如果测试失败,流水线将停止并报错。

\n\n

2. 高级配置:代码检查、缓存与构建矩阵

\n

基础配置很好,但对于实际项目,还需要更多。我们将添加使用Detekt进行代码风格检查以及Gradle依赖缓存以加速运行。

\n\n

2.1 Gradle缓存

\n

没有缓存时,每次运行都会重新下载依赖,这可能需要2-5分钟。使用内置缓存:

\n
- name: Cache Gradle packages\n  uses: actions/cache@v3\n  with:\n    path: |\n      ~/.gradle/caches\n      ~/.gradle/wrapper\n    key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle*', '**/gradle-wrapper.properties') }}\n    restore-keys: |\n      ${{ runner.os }}-gradle-
\n\n

2.2 使用Detekt进行代码检查

\n

添加一个代码检查任务。Detekt可以通过Gradle插件运行:

\n
- name: Run Detekt\n  run: ./gradlew detekt
\n

如果Detekt发现违规,流水线将以错误结束。这确保了“脏”代码不会进入仓库。

\n\n

2.3 构建矩阵(Matrix Build)

\n

如果您的项目支持多个Kotlin或JDK版本,请使用矩阵。这可以在不重复代码的情况下检查兼容性:

\n
jobs:\n  build:\n    strategy:\n      matrix:\n        java: [11, 17, 21]\n        kotlin: [1.9.0, 2.0.0]\n    runs-on: ubuntu-latest\n    steps:\n      - uses: actions/checkout@v3\n      - name: Set up JD                

博客

书籍推荐