CI/CD 用于 Kotlin 项目的 GitHub Actions:逐步指南

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

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

开始课程
Here is the translated HTML content:

引言:为什么 CI/CD 对 Kotlin 开发不可或缺

现代 Kotlin 开发不仅关乎编写简洁且安全的代码,还关乎确保其持续交付。无论你是在 Ktor 上创建服务器端应用程序、Android 应用还是多平台项目,手动构建和测试都会迅速成为瓶颈。CI/CD(持续集成 / 持续部署) 可以自动化这些流程,降低人为错误的风险,并加速新功能的发布。

GitHub Actions 是实现 CI/CD 最流行的工具之一,特别是当你的代码已经托管在 GitHub 上时。它与 Kotlin 生态紧密集成,支持 Gradle 和 Maven,并允许你灵活地配置管道以满足任何需求。在本文中,我们将详细讲解如何使用 GitHub Actions 设置 Kotlin 项目的构建、测试和部署的完整周期。



GitHub Actions 基础:工作流结构

在编写代码之前,让我们先了解基本概念。GitHub Actions 中的工作流是一个自动化的过程,由特定事件(例如,推送到主分支)触发。工作流使用 YAML 文件描述,该文件存储在仓库的 .github/workflows/ 目录中。

典型的工作流结构包括:

  • name — 工作流的名称(显示在 GitHub 界面中)。
  • on — 触发事件(例如 pushpull_request)。
  • jobs — 一组任务,可以顺序或并行运行。
  • steps — 任务中的具体步骤(设置 JDK、缓存依赖项、运行测试)。

对于 Kotlin 项目,关键步骤是配置正确的 JDK 版本(通常是 11、17 或 21)以及使用 Gradle Wrapper(./gradlew),这可以确保在任何机器上构建的可重复性。



第一步:Kotlin 项目的基础构建与测试

我们从最简单的事情开始:一个工作流,在每次推送到主分支或创建 Pull Request 时运行测试。这是任何 CI/CD 的基础——确保新代码不会破坏现有功能。

创建文件 .github/workflows/ci.yml,内容如下:

name: CI for Kotlin

on: push: branches: [ main ] 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'

- name: Grant execute permission for gradlew run: chmod +x gradlew

- 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: Build with Gradle run: ./gradlew build

- name: Run tests run: ./gradlew test

让我们分解关键点:

  • actions/checkout@v4 — 将仓库克隆到运行器中。
  • actions/setup-java@v4 — 安装 JDK 17(Temurin)。如果你的项目需要,例如 JDK 11 或 21,你可以选择不同的版本。
  • actions/cache@v4 — 缓存 Gradle 依赖项。这对速度至关重要:如果没有缓存,每次构建都需要从头下载所有库(可能需要 2-5 分钟)。缓存可以将此时间缩短到几秒钟。
  • ./gradlew build — 完整的项目构建(编译 + 测试)。如果你只需要测试,请使用 ./gradlew test

博客

书籍推荐