Skip to content

发布与签名

发版要用的凭据是最不想到处散落的那种:GPG 私钥、p12 证书密码、Apple 专用密码、Sonatype Portal 口令。它们通常被塞进 ~/.m2/settings.xml、CI 的环境变量、某个 .env,然后被忘掉。

Sigil 把这两类凭据收进金库,需要时再临时落地。

Maven Central 发布

凭据类型 maven_central,一条记录装齐一套发布身份:命名空间、Portal 账号口令、GPG 密钥 ID 与口令、GPG 私钥。

能力用途
maven_import_from_settings从本机 ~/.m2/settings.xml 把现成配置收编进金库
maven_settings_materialize临时渲染一份 settings.xml 供构建使用
maven_deployment_status查某次上传的部署状态
maven_deployment_publish正式发布到 Central
maven_deployment_drop丢弃一次尚未发布的部署
maven_artifact_exists核对某个坐标是否已出现在 Central 主仓

为什么发布比删仓库还慎重

maven_deployment_publish阻塞式确认,而且理由比删仓库更硬:删掉的仓库还能重建,发到 Central 的构件不可删、不可改、永久留存。版本号写错、打包漏文件,都只能靠发下一个版本来盖,历史上那个错版本会一直挂在那里。

maven_deployment_drop 也要确认 —— 它可恢复,但代价是重跑一整轮构建。

两条要注意的

  • maven_artifact_exists 不需要凭据。它打的是 Central 的公开主仓,谁都能查。所以即使你没存发布凭据,这个工具也照样露出,可以用来核对某个依赖在不在。
  • 同步有延迟。Portal 显示已发布,主仓要十几分钟到几小时才能解析到,这期间 maven_artifact_exists 查不到属正常。

代码签名

凭据类型 code_signing,把 Windows 与 macOS 两套签名配置聚在一条记录里(签名身份、Team ID、Apple ID 与专用密码、p12 证书及其口令等)。

能力用途
codesign_import_from_dir从本地签名资产目录导入(读取密钥 / 证书 / 密码文件)
codesign_push_windows_secrets把 Windows 签名所需的值灌进 GitHub 仓库 Secrets
codesign_push_apple_secrets把 macOS 签名 / 公证所需的值灌进 GitHub 仓库 Secrets
codesign_materialize_local把证书与口令明文落到本地目录,供本机构建使用

三个高危动作都要确认

  • 导入会让 Sigil 读取你指定目录下的密钥文件 —— 这是新增的本地文件读取面,弹窗里会显示完整路径,看清了再放行。
  • 灌 CI Secrets 是把凭据送到 GitHub 上,属于外发。
  • 本地落地会把证书和密码以明文写到磁盘。出了金库就不再受保护,用完请自行删除

导入类工具不受凭据门控

codesign_import_from_dirmaven_import_from_settings 的作用恰恰是创建这两类凭据。如果它们也按「没有该凭据就隐藏」来处理,就成了鸡生蛋 —— 永远导不进来。所以这两个工具始终露出。

配合 GitHub Actions 用

典型的发版链路:

codesign_push_windows_secrets   →  把签名材料灌进仓库 Secrets
codesign_push_apple_secrets
github_ref_create               →  打 tag 触发 CI
github_runs_list                →  盯构建状态
github_run_jobs                 →  失败了看是哪个 step
github_release_asset_upload     →  补传产物(如果 CI 没传全)

GitHub 侧的能力清单见 Git 平台能力

相关章节

若依科技工作室 · 承接后台管理 / 桌面软件 / 全栈 / 小程序定制开发 · 技术服务咨询