编辑
2026-11-09
小白笔记
0

目录

Seesaw APK 流水线完整构建过程(一步一图)
步骤 0:打开 Jenkins 首页
步骤 1:点击 New Item
步骤 2:输入任务名并选择 Pipeline
步骤 3:进入任务配置页
步骤 4:勾选“参数化构建”
步骤 5:打开参数类型菜单
步骤 6:添加文件参数 XAPK_FILE
步骤 7:补齐其余参数
步骤 8:粘贴 Pipeline 脚本
步骤 9:保存任务
步骤 10:打开 Script Console
步骤 11:生成并验证 JKS
步骤 12:打开 Credentials
步骤 13:新建 Secret file 凭据
步骤 14:填写 JKS 凭据信息
步骤 15:JKS 凭据创建完成
步骤 16:新建密码凭据
步骤 17:两个凭据准备就绪
步骤 18:把流水线脚本改为使用演示凭据
步骤 19:保存配置
步骤 20:打开 Build with Parameters
步骤 21:构建运行中
步骤 22:构建成功
步骤 23:查看构建产物
步骤 24:查看阶段耗时
步骤 25:查看验证日志
复现检查清单
与正式任务的关系

Seesaw APK 流水线完整构建过程(一步一图)

本文记录一次从零新建 Pipeline 到生成 JKS、配置凭据、上传 XAPK 构建、验证产物的完整过程。照着截图顺序操作即可复现。

  • Jenkins:http://10.71.1.86:7080/(2.580.2)
  • 本次演示任务:Seesaw-APK-Pipeline-Walkthrough
  • 演示构建:Build #1 ✅ SUCCESS,耗时约 15 秒
  • 演示凭据:seesaw-keystore-walkthrough / seesaw-keystore-pass-walkthrough
  • 正式任务:Seesaw-APK-Pipeline(不要在生产任务上做实验)

说明:本演示为了不覆盖已有生产凭据,使用了带 -walkthrough 后缀的凭据。你复现时可以把流水线里的凭据 ID 换成自己的。

第 11 步在 Jenkins Script Console 里生成的是一个临时演示 JKS(密码随机、不回显),用于展示 keytool 的生成和验证输出。实际构建使用的是 keys/seesaw-release.jks,命令完全相同。


步骤 0:打开 Jenkins 首页

00-dashboard.png 登录后进入 Dashboard。左侧是 New Item,右上角是当前用户。


步骤 1:点击 New Item

01-new-item.png

点击左侧 New Item,进入新建任务页面。


步骤 2:输入任务名并选择 Pipeline

02-name-pipeline.png

  • 名称:Seesaw-APK-Pipeline-Walkthrough
  • 类型:Pipeline
  • 点击 OK

步骤 3:进入任务配置页

03-config-page.png

配置页分为 General、Triggers、Pipeline、Advanced 几个区域。


步骤 4:勾选“参数化构建”

04-parameterized.png

勾选 This project is parameterized,下面会出现 Add Parameter 按钮。


步骤 5:打开参数类型菜单

05-add-parameter-menu.png

点击 Add Parameter,菜单里可以看到:

  • Boolean / Choice / Credentials Parameter
  • File Parameter
  • Password / String Parameter

步骤 6:添加文件参数 XAPK_FILE

06-file-parameter.png

选择 File Parameter,填写:

  • Name:XAPK_FILE
  • Description:上传 seesaw-class-*.xapk 文件

步骤 7:补齐其余参数

07-parameters-configured.png

继续添加 3 个 String Parameter:

NameDefault Value说明
XAPK_URL空可选,从 URL 下载 XAPK
EXPECTED_PACKAGEseesaw.shadowpuppet.co.classroom期望包名
EXPECTED_VERSION空可选,留空不校验版本

步骤 8:粘贴 Pipeline 脚本

08-pipeline-script.png

在 Pipeline → Definition 选择 Pipeline script,把 pipeline.groovy 的全部内容粘贴进去。

脚本包含 6 个阶段:Source、Extract、Merge、Sign、Verify、Artifact。


步骤 9:保存任务

09-job-created.png

点击 Save,任务创建完成。此时还没有构建记录。


步骤 10:打开 Script Console

进入 Manage Jenkins → Script Console。这里用来演示 JKS 的生成与验证(也可以在本机终端执行同样的 keytool 命令)。


步骤 11:生成并验证 JKS

11-keytool-generate.png

在 Script Console 执行 keytool 后,结果里可以看到:

  • Generating 4,096 bit RSA key pair ...
  • JKS saved: /var/jenkins_home/walkthrough-keys/seesaw-demo.jks
  • Keystore type: JKS
  • Alias name: seesaw
  • Entry type: PrivateKeyEntry
  • Signature algorithm name: SHA384withRSA
  • 证书有效期与 SHA256 指纹

关键命令(实际生成 keys/seesaw-release.jks 时使用):

