環境変数
- USERNAME: SSL.com アカウントのユーザー名。 (必須)
- PASSWORD:SSL.comアカウントのパスワード(必須)
- CREDENTIAL_ID: 証明書に署名するための資格情報 ID。 credential_id が省略され、ユーザーが eSigner コード署名証明書を XNUMX つしか持っていない場合、CodeSignTool はデフォルトでそれを使用します。 ユーザーが複数のコード署名証明書を持っている場合、このパラメーターは必須です。 (必須)
- TOTP_SECRET: OAuth TOTP シークレット。 の詳細情報にアクセスできます。 https://www.ssl.com/how-to/automate-esigner-ev-code-signing (必須)
- ENVIRONMENT_NAME : 「TEST」または「PROD」環境。 (必須)
入力
- 入力ファイルパス: 署名するコード オブジェクトのパス。 (必須)
- 出力ディレクトリのパス: 署名されたコード オブジェクトが書き込まれるディレクトリ。 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 ワークスペース: /home/circleci/project
- Docker executor を定義します: (https://circleci.com/docs/2.0/executor-types/)
# Dockerhub からイメージを指定するか、CircleCI の Developer Hub から便利なイメージの XNUMX つを使用できます。
ドッカー: - 画像: mcr.microsoft.com/dotnet/sdk:3.1-bullseye
- ジョブの作業ディレクトリを配置します
作業ディレクトリ: /home/circleci/project
- ジョブにステップを追加する
参照: https://circleci.com/docs/2.0/configuration-reference/#steps
手順:
- ワークフローがアクセスできるように、ソース コードをチェックアウトします。
- チェックアウト
- アーティファクト ディレクトリを作成して、署名済みおよび未署名のアーティファクト ファイルを保存します
- run: name: Create Artifacts Directory コマンド: | mkdir -p ${WORKSPACE}/artifacts mkdir -p ${WORKSPACE}/packages
- dotnet プロジェクトまたはソリューションとそのすべての依存関係をビルドします。
- run: name: Build Dotnet Project コマンド: dotnet build dotnet/${PROJECT_NAME}.csproj -c Release
- アーティファクトをアーティファクト ディレクトリにコピーする
- この書面による署名の例のワークフローでは、複数のプロジェクト タイプが作成されました。 これが、サブフォルダーを作成することによって、異なるプロジェクト タイプのファイルが保持された理由です。 Dotnet プロジェクト用に「dotnet」という名前のサブフォルダーが作成されました。 上記のデモのスクリーンショットでは、「dotnet」という名前のサブフォルダーを作成する必要がなかったため、スクリプトには含まれていませんでした。
- run: name: Copy Artifacts コマンド: | cp dotnet/bin/Release/netcoreapp${DOTNET_VERSION}/${PROJECT_NAME}-${PROJECT_VERSION}.dll ${WORKSPACE}/packages/HelloWorld.dll
- アーティファクトを署名用のアーティファクト ディレクトリに永続化する
- persist_to_workspace: root: . パス: - パッケージ/*
署名段階を定義する
- 署名ジョブを定義する
サイン:
- 環境変数を作成する
- 上のスクリーンショットでは、sign コマンドは、環境変数ではなく、sign スクリプトで直接定義されています。 B他の方法は、CircleCI で正しく署名できます。
- 環境変数は、サンプルを読みやすくするために使用されます。 上記のサンプル ワークフローのスクリーンショットでは、一部の変数がオプションで含まれていませんでした。 これらの省略があっても、署名は続行できます。
環境: ENVIRONMENT_NAME: PROD COMMAND: sign WORKSPACE: /home/circleci/project
- ジョブの作業ディレクトリを Circle-CI に配置する
作業ディレクトリ: /home/circleci/project
- 署名するアーティファクト名
- 'artifact-name' 値は複数のプロジェクトのオプションです 'artifact-name' パラメーターが追加され、すべてのプロジェクト タイプで同じ署名部分を使用できるようになりました。 スクリーンショットの例は単一のプロジェクトに基づいているため、含める必要はありませんでした。
パラメータ: アーティファクト名: タイプ: 文字列 デフォルト: ''
- docker executor を定義します。
追加の参照については、以下を参照してください。 https://circleci.com/docs/2.0/executor-types/
Dockerhub からイメージを指定するか、CircleCI の Developer Hub から便利なイメージの XNUMX つを使用できます。
以下の Docker イメージ タグを、アプリケーションの openjdk バージョンに必ず更新してください。
利用可能な CircleCI Docker Convenience Images のリストは、こちらから入手できます。 https://circleci.com/developer/images/image/cimg/openjdk
ドッカー: - イメージ: cimg/openjdk:17.0.3
- ジョブにステップを追加する
追加の参照については、以下を参照してください。 https://circleci.com/docs/2.0/configuration-reference/#steps
手順:
- アーティファクト ディレクトリを作成して、署名済みおよび未署名のアーティファクト ファイルを保存します
- run: name: Create Artifacts Directory コマンド: | mkdir -p ${WORKSPACE}/artifacts mkdir -p ${WORKSPACE}/packages
- アーティファクト ファイルにアクセスするためにワークスペースにアタッチする
- attach_workspace: at: /home/circleci/project
- Circle-CI で CodeSigner の Docker を有効にする
- setup_remote_docker: name: リモート Docker のセットアップ バージョン: 19.03.13 docker_layer_caching: true
- Github レジストリから Codesigner Docker イメージをプルする
- run: name: Docker Pull Image コマンド: | docker pull ghcr.io/sslcom/codesigner: 最新の docker pull alpine:3.4
- 成果物が CodeSignTool で署名されるステップを記述します。
- run: name: Sign Artifact File コマンド: | docker create -v /codesign/packages --name 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: name: Upload Signed Files path: /home/circleci/project/artifacts/<< parameters.artifact-name >> 宛先: << parameters.artifact-name >>
コマンドラインで新しいリポジトリを作成する
GitHub アカウントのプロジェクトの場所からプッシュ コマンド コンポーネントをコピーします。
エディターにすべてのプッシュ コマンド コンポーネントを含めます
GitHub に統合されたリポジトリを使用して、CircleCI でプロジェクトをセットアップする
すべての環境変数を定義する
プロジェクトの実行中に、[プロジェクト設定] ボタンをクリックしてから、[環境変数] をクリックして変数を定義します。
各変数の値を配置します
環境変数を追加 ボタンをクリックして、プロジェクトに必要なすべての変数の名前と値を追加します。
プロジェクトがビルドされるのを待ちます
[ワークスペースに永続化] をクリックします
ワークスペース アーカイブが正常にアップロードされるまで少し待ちます。
サインボタンをクリック
リモート Docker がセットアップされるのを待ちます
ファイルのサイズによっては、XNUMX 分以上かかる場合があります。
アーティファクトが署名されるのを待ちます
アーティファクト タブ
クリックすると アーティファクト、コード署名に成功したファイルを確認できます。 コード署名が成功したことも、CircleCI から通知されます。
サンプル CircleCI パイプライン
私たちが作成したサンプル CircleCI パイプラインを確認してください github.com/SSLcom/codesigner-circleci-sampleその他の CI/CD リモート署名統合ガイド
- Cloud Code Signing と GitHub Actions の統合
- クラウド コード署名と GitLab CI の統合
- Jenkins CI との Cloud Code Signing 統合
- Cloud Code Signing と Travis CI の統合
- クラウド コード署名と Azure DevOps の統合
- クラウド コード署名と BitBucket の統合
- CI/CD サービスによるクラウド コード署名の自動化
カスタムソリューションが必要ですか?
専門知識とXNUMXつ星のサポートスタッフにより、カスタムソリューションやエンタープライズレベルの大量署名割引についてお客様と協力する準備ができています。 以下のフォームにご記入ください。ご連絡いたします。