用法
- 姓名: 使用 CodeSignTool 签署工件
用途: sslcom/actions-codedesigner@develop
使用:
- CodeSignTool 命令:
– get_credential_ids
:输出与用户关联的 eSigner 凭证 ID 列表。
– credential_info
:输出与凭证 ID 相关的密钥和证书信息。
– sign
:签名和时间戳代码对象。
– batch_sign
:使用一个 OTP 对多个代码对象进行签名和时间戳。
– hash
:预先计算哈希值,以供以后与 batch_hash_sign 命令一起使用。
– batch_sign_hash
: 用 hash 命令预先计算的签名 hash(es)。
命令: 签署
- SSL.com 帐户用户名。
username: ${{secrets.ES_USERNAME}}
- SSL.com 帐户密码。
password: ${{secrets.ES_PASSWORD}}
- 用于签署证书的凭据 ID。
credential_id: ${{secrets.CREDENTIAL_ID}}
- OAuth TOTP 密钥 (https://www.ssl.com/how-to/automate-esigner-ev-code-signing)
totp_secret: ${{secrets.ES_TOTP_SECRET}}
- 要签名的代码对象的路径。
file_path: ${GITHUB_WORKSPACE}/test/src/build/HelloWorld.jar
- 将写入签名代码对象的目录。
output_path: ${GITHUB_WORKSPACE}/artifacts
输入
- 用户名: SSL.com 帐户用户名。 (必需的)
- 密码: SSL.com 帐号密码 (必填)
- 凭据_id:用于签署证书的凭据 ID。 如果 credential_id 被省略并且用户只有一个 eSigner 代码签名证书,CodeSignTool 将默认使用该证书。 如果用户拥有多个代码签名证书,则此参数为必填项。 (必需的)
- 秘密:OAuth TOTP 秘密。 您可以访问详细信息 https://www.ssl.com/how-to/automate-esigner-ev-code-signing (必填)
- 文件路径:要签名的代码对象的路径。 (必需的)
- 输出路径:将写入签名代码对象的目录。 如果省略 output_path,则在 -file_path 中指定的文件将被签名文件覆盖。
Java 代码 (Maven) JAR 签名示例工作流
准备工作流的组件
- 在你的编辑器上创建一个 Github 文件夹。 在文件夹中包含工作流,并在文件夹下创建一个 yml 文件。
- 命名您的项目和所涉及的工作流程类型
名称:Maven 构建和签名
- 推送时触发此工作流
上:推
- 创建环境变量
- 环境变量用于使示例更具可读性。 在上面示例工作流的屏幕截图中,可以选择省略 PROJECT_NAME、PROJECT_VERSION 和 MAVEN_VERSION。 即使有这些遗漏,签名仍然可以继续进行。
环境:PROJECT_NAME:HelloWorld PROJECT_VERSION:0.0.1 MAVEN_VERSION:3.8.5 JAVA_VERSION:17
- 在编辑器上定义工作
工作:构建和签名罐子:
- 在 Ubuntu Runner 上运行作业
运行:ubuntu-latest
- 创建一个名称。 当工作流运行时,这是记录的名称。
名称:Java 上的 CodeSigner 和 Maven
概述检查源代码、设置 Java 和 Maven 环境以及创建工件目录的步骤。
1)签出源代码,以便工作流可以访问它。
步骤: - 使用:actions/checkout@v2
2) 设置工作流使用的 Java 和 Maven 环境。
- 名称:安装 Maven 和 Java 使用:s4u/setup-maven-action@v1.3.1 with: java-version: '${{env.JAVA_VERSION}}' maven-version: '${{env.MAVEN_VERSION}}'
3)创建工件目录来存储签名和未签名的工件文件
- 名称:创建目录外壳:bash 运行:| mkdir ${GITHUB_WORKSPACE}/artifacts mkdir ${GITHUB_WORKSPACE}/packages
4) 构建一个 Maven 项目或解决方案及其所有依赖项。
创建jar文件后,复制到'packages'文件夹进行签名
- 在这个书面签名示例工作流中,创建了多个项目类型。 这就是为什么通过创建子文件夹来保存不同项目类型的文件的原因。 为 Java 项目创建了一个名为“java”的子文件夹。 在上面的演示屏幕截图中,没有必要创建一个名为“java”的子文件夹,因此它没有包含在脚本中。
- 名称:构建 Java 项目外壳:bash 运行:| mvn clean install -f java/pom.xml cp java/target/${{env.PROJECT_NAME}}-${{env.PROJECT_VERSION}}.jar ${GITHUB_WORKSPACE}/packages/${{env.PROJECT_NAME}}。罐
概述签名和上传作业的步骤
- 签名作业是使用 CodeSignTool 对创建的 JAR(工件)文件进行签名的步骤。
- 名称:Sign Artifact 使用:sslcom/actions-codesigner@develop with:
签名和时间戳代码对象。
命令:符号
SSL.com 帐户用户名。
用户名:${{secrets.ES_USERNAME}}
SSL.com 帐户密码。
密码:${{secrets.ES_PASSWORD}}
用于签署证书的凭据 ID。
credential_id:${{secrets.CREDENTIAL_ID}}
OAuth TOTP 秘密 (https://www.ssl.com/how-to/automate-esigner-ev-code-signing)
totp_secret:${{secrets.ES_TOTP_SECRET}}
要签名的代码对象的路径。 (DLL、JAR、EXE、MSI 文件 vb…)
文件路径:${GITHUB_WORKSPACE}/packages/${{env.PROJECT_NAME}}.jar
将写入签名代码对象的目录。
输出路径:${GITHUB_WORKSPACE}/artifacts
- 上传作业是上传工作流中的工件的步骤,允许您在工作流之间共享数据并在工作流完成后存储数据
- 名称:上传签名文件使用:actions/upload-artifact@v2 with:名称:${{env.PROJECT_NAME}}.jar 路径:./artifacts/${{env.PROJECT_NAME}}.jar
从 Github Marketplace 获取构建工件上传器
查看您的编码脚本
buld、sign 和 upload 作业的所有编码脚本应如下图所示。 确保更正脚本中的任何错误,例如拼写错误或错误的换行符,以便签名过程顺利进行。
定义您的环境变量
转到您的 Github 帐户上的项目位置。 点击 行动 标签。 点击 新的存储库机密 按钮放置签名代码所需的每个环境变量的值。
在命令行上创建一个新的存储库
前往 Github 上项目所在的位置,复制 push 命令的每个组件。
推送项目
在代码编辑器中包含每个推送命令行。 完成后,代码将自动推送到 Github。
等待使用 eSigner CodeSignTool 对工件进行签名
上传签名文件
点击签名文件上传。
Github 操作管道示例
查看我们创建的示例 Github Actions 管道 github.com/SSLcom/codedesigner-github-sample
其他 CI/CD 远程签名集成指南
- 与 CircleCI 的云代码签名集成
- 云代码签名与 GitLab CI 的集成
- 云代码签名与 Jenkins CI 的集成
- 云代码签名与 Travis CI 的集成
- 云代码签名与 Azure DevOps 的集成
- 使用 CI/CD 服务实现云代码签名自动化
需要定制解决方案?
凭借我们的专业知识和五星级支持人员,我们已准备好并愿意与您合作制定定制解决方案或企业级大批量签约折扣。 填写下面的表格,我们会与您联系。