Kotlin 项目的 CI/CD:从零开始掌握 GitHub Actions

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

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

开始课程

Kotlin 与 GitHub Actions 的 CI/CD 入门

在现代开发中,构建、测试和部署流程的自动化已成为专业方法中不可或缺的一部分。对于 Kotlin 项目,无论是 Android 应用、基于 Ktor 的后端服务还是多平台库,配置 CI/CD(持续集成 / 持续部署) 都能显著缩短产品交付时间并降低错误风险。

GitHub Actions 是一个强大且灵活的工具,内置于 GitHub 生态系统中。它允许您创建自定义流水线,这些流水线可在推送、创建拉取请求或按计划自动触发。在本文中,我们将详细介绍 Kotlin 的 CI/CD 完整配置流程:从基本代码检查到自动部署。

GitHub Actions 基础:结构与语法

在深入 Kotlin 特定内容之前,理解 GitHub Actions 的基本概念很重要。流水线在 YAML 文件中描述,这些文件存储在您仓库的 .github/workflows/ 目录中。

工作流程的关键元素

  • Event(事件): 触发流水线的触发器(push、pull_request、release 等)。
  • Job(任务): 在同一 runner(虚拟机)上执行的一组步骤。
  • Step(步骤): 具体操作——执行命令、运行脚本或使用现成的 action。
  • Runner: 执行环境(Ubuntu、Windows、macOS)。

文件 kotlin-ci.yml 的基本结构:

name: Kotlin CI

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

Kotlin 的 CI 配置:构建、测试和代码检查

第一个也是最重要的阶段是持续集成。它确保每一段新代码都能通过编译并且不会破坏现有测试。

Gradle 依赖缓存

为了加速构建,务必使用缓存。没有缓存,每次运行都会重新下载所有库。

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

运行测试和代码风格检查

添加运行单元测试和 linter(detekt 或 ktlint)的步骤。这有助于保持代码质量。

- name: Run tests
  run: ./gradlew test

- name: Run linter
  run: ./gradlew detekt

Kotlin 项目的完整 CI 工作流程示例

jobs:
  test:
    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: Cache Gradle
        uses: actions/cache@v3
        with:
          path: ~/.gradle/caches
          key: ${{ runner.os }}-gradle-${{ hashFiles('*.gradle.kts') }}
      - name: Build and test
        run: ./gradlew check

持续部署:Kotlin 应用的自动部署

成功集成之后,就进入了部署阶段。对于 Kotlin 项目,这可能意味着将库发布到 Maven Central、在服务器上部署后端或为 Android 构建 APK。

部署基于 Ktor 的后端服务

假设我们有一个基于 Ktor 框架的 Kotlin 应用。我们希望自动

博客

书籍推荐