蒲公英文档中心

Jenkins 插件上传应用

使用蒲公英官方 Jenkins 插件,在 Pipeline 或自由风格任务中把 apk、ipa、hap 安装包自动上传到蒲公英,并获取下载页地址和二维码。

蒲公英官方 Jenkins 插件 Upload to PGYER 可以在构建完成后,把 Android(.apk)、iOS(.ipa)和 HarmonyOS(.hap)安装包自动上传到蒲公英,等待发布完成后在构建页面显示下载页地址和二维码。插件同时支持 Pipeline 和自由风格(Freestyle)任务:安装包在执行构建的节点上直接上传,API Key 保存在 Jenkins 凭据中,不会出现在构建日志里。

如需对比 API、CLI、CI/CD 插件等其他上传方式,请查看 自动上传 App 与 CI/CD 集成指南。

插件需要 Jenkins 2.479.3 或更高版本。如果您正在使用 2.x 版本的插件,升级前请先阅读 从 2.x 升级。

使用流程

安装插件:在 Jenkins 插件管理中搜索并安装 Upload to PGYER。

添加 API Key 凭据:把蒲公英 API Key 保存为 Jenkins 的“Secret text”凭据。

在任务中添加上传步骤:Pipeline 任务调用 pgyerUpload,自由风格任务添加“上传到蒲公英(PGYER)”构建步骤。

查看上传结果:在构建日志和构建页面中获取下载页地址和二维码。

安装插件

  1. 在 Jenkins 中依次进入 系统管理(Manage Jenkins)→ 插件管理(Plugins)→ 可选插件(Available plugins)。
  2. 搜索 pgyer,勾选 Upload to PGYER,点击 安装。
  3. 安装完成后,可以在 已安装插件(Installed plugins) 中搜索 pgyer 确认插件已启用:

已安装的 Upload to PGYER 插件

如果 Jenkins 无法访问插件中心,可以手动安装:

  1. 在 插件发布页 下载最新版本的 upload-pgyer.hpi。
  2. 进入 系统管理 → 插件管理 → 高级设置(Advanced settings),在 部署插件 中选择下载的文件,点击 部署。

手动部署插件

添加 API Key 凭据

  1. 登录蒲公英,在 API 信息 页面复制您的 API Key。
  2. 在 Jenkins 中依次进入 系统管理 → 凭据管理(Credentials)→ System → 全局凭据(Global credentials),点击 Add Credentials。
  3. 类型 选择 Secret text,Secret 粘贴 API Key,ID 填写 pgyer-api-key(本文的示例都使用这个 ID),然后点击 Create。

添加 Secret text 凭据

如果大多数任务使用同一个 API Key,可以在 系统管理 → 系统配置(System)→ 蒲公英(PGYER) 中把它设为默认 API Key,任务中就不需要再选择凭据:

设置默认 API Key

请不要把 API Key 直接写在 Jenkinsfile 或任务配置中。使用凭据保存后,Key 会被加密存储,并在构建日志中自动隐藏。

在 Pipeline 任务中使用

在构建步骤之后调用 pgyerUpload,例如:

Jenkinsfile
pipeline {
    agent any
    stages {
        stage('构建') {
            steps {
                sh './gradlew assembleRelease'
            }
        }
        stage('分发到蒲公英') {
            steps {
                script {
                    def app = pgyerUpload file: 'app/build/outputs/apk/release/*.apk',
                                          credentialsId: 'pgyer-api-key',
                                          updateDescription: "构建 #${env.BUILD_NUMBER}"
                    echo "下载页:${app.appPgyerURL}"
                }
            }
        }
    }
}

如果任务直接在 Jenkins 中编写脚本,把上面的内容粘贴到任务配置的 流水线 → 脚本 中:

在任务配置中编写流水线脚本

也可以用 Jenkins 自带的 流水线语法 生成调用代码:在任务页面点击 流水线语法,示例步骤 选择 pgyerUpload: 上传应用到蒲公英,填写参数后点击 生成流水线脚本。

用流水线语法生成 pgyerUpload

参数