bash
keytool -genkeypair -storetype JKS \ -keystore seesaw-release.jks \ -storepass "$PASS" -keypass "$PASS" \ -alias seesaw -keyalg RSA -keysize 4096 -validity 10000 \ -dname "CN=Seesaw Internal, OU=Mobile, O=DEXA, L=Shanghai, ST=Shanghai, C=CN"

验证命令:

bash
keytool -list -v -keystore seesaw-release.jks -storepass "$PASS"

密码保存在 keys/keystore-info.txt,不会写入本文档。


步骤 12:打开 Credentials

12-credentials-page.png

进入 Manage Jenkins → Credentials → System → Global credentials。


步骤 13:新建 Secret file 凭据

13-secret-file.png

点击 Add Credentials,Kind 选择 Secret file,点击 Next。


步骤 14:填写 JKS 凭据信息

14-credential-form.png

  • File:选择 seesaw-release.jks
  • ID:seesaw-keystore-walkthrough
  • Description:演示用 JKS(alias: seesaw)
  • 点击 Create

步骤 15:JKS 凭据创建完成

15-credential-created.png

凭据列表中出现 seesaw-keystore-walkthrough。


步骤 16:新建密码凭据

16-password-credential.png

再次 Add Credentials,Kind 选择 Secret text:

  • Secret:JKS 的 storepass
  • ID:seesaw-keystore-pass-walkthrough
  • Description:演示用 JKS 密码
  • 点击 Create

步骤 17:两个凭据准备就绪

17-credentials-final.png

现在有:

  • seesaw-keystore-walkthrough(JKS 文件)
  • seesaw-keystore-pass-walkthrough(密码)

步骤 18:把流水线脚本改为使用演示凭据

18-script-updated.png

打开任务 Configure,把脚本中的:

groovy
file(credentialsId: 'seesaw-keystore', ...) string(credentialsId: 'seesaw-keystore-pass', ...)

改为:

groovy
file(credentialsId: 'seesaw-keystore-walkthrough', ...) string(credentialsId: 'seesaw-keystore-pass-walkthrough', ...)

如果你只创建了一套凭据,直接使用原来的 ID 即可,不需要这一步。


步骤 19:保存配置

19-job-configured.png

点击 Save,回到任务页面。


步骤 20:打开 Build with Parameters

20-build-form.png

点击 Build with Parameters,可以看到:

  • XAPK_FILE:选择文件
  • XAPK_URL:留空
  • EXPECTED_PACKAGE:默认包名
  • EXPECTED_VERSION:留空

选择 seesaw-class-10-150-1.xapk,点击 Build。


步骤 21:构建运行中

21-build-running.png

构建开始,页面显示 In progress 和当前构建号。


步骤 22:构建成功

22-build-success.png

Build #1 完成,结果 SUCCESS。


步骤 23:查看构建产物

23-build-artifacts.png

Build Artifacts 中可以看到:

文件大小
Seesaw-10.150.1-signed.apk43.02 MiB
build-info.txt330 B
apk-info.txt208 B
sign.log1.17 KiB

步骤 24:查看阶段耗时

24-build-stages.png

6 个阶段全部变绿:

text
Source → Extract → Merge → Sign → Verify → Artifact

本次总耗时约 15 秒(工具已缓存)。


步骤 25:查看验证日志

25-verify-console.png

Console Output 中可以看到 Verify 阶段的检查结果:

text
+ grep -q signature verified build/sign.log + unzip -t build/signed/seesaw-merged-aligned-signed.apk + echo VERIFIED package=seesaw.shadowpuppet.co.classroom version=10.150.1 code=1988154 VERIFIED package=seesaw.shadowpuppet.co.classroom version=10.150.1 code=1988154 + FINAL=build/Seesaw-10.150.1-signed.apk

说明:

  • 签名验证通过(signature verified)
  • APK 完整性检查通过(unzip -t)
  • 包名 seesaw.shadowpuppet.co.classroom
  • 版本 10.150.1,versionCode 1988154

复现检查清单

检查项预期
任务类型Pipeline
参数XAPK_FILE、XAPK_URL、EXPECTED_PACKAGE、EXPECTED_VERSION
凭据JKS Secret file + 密码 Secret text
构建结果SUCCESS
阶段6 个阶段全部通过
产物Seesaw-<版本>-signed.apk
验签日志包含 signature verified
完整性unzip -t 无错误

与正式任务的关系

本次演示创建的是 Seesaw-APK-Pipeline-Walkthrough,正式任务 Seesaw-APK-Pipeline 不受影响。

复现时建议:

  1. 先按本文创建一个演示任务,确认流程能跑通
  2. 再用正式 JKS 创建/更新 seesaw-keystore
  3. 最后把演示任务删除,只保留正式任务

本文截图位于 screenshots/walkthrough/,完整原理与排错见 Seesaw-APK流水线复盘.md。

本文作者:墨洺的文档

本文链接:

版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!