SSL.com

与 CircleCI 的云代码签名集成

本教程展示了 eSigner 如何与 CircleCI 集成以进行自动代码签名。 eSigner 是 SSL.com 的代码签名云环境。 签名密钥和证书由 SSL.com 安全地托管在云中,并且可以从任何连接互联网的设备访问以进行签名,从而使 eSigner 成为企业代码签名的最佳平台之一。 eSigner 工具包包括 CodeSignTool,它是一个 命令行实用程序 EV代码签名 证书,非常适合在包括 CircleCI 在内的各种持续集成/持续交付 (CI/CD) 平台中创建自动签名过程。 

SSL.com的 EV 代码签名 证书通过最高级别的验证帮助保护您的代码免受未经授权的篡改和破坏,并且只需 $ 249每年。 您也可以 大规模使用您的 EV 代码签名证书 使用 eSigner 在云中。

马上订购

环境变量

输入

准备工作流的组件 (.NET 代码 DLL 签名)

  1. 创建一个 .circleci 文件夹

在您的代码签名工作区中,创建一个 .circleci 文件夹. 在它下面,创建一个 config.yml 文件.

  1. 设置 CI 版本
版本:2.1
 
  1.  通过工作流调用作业。 工作流编排一组要运行的作业。 此管道的作业配置如下

请参见: https://circleci.com/docs/2.0/configuration-reference/#workflows

工作流程:
 
  1. 写下工作流程的名称。
  点网:
 
  1. 在工作流中,您定义要运行的作业。
 工作:-构建-签名:需要:-构建
 

定义构建阶段

  1. 定义稍后在工作流中调用的作业。

 (请参阅:https://circleci.com/docs/2.0/configuration-reference/#jobs)

工作: 建造:

 

  1. 创建环境变量
  环境:PROJECT_NAME:HelloWorld PROJECT_VERSION:0.0.1 DOTNET_VERSION:3.1 WORKSPACE:/home/circleci/project

 

  1.  定义一个 Docker 执行器:(https://circleci.com/docs/2.0/executor-types/)

    # 您可以指定来自 Dockerhub 的图像或使用我们来自 CircleCI 开发者中心的便利图像之一。

 码头工人:-图像:mcr.microsoft.com/dotnet/sdk:3.1-bullseye

 

  1. 放置作业的工作目录
  工作目录:/home/circleci/project

 

  1. 向作业添加步骤

    请参阅:https://circleci.com/docs/2.0/configuration-reference/#steps

  脚步:

 

  1.  查看源代码,以便工作流可以访问它。
    - 查看

 

  1. 创建工件目录以存储已签名和未签名的工件文件
    - 运行:名称:创建工件目录命令:| mkdir -p ${WORKSPACE}/artifacts mkdir -p ${WORKSPACE}/packages

 

  1.  构建 dotnet 项目或解决方案及其所有依赖项。
      - 运行:名称:构建 Dotnet 项目命令:dotnet build dotnet/${PROJECT_NAME}.csproj -c Release

 

  1. 将工件复制到工件目录
  - 运行:名称:复制工件命令:| cp dotnet/bin/Release/netcoreapp${DOTNET_VERSION}/${PROJECT_NAME}-${PROJECT_VERSION}.dll ${WORKSPACE}/packages/HelloWorld.dll

 

  1. 将工件保存到工件目录以进行签名
  -persist_to_workspace:根:。 路径: - 包/*
 

定义签名阶段

  1. 定义签名作业
 标志:

 

  1. 创建环境变量
    环境:ENVIRONMENT_NAME:PROD COMMAND:sign WORKSPACE:/home/circleci/project

 

  1.     将作业的工作目录放在 Circle-CI 上
 工作目录:/home/circleci/project

 

  1. 用于签名的工件名称
    参数:工件名称:类型:字符串默认值:''

 

  1. 定义一个 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

 

  1. 向作业添加步骤

      有关其他参考,请参阅: https://circleci.com/docs/2.0/configuration-reference/#steps

    脚步:

 

  1. 创建工件目录以存储已签名和未签名的工件文件
  - 运行:名称:创建工件目录命令:| mkdir -p ${WORKSPACE}/artifacts mkdir -p ${WORKSPACE}/packages

 

  1. 附加到工作区以访问工件文件
   - attach_workspace:在:/home/circleci/project

 

  1. 在 Circle-CI 上为 CodeSigner 启用 Docker
 - setup_remote_docker:名称:设置远程 Docker 版本:19.03.13 docker_layer_caching:true

 

  1. 从 Github Registry 中拉取 Codesigner Docker 镜像
        - 运行:名称:Docker Pull Image 命令:| docker pull ghcr.io/sslcom/codesigner:最新的docker pull alpine:3.4

 

  1. 编写将使用 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 >>

 

  1. 编写从工作流中上传工件的步骤,允许您在工作流之间共享数据并在工作流完成后存储数据
    - store_artifacts:名称:上传签名文件路径:/home/circleci/project/artifacts/<<parameters.artifact-name>>目的地:<<parameters.artifact-name>>
 

在命令行上创建一个新的存储库

从您的 GitHub 帐户上的项目位置复制推送命令组件

在您的编辑器中包含所有推送命令组件

SSL.com的 EV 代码签名 证书通过最高级别的验证帮助保护您的代码免受未经授权的篡改和破坏,并且只需 $ 249每年。 您也可以 大规模使用您的 EV 代码签名证书 使用 eSigner 在云中。

马上订购

使用集成到 GitHub 的存储库在 CircleCI 上设置项目

定义所有环境变量

在项目运行时,单击项目设置按钮,然后单击环境变量以定义变量

放置每个变量的值

点击 添加环境变量 按钮添加项目所需的所有变量的名称和值。

等待项目建好

单击持久化到工作区

短暂等待工作空间存档成功上传。

点击签名按钮

等待远程 Docker 设置完成

可能需要一分钟以上,具体取决于文件的大小

等待工件被签名

点击 文物 标签

如果你点击 文物,您将能够看到您已成功进行代码签名的文件。 CircleCI 还将通知您代码签名成功。

您可以参考 SSL.com Github 存储库,其中包含 docker 镜像的源代码并描述了如何使用它:https://github.com/SSLcom/ci-images

示例 CircleCI 管道

查看我们创建的示例 CircleCI 管道 github.com/SSLcom/codesigner-circleci-sample

其他 CI/CD 远程签名集成指南

需要定制解决方案? 

凭借我们的专业知识和五星级支持人员,我们已准备好并愿意与您合作制定定制解决方案或企业级大批量签约折扣。 填写下面的表格,我们会与您联系。

退出手机版