如何使用 Gitlib 持续发布 Flutter 应用
最后更新:
阅读时间: 3
min
前言
前一篇文章介绍了使用 Github Actions 持续发布 Flutter 应用,本文分享下如何使用 Gitlib 的 CI/CD 功能同样实现发布 Flutter 应用,因为有很多公司是用自己搭建的 Gitlab 来管理代码的。
要使用 Gitlib 的 CI/CD 功能首先需要在项目根目录创建一个 yml 格式的配置文件 .gitlab-ci.yml
,这个配置文件会定义一个流水线 Pipeline。一个 Pipeline 由多个任务 Job 组成,任务就是具体要做的事情,如代码编译或测试; Pipeline 里的 stages 决定了任务何时以及如何运行。以下就是一个 Pipeline 有 3 个 stage,依次执行 build,test 和 deploy 任务。
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| stages: - build - test - deploy
job01: stage: build script: echo 'build job' job02: stage: build script: echo 'test job' job03: stage: deploy script: echo 'deploy job'
|
配置
要在 Pipeline 里构建打包 Flutter 应用的 apk,首先需要在流水线里配置 Android 以及 Flutter 环境,搜索一番后发现了一个 Github 上的 Flutter 镜像 docker-images-flutter 很适合,看这个镜像的 Dockerfile 可以发现它是从 cirrusci/android-sdk:29
这个 Android sdk 镜像开始,然后下载 Flutter SDK,这样就有了了 Android 和 Flutter 环境,接下来只需要运行测试和打包命令即可
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
| stages: - build - release
// build 阶段使用拥有 Android 以及 Flutter 环境的镜像,进行测试打包 build: stage: build image: cirrusci/flutter:stable only: - tags script: // 下载依赖包 - flutter packages get // 执行测试 - flutter test // 打包 apk - flutter build apk --release // 这里定义任务生成的文件 artifacts: expire_in: 1 hour paths: - build/app/outputs/apk/release/*.apk interruptible: true
|
发布
要发布 apk 文件到仓库的 release 还需要使用 gitlab-release 这个镜像进行发布操作
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
| stages: - build - release
// build 阶段使用拥有 Android 以及 Flutter 环境的镜像,进行测试打包 build: stage: build image: cirrusci/flutter:stable only: - tags script: - flutter packages get - flutter test - flutter build apk --release artifacts: expire_in: 1 hour paths: - build/app/outputs/apk/release/*.apk interruptible: true
// 发布到仓库的 release release: image: inetprocess/gitlab-release stage: release only: - tags dependencies: - build script: // 使用打包好的 apk 文件路径 - gitlab-release --message '自动发布' build/app/outputs/apk/release/*.apk
|
发布还需要一个 Personal Access Token
给 release 任务提供 api 权限,有了 api 权限就可以请求 Gitlab 的 release 接口上传 apk 了
使用刚才创建的 token 在项目仓库里配置流水线的环境变量 GITLAB_ACCESS_TOKEN
最后创建一个版本标签推送到 Gitlab 仓库,就可以看到运行中的流水线了
1 2 3
| git tag v1.0.0
git push --tag
|
流水线运行完毕,一个版本发布成功。
上传
蒲公英 平台可以对应用进行内测分发,使用蒲公英提供的上传应用包的接口,将 CI/CD
构建出来的应用 apk
直接上传,免去手动去网页上上传的麻烦
添加一个 upload
任务,依赖于 build
任务,向蒲公英的上传接口发送一个请求,$APK_PATH
是应用打包出来的路径,定义为一个变量方便使用;
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| stages: - build - release - upload ...... upload: stage: upload only: - tags dependencies: - build script: - curl -S "http://www.pgyer.com/apiv2/app/upload" -F "file=@$APK_PATH" -F "_api_key=$PGY_API_KEY" - echo uploaded
|
$PGY_API_KEY
是蒲公英平台的 API Key
,需要添加到 CI/CD
的环境变量中
在仓库的设置那里添加新的环境变量
总结
- 添加流水线配置
.gitlab-ci.yml
- 创建
Personal Access Token
- 设置环境变量
GITLAB_ACCESS_TOKEN
- 推送版本标签
参考
Gitlab Release
Getting started with GitLab CI/CD
使用 Travis CI 实现持续集成 (Android)