参数说明
file要上传的文件,相对于工作空间的 Ant 风格路径,例如 app/build/outputs/apk/release/*.apk。不填时使用工作空间中任意 .apk、.ipa 或 .hap 文件;匹配到多个文件时上传最近修改的那个。
credentialsId保存 API Key 的凭据 ID。不填时依次使用环境变量 PGYER_API_KEY、系统配置中的默认 API Key。
buildTypeandroid、ios 或 harmony。插件会按扩展名自动识别,只有文件扩展名不是 .apk、.ipa、.hap 时才需要填写。
installType安装方式:1 公开安装,2 密码安装,3 邀请安装。不填时保持应用当前的设置。
password安装密码,配合 installType: '2' 使用。
description应用描述。
updateDescription本次版本的更新说明。
channelShortcut要发布到的渠道短链接。
installStartDate、installEndDate安装有效期,格式为 yyyy-MM-dd,两个日期需要同时填写。
overseatrue 使用海外加速上传,false 使用国内上传。不填时按 IP 自动判断。
processingTimeout上传完成后等待蒲公英发布的最长时间(秒),默认 600。

返回值

pgyerUpload 返回一个 Map,包含蒲公英返回的全部版本信息,常用的字段如下:

字段说明
appPgyerURL下载页地址,例如 https://www.pgyer.com/xxxx
buildQRCodeURL下载页二维码图片地址
buildName、buildVersion、buildBuildVersion应用名称、版本号、Build 号
buildKey、buildShortcutUrl版本 Key、短链接

可以把这些信息传给后续步骤,例如发送到企业微信、钉钉或飞书群。完整字段请参考 上传 API 文档。

通过环境变量提供 API Key

如果您使用 withCredentials 管理凭据,可以把 API Key 放到环境变量 PGYER_API_KEY 中,pgyerUpload 会自动读取:

withCredentials([string(credentialsId: 'pgyer-api-key', variable: 'PGYER_API_KEY')]) {
    pgyerUpload file: 'build/*.ipa'
}

在自由风格任务中使用

  1. 打开任务配置,在 Build Steps 中点击 增加构建步骤,选择 上传到蒲公英(PGYER):

    增加“上传到蒲公英”构建步骤

  2. API Key 选择上一步添加的凭据,目录 保持 ${WORKSPACE},文件 填写安装包的路径规则,例如 app/build/outputs/apk/release/*.apk:

    配置上传步骤

  3. 如需设置安装方式、更新说明等,点击 高级 展开更多选项,然后保存任务。

“上传到蒲公英(PGYER)”也可以作为 构建后操作 添加。作为构建后操作时,如果构建失败,插件不会上传。

高级 中的选项与 Pipeline 参数对应:

选项对应参数
安装方式installType
安装密码password
应用描述description
更新说明updateDescription,支持 ${BUILD_NUMBER} 等环境变量
渠道短链接channelShortcut
安装有效期开始日期、结束日期installStartDate、installEndDate

在后续步骤中使用上传结果

上传完成后,插件会把返回的信息设置为环境变量,后续的构建步骤可以直接使用,例如 $appPgyerURL(下载页地址)、$buildQRCodeURL(二维码图片地址)、$buildShortcutUrl、$buildVersion 等,变量名与 返回值 中的字段相同。

例如在上传步骤之后添加一个“Execute shell”步骤:

echo "下载页:$appPgyerURL"

在后续步骤中使用 appPgyerURL

如需临时跳过上传,可以给任务添加参数 isUploadPgyer 并设为 false。

查看上传结果

构建日志中会显示上传进度、发布结果和下载页地址:

构建日志

构建页面会显示下载链接和二维码,测试人员可以直接用手机扫码安装:

构建页面中的下载链接和二维码

扫码后打开的下载页:

手机上的下载页

从 2.x 升级

用 2.x 版本配置的任务升级后无需修改即可继续使用,原有的环境变量名、isUploadPgyer 和 uploadPgyerTimeout 变量保持不变。主要变化如下:

  • 在 agent 节点上构建的任务可以正常上传,插件会在 agent 上读取并上传安装包。
  • 插件最多等待 10 分钟让蒲公英完成发布,不会再出现“上传成功但同步数据失败”的问题。
  • 新增鸿蒙 .hap 支持,应用类型按扩展名自动识别。
  • 下载时的文件名保持原安装包的文件名。
  • Pipeline 任务请改用 pgyerUpload 步骤。

2.x 任务中直接填写的 API Key 仍然可以使用,但已标记为弃用:

2.x 任务中已弃用的 API Key

建议按 添加 API Key 凭据 创建凭据,在 API Key 中选择该凭据,然后点击 修改密码 清空已弃用的 API Key 并保存。

常见问题

上传失败并提示错误码

错误处理方法
1001、1002API Key 为空或不正确,请在 API 信息 页面核对。
1003子账号不能使用 API,请使用主账号的 API Key。
1019上传前需要完成 实名认证。
1020该账号已被禁止上传,请联系蒲公英客服。
1022存储空间已满或文件过大,请清理空间或升级套餐。
等待 600 秒后蒲公英仍在处理上传已完成,但发布时间超过了 processingTimeout。版本之后可能仍会出现在应用列表中;如果经常出现,可以调大等待时间。
所有蒲公英 API 服务器都无法连接执行构建的节点无法访问 www.pgyer.com。请检查节点网络,以及 系统管理 → 系统配置 → HTTP 代理配置。

通过代理上传

插件会使用 Jenkins 中配置的 HTTP 代理,并在 www.pgyer.com 无法访问时自动尝试备用域名。

如果代理需要账号密码,Java 默认不会在 HTTPS 连接中发送代理认证信息。请在执行构建的节点的 JVM 启动参数中加上 -Djdk.http.auth.tunneling.disabledSchemes=""。

反馈问题

插件已开源,欢迎在 GitHub 提交问题和建议。

本页目录