Kotlin 项目在 GitHub Actions 上的 CI/CD:完整指南

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

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

开始课程

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



现代 Kotlin 开发——无论是基于 Spring Boot 的后端、Android 应用,还是跨平台项目——都需要快速可靠的交付周期。手动构建和测试过程不仅耗时,而且容易出错。这时,CI/CD(持续集成/持续部署)就派上了用场。



GitHub Actions 是一个内置的自动化系统,允许你直接在仓库中运行工作流。对 Kotlin 项目来说,这是一个理想的选择:它可以轻松集成 Gradle,支持依赖缓存,并允许你在任何平台上部署应用程序。



在本文中,我们将详细讲解如何使用 GitHub Actions 为 Kotlin 项目搭建一个完整的 CI/CD 流水线:从基本构建到自动部署。



1. GitHub Actions 基础:工作流结构



GitHub Actions 中的每个工作流都是一个位于 .github/workflows/ 目录下的 YAML 文件。我们以 Kotlin 项目为例,看看其基本组成部分。



1.1. 触发器 (on)

工作流由特定事件触发:推送到分支、创建拉取请求或按计划(cron)执行。



1.2. 作业与步骤

作业是在一个虚拟环境中执行的一组步骤。步骤可以运行命令、脚本或市场中的现成操作。



1.3. 最小工作流示例

让我们为基于 Gradle 的 Kotlin 项目创建一个文件 .github/workflows/ci.yml:



name: CI for Kotlin

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'

- name: Setup Gradle uses: gradle/actions/setup-gradle@v3

- name: Build with Gradle run: ./gradlew build

- name: Run tests run: ./gradlew test


这个流水线将在每次推送到 main/develop 分支或向其发起 PR 时运行构建和测试。



2. CI 优化:缓存与并行作业



没有优化,每次运行都会从头下载 Gradle 依赖。对于 Kotlin 项目,这可能需要 2–5 分钟。解决方案是缓存。



2.1. 缓存 Gradle 缓存

GitHub Actions 允许你缓存 ~/.gradle/caches 目录:



- 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-


首次运行后,后续运行将使用缓存——速度提升 2–3 倍。



2.2. 为不同任务设置并行作业

你可以将测试、代码检查(Linting)和构建拆分为并行运行的独立作业:



jobs:  lint:    runs-on: ubuntu-latest    steps:      - uses: actions/checkout@v4      - name: Run detekt        run: ./gradlew detekt

test: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - name: Run tests run: ./gradlew test

build: needs: [lint, test] runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - name: Build JAR run: ./gradlew bootJar


这里,build 只有在代码检查和测试都成功通过后才会启动。



3. Kotlin 项目的高级场景



让我们来看看 Kotlin 的 CI/CD 中经常遇到的一些实际任务。



3.1. 将制品发布到 GitHub Packages

如果你正在开发

博客

书籍推荐