环境变量
- USERNAME: SSL.com 帐户用户名。 (必需的)
- 密码: SSL.com 帐号密码 (必填)
- 凭据_ID:用于签署证书的凭据 ID。 如果 credential_id 被省略并且用户只有一个 eSigner 代码签名证书,CodeSignTool 将默认使用该证书。 如果用户拥有多个代码签名证书,则此参数为必填项。 (必需的)
- TOTP_秘密:OAuth TOTP 秘密。 您可以访问详细信息 https://www.ssl.com/how-to/automate-esigner-ev-code-signing (必填)
- ENVIRONMENT_NAME :“测试”或“生产”环境。 (必需的)
输入
- 输入文件路径:要签名的代码对象的路径。 (必需的)
- 输出目录路径:将写入签名代码对象的目录。 如果省略 output_path,则在 -file_path 中指定的文件将被签名文件覆盖。
准备工作流的组件 (.NET 代码 DLL 签名)
- 创建一个 .circleci 文件夹
在您的代码签名工作区中,创建一个 .circleci 文件夹. 在它下面,创建一个 config.yml 文件.
- 设置 CI 版本
版本:2.1
- 通过工作流调用作业。 工作流编排一组要运行的作业。 此管道的作业配置如下
请参见: https://circleci.com/docs/2.0/configuration-reference/#workflows
工作流程:
- 写下工作流程的名称。
点网:
- 在工作流中,您定义要运行的作业。
工作:-构建-签名:需要:-构建
定义构建阶段
- 定义稍后在工作流中调用的作业。
(请参阅:https://circleci.com/docs/2.0/configuration-reference/#jobs)
工作: 建造:
- 创建环境变量
- 环境变量用于使示例更具可读性。 在上面示例签名工作流的屏幕截图中,可以选择省略 PROJECT_NAME、PROJECT_VERSION 和 DOTNET_VERSION。 即使有这些遗漏,签名仍然可以继续进行。
环境:PROJECT_NAME:HelloWorld PROJECT_VERSION:0.0.1 DOTNET_VERSION:3.1 WORKSPACE:/home/circleci/project
- 定义一个 Docker 执行器:(https://circleci.com/docs/2.0/executor-types/)
# 您可以指定来自 Dockerhub 的图像或使用我们来自 CircleCI 开发者中心的便利图像之一。
码头工人:-图像:mcr.microsoft.com/dotnet/sdk:3.1-bullseye
- 放置作业的工作目录
工作目录:/home/circleci/project
- 向作业添加步骤
请参阅:https://circleci.com/docs/2.0/configuration-reference/#steps
脚步:
- 查看源代码,以便工作流可以访问它。
- 查看
- 创建工件目录以存储已签名和未签名的工件文件
- 运行:名称:创建工件目录命令:| mkdir -p ${WORKSPACE}/artifacts mkdir -p ${WORKSPACE}/packages
- 构建 dotnet 项目或解决方案及其所有依赖项。
- 运行:名称:构建 Dotnet 项目命令:dotnet build dotnet/${PROJECT_NAME}.csproj -c Release
- 将工件复制到工件目录
- 在这个书面签名示例工作流中,创建了多个项目类型。 这就是为什么通过创建子文件夹来保存不同项目类型的文件的原因。 为 Dotnet 项目创建了一个名为“dotnet”的子文件夹。 在上面的演示屏幕截图中,无需创建名为“dotnet”的子文件夹,因此脚本中未包含该文件夹。
- 运行:名称:复制工件命令:| cp dotnet/bin/Release/netcoreapp${DOTNET_VERSION}/${PROJECT_NAME}-${PROJECT_VERSION}.dll ${WORKSPACE}/packages/HelloWorld.dll
- 将工件保存到工件目录以进行签名
-persist_to_workspace:根:。 路径: - 包/*
定义签名阶段
- 定义签名作业
标志:
- 创建环境变量
- 在上面的屏幕截图中,sign 命令是直接在 sign 脚本中定义的,而不是在环境变量下。 乙其他方法可以使用 CircleCI 正确签名。
- 环境变量用于使示例更具可读性。 在上面示例工作流的屏幕截图中,一些变量可以选择不包括在内。 即使有这些遗漏,签名仍然可以继续进行。
环境:ENVIRONMENT_NAME:PROD COMMAND:sign WORKSPACE:/home/circleci/project
- 将作业的工作目录放在 Circle-CI 上
工作目录:/home/circleci/project
- 用于签名的工件名称
- 'artifact-name' 值是多个项目的一个选项 添加了 'artifact-name' 参数,以便可以将相同的签名部分用于所有项目类型。 由于屏幕截图中的示例基于单个项目,因此没有必要包含它。
参数:工件名称:类型:字符串默认值:''
- 定义一个 docker 执行器:
有关其他参考,请参阅: https://circleci.com/docs/2.0/executor-types/
您可以指定来自 Dockerhub 的图像,也可以使用我们来自 CircleCI 开发者中心的便利图像之一。
请务必将下面的 Docker 映像标记更新为应用程序的 openjdk 版本。
此处提供了可用的 CircleCI Docker 便利镜像列表: https://circleci.com/developer/images/image/cimg/openjdk
码头工人:- 图像:cimg/openjdk:17.0.3
- 向作业添加步骤
有关其他参考,请参阅: https://circleci.com/docs/2.0/configuration-reference/#steps
脚步:
- 创建工件目录以存储已签名和未签名的工件文件
- 运行:名称:创建工件目录命令:| mkdir -p ${WORKSPACE}/artifacts mkdir -p ${WORKSPACE}/packages
- 附加到工作区以访问工件文件
- attach_workspace:在:/home/circleci/project
- 在 Circle-CI 上为 CodeSigner 启用 Docker
- setup_remote_docker:名称:设置远程 Docker 版本:19.03.13 docker_layer_caching:true
- 从 Github Registry 中拉取 Codesigner Docker 镜像
- 运行:名称:Docker Pull Image 命令:| docker pull ghcr.io/sslcom/codesigner:最新的docker pull alpine:3.4
- 编写将使用 CodeSignTool 对工件进行签名的步骤。
- 运行:名称:签署工件文件命令:| docker create -v /codesign-in alpine:3.4 /bin/true docker create -v /codesign/artifacts --name codesign-out alpine:3.4 /bin/true docker cp ${WORKSPACE}/packages /<< parameters.artifact-name >> codesign-in:/codesign/packages docker run -i --rm --dns 8.8.8.8 --network host --volumes-from codesign-in --volumes-from codesign- out -e USERNAME=${USERNAME} -e PASSWORD=${PASSWORD} -e CREDENTIAL_ID=${CREDENTIAL_ID} -e TOTP_SECRET=${TOTP_SECRET} -e ENVIRONMENT_NAME=${ENVIRONMENT_NAME} ghcr.io/sslcom/codesigner:latest ${COMMAND} -input_file_path=/codesign/packages/<< parameters.artifact-name >> -output_dir_path=/codesign/artifacts docker cp codesign-out:/codesign/artifacts/<< parameters.artifact-name >> ${ WORKSPACE}/artifacts/<< parameters.artifact-name >>
- 编写从工作流中上传工件的步骤,允许您在工作流之间共享数据并在工作流完成后存储数据
- store_artifacts:名称:上传签名文件路径:/home/circleci/project/artifacts/<<parameters.artifact-name>>目的地:<<parameters.artifact-name>>
在命令行上创建一个新的存储库
从您的 GitHub 帐户上的项目位置复制推送命令组件
在您的编辑器中包含所有推送命令组件
使用集成到 GitHub 的存储库在 CircleCI 上设置项目
定义所有环境变量
在项目运行时,单击项目设置按钮,然后单击环境变量以定义变量
放置每个变量的值
点击 添加环境变量 按钮添加项目所需的所有变量的名称和值。
等待项目建好
单击持久化到工作区
短暂等待工作空间存档成功上传。
点击签名按钮
等待远程 Docker 设置完成
可能需要一分钟以上,具体取决于文件的大小
等待工件被签名
点击 文物 标签
如果你点击 文物,您将能够看到您已成功进行代码签名的文件。 CircleCI 还将通知您代码签名成功。
示例 CircleCI 管道
查看我们创建的示例 CircleCI 管道 github.com/SSLcom/codesigner-circleci-sample其他 CI/CD 远程签名集成指南
- 云代码签名与 GitHub Actions 的集成
- 云代码签名与 GitLab CI 的集成
- 云代码签名与 Jenkins CI 的集成
- 云代码签名与 Travis CI 的集成
- 云代码签名与 Azure DevOps 的集成
- 与 BitBucket 的云代码签名集成
- 使用 CI/CD 服务实现云代码签名自动化
需要定制解决方案?
凭借我们的专业知识和五星级支持人员,我们已准备好并愿意与您合作制定定制解决方案或企业级大批量签约折扣。 填写下面的表格,我们会与您联系。