在CI服务器上使用rpmsign命令的难点是rpmsign命令在签名的时候会弹出一个输入密码的框,下面方法可以跳过输入密码的过程,以root用户为例:
1.首先在用户目录下创建 .rpmmacros
2.执行命令 rpm --showrc 在结果中找到如下代码片段
__gpg_sign_cmd %{__gpg}
gpg --no-verbose --no-armor
%{?_gpg_digest_algo:--digest-algo %{_gpg_digest_algo}}
--no-secmem-warning
%{?_gpg_sign_cmd_extra_args:%{_gpg_sign_cmd_extra_args}}
-u "%{_gpg_name}" -sbo %{__signature_filename} %{__plaintext_filename}
修改代码段成如下内容
__gpg_sign_cmd %{__gpg}\
gpg --no-verbose --no-armor --batch --pinentry-mode loopback \
--passphrase xxxx(rpmsign要输入的密码) 或者 --passphrase-file xxx(密码文件所在路径) \
%{?_gpg_digest_algo:--digest-algo %{_gpg_digest_algo}} \
--no-secmem-warning \
%{?_gpg_sign_cmd_extra_args:%{_gpg_sign_cmd_extra_args}} \
-u "%{_gpg_name}" -sbo %{__signature_filename} %{__plaintext_filename}
#一定要加 \
复制到.rpmmacros 保存
现在就可以直接执行签名命令了