Jenkins ファイルを作成し、コード エディターでパイプラインを定義する
パイプライン { エージェント 任意のオプション { buildDiscarder(logRotator(numToKeepStr: "5")) disableConcurrentBuilds() }
Jenkins を構成して、コード エディターで .NET ツールを設定する
クリック ジェンキンスを管理する Jenkins ダッシュボードのタブ。
ページを下にスクロールし、[グローバル ツール構成] をクリックします。
下にスクロールしてをクリックします .NET SDK のインストール.
.NET SDK の値をコピーして、コード エディターに貼り付けます。
ツール { dotnetsdk "DOTNET_CORE_3.1.24" }
plugins.jenkins.io に移動し、.NET SDK プラグインをインストールします。
ジェンキンスを管理する ダッシュボードで確認してください プラグインの管理 .NET SDK プラグインがインストールされているかどうかを確認します。
プラグインがインストールされていることを確認したら、.NET SDK のインストールに戻り、.NET SDK プラグインの正しいバージョンとリリースの詳細が設定されていることを確認します。 をクリックして進みます Save
コード エディターで環境変数を設定する
environment { USERNAME = credentials('es-username') // SSL.com アカウントのユーザー名。 PASSWORD = credentials('es-password') // SSL.com アカウントのパスワード。 CREDENTIAL_ID = credentials('es-crendential-id') // 証明書に署名するための資格 ID。 TOTP_SECRET = credentials('es-totp-secret') // OAuth TOTP シークレット (https://www.ssl.com/how-to/automate-esigner-ev-code-signing) ENVIRONMENT_NAME = 'PROD' // SSL .com 環境名。 デモ口座の場合は「TEST」、そうでない場合は「PROD」になります。}
Jenkins ダッシュボードの各変数の値は、 セキュリティ> 管理 資格情報。
アーティファクト ディレクトリの作成、docker イメージのプル、.NET のビルド、およびアーティファクトのコード署名の段階を設定します。
1) ストアの署名済みおよび未署名のアーティファクト ファイル用のアーティファクト ディレクトリを作成します。
stage('Create artifacts directory') { steps { sh 'mkdir ${WORKSPACE}/artifacts' sh 'mkdir ${WORKSPACE}/packages' } }2) Github レジストリから Codesigner Docker イメージをプルします。
stage('Docker Pull Image') { steps { sh 'docker pull ghcr.io/sslcom/codesigner:latest' } }3) dotnet プロジェクトまたはソリューションとそのすべての依存関係を構築します。 dll または exe ファイルが作成されたら、署名のために「packages」フォルダーにコピーします。
stage('Build Dotnet') { steps { sh 'dotnet build dotnet/HelloWorld.csproj -c Release' sh 'cp dotnet/bin/Release/netcoreapp3.1/HelloWorld-0.0.1.dll ${WORKSPACE}/packages/ HelloWorld.dll' } }4) これは、作成された DLL (アーティファクト) ファイルが CodeSignTool で署名されるステップです。
stage('Sign and Save Dotnet Core DLL Artifact') { steps { sh 'docker run -i --rm --dns 8.8.8.8 --network host --volume ${WORKSPACE}/packages:/codesign/examples -- volume ${WORKSPACE}/artifacts:/codesign/output -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 sign -input_file_path=/codesign/examples/HelloWorld.dll -output_dir_path=/codesign/output' } 投稿 { 常に { archiveArtifacts artifacts: "artifacts/HelloWorld.dll", onlyIfSuccessful: true } } } } }
Github リポジトリを作成する
各プッシュ コマンド コンポーネントを Github にコピーします。コード エディターの新しいターミナルでコマンドを記述して、コードをプッシュします。
コードをプッシュしたら、Github アカウントに移動し、プロジェクトの URL リンクをコピーします。
Jenkins アカウントに進み、 ジョブを作成する リンクをクリックします。
選択する マルチブランチ パイプライン, プロジェクトの名前を設定し、 OK
分岐元選択 Gitの Github プロジェクトの URL リンクを貼り付けます。
下にスクロールします マルチブランチ パイプライン トリガーのスキャン。 チェックボックスをオンにします 特に実行しない場合は定期的に実行。 選択できます 2 minutes.
クリック Save
Jenkins アカウントに戻り、プロジェクトをクリックして、パイプラインが開始されているかどうかを確認します
Jenkins プロジェクトをクリックして選択します。 マルチブランチ パイプラインを今すぐスキャン ダッシュボード。
クリック コンソール出力
下にスクロールして、コード署名が成功したかどうかを確認します
スクリプト全体
パイプラインを定義する
パイプライン { エージェント 任意のオプション { buildDiscarder(logRotator(numToKeepStr: "5")) disableConcurrentBuilds() }
ビルド ツールをインストールする
ツール { dotnetsdk "DOTNET_CORE_3.1.24" //https://plugins.jenkins.io/dotnet-sdk }
環境変数を作成する
environment { USERNAME = credentials('es-username') // SSL.com アカウントのユーザー名。 PASSWORD = credentials('es-password') // SSL.com アカウントのパスワード。 CREDENTIAL_ID = credentials('es-crendential-id') // 証明書に署名するための資格 ID。 TOTP_SECRET = credentials('es-totp-secret') // OAuth TOTP シークレット (https://www.ssl.com/how-to/automate-esigner-ev-code-signing) ENVIRONMENT_NAME = 'PROD' // SSL .com 環境名。 デモ口座の場合は「TEST」、それ以外の場合は「PROD」になります。}
ビルド ステージとサイン ステージのスクリプト
stage { // 1) 署名済みおよび未署名のアーティファクト ファイルを保存するためのアーティファクト ディレクトリを作成する stage('Create artifacts directory') { steps { sh 'mkdir ${WORKSPACE}/artifacts' sh 'mkdir ${WORKSPACE}/packages' } } / / 2) Github レジストリから Codesigner Docker イメージをプルする stage('Docker Pull Image') { steps { sh 'docker pull ghcr.io/sslcom/codesigner:latest' } } // 3) dotnet プロジェクトまたはソリューションをビルドし、その依存関係。 // dll または exe ファイルが作成されたら、署名用に 'packages' フォルダーにコピーします stage('Build Dotnet') { steps { sh 'dotnet build dotnet/HelloWorld.csproj -c Release' sh 'cp dotnet/bin/ Release/netcoreapp3.1/HelloWorld-0.0.1.dll ${WORKSPACE}/packages/HelloWorld.dll' } } // 4) これは、作成された DLL (アーティファクト) ファイルが CodeSignTool で署名されるステップです。 stage('Sign and Save Dotnet Core DLL Artifact') { steps { sh 'docker run -i --rm --dns 8.8.8.8 --network host --volume ${WORKSPACE}/packages:/codesign/examples -- volume ${WORKSPACE}/artifacts:/codesign/output -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 sign -input_file_path=/codesign/examples/HelloWorld.dll -output_dir_path=/codesign/output' } 投稿 { 常に { archiveArtifacts artifacts: "artifacts/HelloWorld.dll", onlyIfSuccessful: true } } } } }
サンプル Jenkins パイプライン
作成したサンプルの Jenkins パイプラインを確認してください github.com/SSLcom/codesigner-jenkins-sampleその他のリモート署名統合ガイド
- クラウド コード署名と CircleCI の統合
- Cloud Code Signing と GitHub Actions の統合
- クラウド コード署名と GitLab CI の統合
- Cloud Code Signing と Travis CI の統合
- クラウド コード署名と Azure DevOps の統合
- CI/CD サービスによるクラウド コード署名の自動化
カスタムソリューションが必要ですか?
専門知識とXNUMXつ星のサポートスタッフにより、カスタムソリューションやエンタープライズレベルの大量署名割引についてお客様と協力する準備ができています。 以下のフォームにご記入ください。ご連絡いたします。