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)”构建步骤。
查看上传结果:在构建日志和构建页面中获取下载页地址和二维码。
安装插件
- 在 Jenkins 中依次进入 系统管理(Manage Jenkins)→ 插件管理(Plugins)→ 可选插件(Available plugins)。
- 搜索
pgyer,勾选 Upload to PGYER,点击 安装。 - 安装完成后,可以在 已安装插件(Installed plugins) 中搜索
pgyer确认插件已启用:

如果 Jenkins 无法访问插件中心,可以手动安装:
- 在 插件发布页 下载最新版本的
upload-pgyer.hpi。 - 进入 系统管理 → 插件管理 → 高级设置(Advanced settings),在 部署插件 中选择下载的文件,点击 部署。

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

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

请不要把 API Key 直接写在 Jenkinsfile 或任务配置中。使用凭据保存后,Key 会被加密存储,并在构建日志中自动隐藏。
在 Pipeline 任务中使用
在构建步骤之后调用 pgyerUpload,例如:
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: 上传应用到蒲公英,填写参数后点击 生成流水线脚本。

参数
| 参数 | 说明 |
|---|---|
file | 要上传的文件,相对于工作空间的 Ant 风格路径,例如 app/build/outputs/apk/release/*.apk。不填时使用工作空间中任意 .apk、.ipa 或 .hap 文件;匹配到多个文件时上传最近修改的那个。 |
credentialsId | 保存 API Key 的凭据 ID。不填时依次使用环境变量 PGYER_API_KEY、系统配置中的默认 API Key。 |
buildType | android、ios 或 harmony。插件会按扩展名自动识别,只有文件扩展名不是 .apk、.ipa、.hap 时才需要填写。 |
installType | 安装方式:1 公开安装,2 密码安装,3 邀请安装。不填时保持应用当前的设置。 |
password | 安装密码,配合 installType: '2' 使用。 |
description | 应用描述。 |
updateDescription | 本次版本的更新说明。 |
channelShortcut | 要发布到的渠道短链接。 |
installStartDate、installEndDate | 安装有效期,格式为 yyyy-MM-dd,两个日期需要同时填写。 |
oversea | true 使用海外加速上传,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'
}在自由风格任务中使用
-
打开任务配置,在 Build Steps 中点击 增加构建步骤,选择 上传到蒲公英(PGYER):

-
API Key 选择上一步添加的凭据,目录 保持
${WORKSPACE},文件 填写安装包的路径规则,例如app/build/outputs/apk/release/*.apk:
-
如需设置安装方式、更新说明等,点击 高级 展开更多选项,然后保存任务。
“上传到蒲公英(PGYER)”也可以作为 构建后操作 添加。作为构建后操作时,如果构建失败,插件不会上传。
高级 中的选项与 Pipeline 参数对应:
| 选项 | 对应参数 |
|---|---|
| 安装方式 | installType |
| 安装密码 | password |
| 应用描述 | description |
| 更新说明 | updateDescription,支持 ${BUILD_NUMBER} 等环境变量 |
| 渠道短链接 | channelShortcut |
| 安装有效期开始日期、结束日期 | installStartDate、installEndDate |
在后续步骤中使用上传结果
上传完成后,插件会把返回的信息设置为环境变量,后续的构建步骤可以直接使用,例如 $appPgyerURL(下载页地址)、$buildQRCodeURL(二维码图片地址)、$buildShortcutUrl、$buildVersion 等,变量名与 返回值 中的字段相同。
例如在上传步骤之后添加一个“Execute shell”步骤:
echo "下载页:$appPgyerURL"
如需临时跳过上传,可以给任务添加参数 isUploadPgyer 并设为 false。
查看上传结果
构建日志中会显示上传进度、发布结果和下载页地址:

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

扫码后打开的下载页:

从 2.x 升级
用 2.x 版本配置的任务升级后无需修改即可继续使用,原有的环境变量名、isUploadPgyer 和 uploadPgyerTimeout 变量保持不变。主要变化如下:
- 在 agent 节点上构建的任务可以正常上传,插件会在 agent 上读取并上传安装包。
- 插件最多等待 10 分钟让蒲公英完成发布,不会再出现“上传成功但同步数据失败”的问题。
- 新增鸿蒙
.hap支持,应用类型按扩展名自动识别。 - 下载时的文件名保持原安装包的文件名。
- Pipeline 任务请改用
pgyerUpload步骤。
2.x 任务中直接填写的 API Key 仍然可以使用,但已标记为弃用:

建议按 添加 API Key 凭据 创建凭据,在 API Key 中选择该凭据,然后点击 修改密码 清空已弃用的 API Key 并保存。
常见问题
上传失败并提示错误码
| 错误 | 处理方法 |
|---|---|
1001、1002 | API 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 提交问题和建议。