Переменные среды
- USERNAME: имя пользователя учетной записи SSL.com. (Необходимый)
- PASSWORD: пароль учетной записи SSL.com (обязательно)
- CREDENTIAL_ID: Идентификатор учетных данных для сертификата подписи. Если credential_id опущен и у пользователя есть только один сертификат подписи кода eSigner, CodeSignTool будет использовать его по умолчанию. Если у пользователя есть более одного сертификата подписи кода, этот параметр является обязательным. (Необходимый)
- TOTP_SECRET: Секрет OAuth TOTP. Вы можете получить доступ к подробной информации о https://www.ssl.com/how-to/automate-esigner-ev-code-signing (обязательно)
- ИМЯ_ОКРУЖАЮЩЕЙ СРЕДЫ : Среда 'TEST' или 'PROD'. (Необходимый)
входные
- путь_входного_файла: Путь к подписываемому объекту кода. (Необходимый)
- выходной_каталог_путь: Каталог, в который будут записаны подписанные объекты кода. Если output_path опущен, файл, указанный в -file_path, будет перезаписан подписанным файлом.
Пример рабочего процесса подписи DLL кода .NET
Создайте yml-файл
Группируйте задания по этапам. Все работы на одном этапе должны быть завершены до выполнения следующего этапа.
этапы: - построить - подписать
Определяйте переменные среды глобально. Свойство уровня задания переопределяет глобальные переменные.
- Переменные среды используются, чтобы сделать образцы более читабельными. На приведенном выше снимке экрана примера рабочего процесса PROJECT_NAME, PROJECT_VERSION и DOTNET_VERSION могут быть опущены. Подписание может продолжаться с этими упущениями.
- В разделе ENVIRONMENT_NAME поместите «TEST» для тестовой подписи и «PROD» для динамической подписи.
переменные: PROJECT_NAME: "HelloWorld" PROJECT_VERSION: "0.0.1" DOTNET_VERSION: "3.1" ENVIRONMENT_NAME: "PROD"
Определите Стадия сборки
Ниже приведено определение вашей работы по созданию артефакта dll.
сборка-дотнет:
- Определите, на каком этапе будет выполняться задание.
этап: сборка
- Поместите полное название изображения, которое следует использовать. Он должен содержать часть реестра, если это необходимо.
изображение: mcr.microsoft.com/dotnet/sdk:3.1-bulseye
- Определите сценарии, которые должны выполняться *перед* заданием. Может быть установлен глобально или для каждого задания.
before_script: - mkdir -p ${CI_PROJECT_DIR}/артефакты - mkdir -p ${CI_PROJECT_DIR}/пакеты
- Определите сценарии оболочки, выполняемые Runner. Создание артефакта DLL
сценарий: - dotnet build dotnet/${PROJECT_NAME}.csproj -c Release - cp dotnet/bin/Release/netcoreapp${DOTNET_VERSION}/${PROJECT_NAME}-${PROJECT_VERSION}.dll ${CI_PROJECT_DIR}/packages/${ PROJECT_NAME}.dll
- Укажите список файлов и каталогов, которые должны быть присоединены к заданию в случае его успешного выполнения.
- 'истекает_вход' позволяет удалить файл через определенный промежуток времени. Его использование не является обязательным. Вот почему на снимке экрана приведенного выше примера рабочего процесса это свойство не показано.
артефакты: пути: - ${CI_PROJECT_DIR}/packages/HelloWorld.dll expire_in: 5 минут
Определите стадию знака
Ниже приведено определение вашей работы по подписи артефакта dll.
знак-точка-артефакты:
- Определите, на каком этапе будет выполняться задание.
этап: знак
- Поместите полное название изображения, которое следует использовать. Он должен содержать часть реестра, если это необходимо.
изображение: докер: 19.03.0
- Дайте определение услугам. Это похоже на свойство image, но свяжет указанные сервисы с контейнером image.
сервисы: - докер: 19.03.0-dind
- Определите переменные среды для конкретных заданий.
- На скриншоте выше команда sign была определена непосредственно в скрипте sign, а не в переменных среды. Бдругие методы могут корректно подписывать TravisCI.
переменные: КОМАНДА: "знак"
- Определите сценарии, которые должны выполняться *перед* заданием. Может быть установлен глобально или для каждого задания.
before_script: - mkdir -p ${CI_PROJECT_DIR}/артефакты - mkdir -p ${CI_PROJECT_DIR}/пакеты
- Поместите сценарии оболочки, выполняемые Runner. Подпишите артефакт .NET dll с помощью образа Docker CodeSignTool
скрипт: - docker pull ghcr.io/sslcom/codesigner:latest - docker run -i --rm --dns 8.8.8.8 --network host --volume ${CI_PROJECT_DIR}/packages:/codesign/examples --volume $ {CI_PROJECT_DIR}/artifacts:/codesign/output -e ИМЯ ПОЛЬЗОВАТЕЛЯ=${ИМЯ ПОЛЬЗОВАТЕЛЯ} -e ПАРОЛЬ=${ПАРОЛЬ} -e CREDENTIAL_ID=${CREDENTIAL_ID} -e TOTP_SECRET=${TOTP_SECRET} -e ENVIRONMENT_NAME=${ENVIRONMENT_NAME} ghcr.io/sslcom/codesigner:последняя версия ${COMMAND} -input_file_path=/codesign/examples/${PROJECT_NAME}.dll -output_dir_path=/codesign/output
- Напишите сценарий, который можно использовать для указания списка файлов и каталогов, которые должны быть присоединены к заданию в случае его успешного выполнения.
артефакты: пути: - ${CI_PROJECT_DIR}/artifacts/${PROJECT_NAME}.dll expire_in: 1 дней
- Укажите список имен заданий из более ранних стадий, из которых должны быть загружены артефакты.
зависимости: - build-dotnet
Начать этап сборки
Создать репозиторий
Обратитесь к инструкциям командной строки в Gitlab, как показано на снимке экрана ниже.
Нажмите вашу папку
Сделайте это, нажав Терминал в меню, а затем Новый Терминал.
Введите push-скрипт в своем терминале, чтобы отправить проект.
Нажмите кнопку «Построить»
После запуска конвейера приступайте к сборке
Проверить успешность сборки
Начать этап подписания
Приступить к подписанию артефакта
Подтвердите, успешно ли подписан код
Теперь вы можете скачать подписанный файл
Пример Gitlab CI Pipeline
Ознакомьтесь с образцом конвейера Gitlab CI, который мы создали на github.com/SSLcom/codesigner-gitlabci-образецДругие руководства по интеграции удаленной подписи CI/CD
- Интеграция подписи облачного кода с CircleCI
- Интеграция облачной подписи кода с GitHub Actions
- Интеграция облачной подписи кода с Jenkins CI
- Интеграция облачной подписи кода с Travis CI
- Интеграция подписи облачного кода с Azure DevOps
- Интеграция подписи облачного кода с BitBucket
- Облачная автоматизация подписи кода с помощью CI/CD Services
Нужны индивидуальные решения?
Благодаря нашим экспертным знаниям и пятизвездочному персоналу службы поддержки мы готовы работать с вами над индивидуальными решениями или над скидками на подписание крупных объемов на уровне предприятия. Заполните форму ниже, и мы свяжемся с вами.