Създайте файл на Дженкинс и дефинирайте конвейера във вашия редактор на код
тръбопровод { агент всякакви опции { 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 приставката. Продължете да щракнете върху Save бутон.
Задайте променливите на средата във вашия редактор на код
среда { ПОТРЕБИТЕЛСКО ИМЕ = идентификационни данни ('es-username') // потребителско име на SSL.com акаунт. ПАРОЛА = идентификационни данни ('es-парола') // Парола за SSL.com акаунт. CREDENTIAL_ID = идентификационни данни ('es-credential-id') // Идентификационен номер на удостоверение за подписване на сертификат. TOTP_SECRET = идентификационни данни ('es-totp-secret') // OAuth TOTP Secret (https://www.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 минути.
Щракнете върху Save бутон.
Върнете се в акаунта си в Jenkins, щракнете върху вашия проект и потвърдете дали тръбопроводът е започнал
Кликнете върху вашия проект на Jenkins и изберете Сканирайте многоразклонения тръбопровод сега на таблото за управление.
Кликнете Конзолен изход
Превъртете надолу и проверете дали подписването на кода е успешно
Целият скрипт
Определете тръбопровода
тръбопровод { агент всякакви опции { buildDiscarder(logRotator(numToKeepStr: "5")) disableConcurrentBuilds()}
Инсталирайте инструменти за изграждане
инструменти { dotnetsdk "DOTNET_CORE_3.1.24" //https://plugins.jenkins.io/dotnet-sdk }
Създайте променлива на средата
среда { ПОТРЕБИТЕЛСКО ИМЕ = идентификационни данни ('es-username') // потребителско име на SSL.com акаунт. ПАРОЛА = идентификационни данни ('es-парола') // Парола за SSL.com акаунт. CREDENTIAL_ID = идентификационни данни ('es-credential-id') // Идентификационен номер на удостоверение за подписване на сертификат. TOTP_SECRET = идентификационни данни ('es-totp-secret') // OAuth TOTP Secret (https://www.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 услуги
Нуждаете се от персонализирани решения?
С нашите експертни познания и петзвезден екип за поддръжка, ние сме готови и желаем да работим с вас по персонализирани решения или отстъпки за подписване на голям обем на ниво предприятие. Попълнете формата по-долу и ние ще се свържем с вас.