Создайте файл Jenkins и определите конвейер в редакторе кода.
конвейер { агент любые параметры { buildDiscarder (logRotator (numToKeepStr: "5")) disableConcurrentBuilds () }
Установите инструмент .NET в редакторе кода, настроив Jenkins.
Нажмите Управлять Дженкинсом на панели инструментов Jenkins.
Прокрутите страницу вниз и щелкните Глобальная конфигурация инструмента.
Прокрутите вниз и нажмите Установка пакета SDK для .NET.
Скопируйте значение для .NET SDK и вставьте его в редактор кода.
инструменты { dotnetsdk "DOTNET_CORE_3.1.24" }
Перейдите на plugins.jenkins.io и установите плагин .NET SDK.
Под Управлять Дженкинсом в личном кабинете проверьте Управление плагинами чтобы убедиться, что подключаемый модуль .NET SDK установлен.
Убедившись, что подключаемый модуль установлен, вернитесь к УСТАНОВКАМ .NET SDK и убедитесь, что установлены правильные сведения о версии и выпуске подключаемого модуля .NET SDK. Нажмите кнопку Сохранить .
Установите переменные среды в редакторе кода.
environment { USERNAME = учетные данные ('es-username') // имя пользователя учетной записи SSL.com. ПАРОЛЬ = учетные данные ('es-password') // пароль учетной записи SSL.com. CREDENTIAL_ID = учетные данные ('es-credential-id') // Идентификатор учетных данных для подписания сертификата. TOTP_SECRET = учетные данные ('es-totp-secret') // Секрет OAuth TOTP (https://www.ssl.com/how-to/automate-esigner-ev-code-signing) ENVIRONMENT_NAME = 'PROD' // SSL .com Имя среды. Для демо-счета это может быть «ТЕСТ», иначе это будет «ПРОД».}
Вы найдете значения для каждой переменной на панели инструментов Jenkins в разделе Безопасность> Управление Полномочия.
Задайте этапы создания каталога артефактов, извлечения образа докера, сборки .NET и подписи кода артефакта.
1) Создайте каталог артефактов для хранения подписанных и неподписанных файлов артефактов.
stage('Создать каталог артефактов') { steps { sh 'mkdir ${WORKSPACE}/artifacts' sh 'mkdir ${WORKSPACE}/packages' } }2) Извлеките образ Codesigner Docker из реестра Github.
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('Подписать и сохранить артефакт DLL Dotnet Core') { steps { sh 'docker run -i --rm --dns 8.8.8.8 --network host --volume ${WORKSPACE}/packages:/codesign/examples -- том ${WORKSPACE}/artifacts:/codesign/output -e ИМЯ ПОЛЬЗОВАТЕЛЯ=${ИМЯ ПОЛЬЗОВАТЕЛЯ} -e ПАРОЛЬ=${ПАРОЛЬ} -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 = учетные данные ('es-username') // имя пользователя учетной записи SSL.com. ПАРОЛЬ = учетные данные ('es-password') // пароль учетной записи SSL.com. CREDENTIAL_ID = учетные данные ('es-credential-id') // Идентификатор учетных данных для подписания сертификата. TOTP_SECRET = учетные данные ('es-totp-secret') // Секрет OAuth TOTP (https://www.ssl.com/how-to/automate-esigner-ev-code-signing) ENVIRONMENT_NAME = 'PROD' // SSL .com Имя среды. Для демо-счета это может быть «ТЕСТ», иначе это будет «ПРОД».}
Скрипт для этапов сборки и подписи
stages { // 1) Создать каталог артефактов для хранения подписанных и неподписанных файлов артефактов stage('Создать каталог артефактов') { steps { sh 'mkdir ${WORKSPACE}/artifacts' sh 'mkdir ${WORKSPACE}/packages' } } / / 2) Извлечь образ Docker Codesigner из реестра Github. его зависимости. // После создания файла dll или exe скопируйте его в папку «packages» для подписания Release/netcoreapp3/HelloWorld-3.1.dll ${WORKSPACE}/packages/HelloWorld.dll' } } // 0.0.1) На этом этапе созданные файлы DLL (артефакты) будут подписаны с помощью CodeSignTool. stage('Подписать и сохранить артефакт DLL Dotnet Core') { steps { sh 'docker run -i --rm --dns 4 --network host --volume ${WORKSPACE}/packages:/codesign/examples -- том ${WORKSPACE}/artifacts:/codesign/output -e ИМЯ ПОЛЬЗОВАТЕЛЯ=${ИМЯ ПОЛЬЗОВАТЕЛЯ} -e ПАРОЛЬ=${ПАРОЛЬ} -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, который мы создали на github.com/SSLcom/codesigner-jenkins-образецДругие руководства по интеграции удаленной подписи
- Интеграция подписи облачного кода с CircleCI
- Интеграция облачной подписи кода с GitHub Actions
- Интеграция облачной подписи кода с GitLab CI
- Интеграция облачной подписи кода с Travis CI
- Интеграция подписи облачного кода с Azure DevOps
- Облачная автоматизация подписи кода с помощью CI/CD Services
Нужны индивидуальные решения?
Благодаря нашим экспертным знаниям и пятизвездочному персоналу службы поддержки мы готовы работать с вами над индивидуальными решениями или над скидками на подписание крупных объемов на уровне предприятия. Заполните форму ниже, и мы свяжемся с вами.