CI/CDiOS、Android、Web — 任意框架

Build better.Deploy faster.

push 之后,剩下的交给我们,直达应用商店。选择仓库后,即可自动完成构建、代码签名以及发布到 TestFlight 和 Google Play。无论 Flutter、Swift 还是 Kotlin,步骤都一样。

免费开始 免费,无需信用卡
git push 依赖8.2s iOS 签名14.9s Android AAB2m 41s iOS IPA6m 03s TestFlight 与 Play Console1m 50s

支持的框架

三步完成首次构建。

无需准备服务器或 Mac。选择仓库后,会自动识别框架并生成构建步骤。

  1. 1

    连接 GitHub

    安装 Codeness GitHub App,并选择要构建的仓库。

  2. 2

    确认配置

    自动识别 Flutter、React Native 或原生项目,并设置构建步骤和产物。需要时可在界面中调整。

  3. 3

    构建并发布

    点击按钮,或在 push、拉取请求、打标签时启动。已签名的 IPA 和 AAB 会直接发往商店。

发布前的繁琐工作交给我们。

自动 iOS 代码签名

只需添加 App Store Connect API 密钥,即可创建并获取证书和描述文件。

发布到 TestFlight 和 Google Play

构建完成后,直接上传到 TestFlight 测试组或 Google Play 各轨道。

macOS 与 Linux 运行环境

iOS 用 macOS,Android 与 Web 用 Linux。每个工作流都可选择运行环境和工具版本。

push 自动构建

推送分支、拉取请求或打标签时触发构建。可用模式筛选分支。

机密信息加密存储

环境变量、证书和密钥库加密存储,并在构建日志中自动隐藏其值。

团队协作

邀请成员并分配权限,团队共享签名文件。构建结果会通知到 Slack。

既可在界面配置,也可用文件配置。

可以在控制台表单中配置,也可以在仓库中放置 codeness.yaml ,按分支进行管理。

  • 在模板前后添加自定义脚本
  • 向后续步骤传递变量: $CODENESS_ENV
  • 也可用脚本构建 Unity 或 Rust
  • 构建号通过 $BUILD_NUMBER 自动递增
workflows:
  release:
    framework: flutter
    targets: [ios, android]
    instance: macos-15
    triggering:
      events: [push, tag]
      branch_patterns: [main]
    ios_signing:
      mode: automatic
      api_key: "ASC key"
      bundle_ids: [com.example.app]
    publishing:
      app_store_connect:
        submit_to_testflight: true
      google_play:
        track: internal  # alpha / beta / production

价格

构建在 Codeness 提供的 Apple 芯片 Mac 上运行,不按构建时长计费。

Free

¥0
永久免费
  • 3 个应用
  • 1 个并发构建
  • 2 名成员
  • 所有框架与商店发布
  • 日志和产物保存 30 天
免费开始

Pro

¥2,980
每个团队/月
  • 100 个应用
  • 5 个并发构建
  • 25 名成员
  • 优先支持
  • 包含 Free 全部功能
开始使用 Pro

也可以在工作流设置中改用你仓库的 GitHub Actions 运行,此时运行时长按 GitHub 的价格计费。

常见问题

构建在哪里运行?

在 Codeness 提供的 Apple 芯片 Mac 上。每次构建都会启动一次性的 macOS 虚拟机,结束后即清除,Codeness 不会保存你的源代码。也可以按工作流改用你仓库的 GitHub Actions。

没有 Mac 也能构建 iOS 应用吗?

可以。Codeness 会在装有 Xcode 的 Mac 上完成构建和代码签名。

证书和密钥库安全吗?

使用 AES-256-GCM 加密存储,仅在构建开始时向运行环境传递一次。日志中出现的值会被自动隐藏。

支持 GitLab 或 Bitbucket 吗?

目前仅支持 GitHub。

未列出的框架怎么办?

选择“自定义”即可运行任意 shell 脚本。Unity、Rust、Go 等,只要能用命令构建都可以。

下一次发布,只需一次 push。

免费开始