Това е ръководство за това как да направите автоматизирано подписване на код на Jenkins с помощта на eSigner CodeSignTool. CodeSignTool е помощна програма за команден ред, която е подходяща за подписване на голям обем и безпроблемно се интегрира с различни CI/CD платформи. Той е част от eSigner: нашата услуга за отдалечено подписване, която предлага ефективен, сигурен и удобен за потребителя подход за подписване на корпоративни кодове.
Създайте файл на Дженкинс и дефинирайте конвейера във вашия редактор на код

тръбопровод { агент всякакви опции { buildDiscarder(logRotator(numToKeepStr: "5")) disableConcurrentBuilds()}
Задайте инструмента .NET на вашия редактор на код, като конфигурирате Jenkins
Щракнете върху Управлявай Дженкинс на таблото за управление на Jenkins.

Превъртете надолу страницата и щракнете върху Глобална конфигурация на инструмента.

Превъртете надолу и щракнете Инсталации на .NET SDK.

Копирайте стойността за .NET SDK и я поставете във вашия редактор на код.


инструменти { dotnetsdk "DOTNET_CORE_3.1.24" }
Отидете на plugins.jenkins.io и инсталирайте приставката .NET SDK

Под Управлявай Дженкинс на таблото си за управление, проверете Управление на приставки за да потвърдите дали приставката за .NET SDK е инсталирана.


След като потвърдите, че приставката е инсталирана, върнете се към .NET SDK ИНСТАЛАЦИИ и се уверете, че са зададени правилната версия и подробности за изданието на .NET SDK приставката. Продължете да щракнете върху Спестявания бутон.

Задайте променливите на средата във вашия редактор на код

environment { USERNAME = credentials('es-username') // Потребителско име за SSL.com акаунт. PASSWORD = credentials('es-password') // Парола за SSL.com акаунт. CREDENTIAL_ID = credentials('es-crendential-id') // Идентификатор на идентификационни данни за подписване на сертификат. TOTP_SECRET = credentials('es-totp-secret') // OAuth TOTP Secret (https://ssl.com/how-to/automate-esigner-ev-code-signing) ENVIRONMENT_NAME = 'PROD' // Име на SSL.com среда. За демо акаунт може да бъде 'TEST', в противен случай ще бъде 'PROD' }
Ще намерите стойностите за всяка променлива на таблото за управление на Jenkins под Сигурност> Управление Акредитивни писма.



Задайте етапите за създаване на директория с артефакти, изтегляне на докер изображение, изграждане на .NET и код, подписващ артефакта

1) Създайте директория за артефакти за съхраняване на подписани и неподписани файлове с артефакти.
stage('Създаване на директория с артефакти') { стъпки { sh 'mkdir ${WORKSPACE}/artifacts' sh 'mkdir ${WORKSPACE}/packages' } }
2) Изтеглете изображението на Codesigner Docker от регистъра на Github.
stage('Docker Pull Image') { стъпки { 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 -- том ${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:последен знак -input_file_path=/codesign/examples/HelloWorld.dll -output_dir_path=/codesign/output' } post { always { archiveArtifacts артефакти: "artifacts/HelloWorld.dll", onlyIfSuccessful: true } } } } }
Създайте репо Github
Копирайте всеки от компонентите на командата push в Github.

Напишете командите на нов терминал на вашия редактор на код, за да натиснете кода.

След като натиснете кода, отидете във вашия Github акаунт и копирайте URL връзката на вашия проект.

Продължете към вашия акаунт в Jenkins и щракнете върху Създайте работа връзка.

Изберете Многоразклонен тръбопровод, задайте името на вашия проект и щракнете върху OK бутон.

Под Източници на клоновеизберете отивам и поставете URL връзката на вашия проект в Github.

Превъртете надолу до Сканиране на задействания на многоразклонен тръбопровод. Поставете отметка в квадратчето за Периодично, ако не е друго, стартирайте. Можете да изберете 2 минути.

Щракнете върху Спестявания бутон.

Върнете се в акаунта си в 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') // Идентификатор на идентификационни данни за подписване на сертификат. TOTP_SECRET = credentials('es-totp-secret') // OAuth TOTP Secret (https://ssl.com/how-to/automate-esigner-ev-code-signing) ENVIRONMENT_NAME = 'PROD' // Име на SSL.com среда. За демо акаунт може да бъде 'TEST', в противен случай ще бъде 'PROD' }
Скрипт за етапите на изграждане и подписване
етапи { // 1) Създаване на директория с артефакти за съхраняване на подписани и неподписани файлове с артефакти stage('Създаване на директория с артефакти') { стъпки { sh 'mkdir ${WORKSPACE}/artifacts' sh 'mkdir ${WORKSPACE}/packages' } } / / 2) Изтеглете Codesigner Docker Image от Github Registry 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 -- том ${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:последен знак -input_file_path=/codesign/examples/HelloWorld.dll -output_dir_path=/codesign/output' } post { always { archiveArtifacts артефакти: "artifacts/HelloWorld.dll", onlyIfSuccessful: true } } } } }
Примерен тръбопровод на Jenkins
Вижте примерния тръбопровод на Jenkins, върху който сме създали github.com/SSLcom/codesigner-jenkins-sample
Други ръководства за интегриране на отдалечено подписване
- Интегриране на подписване на облачен код с CircleCI
- Интегриране на подписване на облачен код с GitHub Actions
- Интегриране на подписване на облачен код с GitLab CI
- Интегриране на подписване на облачен код с Travis CI
- Интегриране на подписване на облачен код с Azure DevOps
- Автоматизация на подписването на облачен код с CI/CD услуги
Нуждаете се от персонализирани решения?
С нашите експертни познания и петзвезден екип за поддръжка, ние сме готови и желаем да работим с вас по персонализирани решения или отстъпки за подписване на голям обем на ниво предприятие. Попълнете формата по-долу и ние ще се свържем с вас.