Cree un archivo Jenkins y defina la canalización en su editor de código
canalización { agente cualquier opción { buildDiscarder(logRotator(numToKeepStr: "5")) disabledConcurrentBuilds() }
Configure la herramienta .NET en su editor de código configurando Jenkins
Haga clic en el Administrar Jenkins pestaña en su tablero de Jenkins.
Desplácese hacia abajo en la página y haga clic en Configuración global de herramientas.
Desplázate hacia abajo y haz clic Instalaciones SDK de .NET.
Copie el valor de .NET SDK y péguelo en su editor de código.
herramientas { dotnetsdk "DOTNET_CORE_3.1.24" }
Vaya a plugins.jenkins.io e instale el complemento .NET SDK
bajo Administrar Jenkins en tu Tablero, verifica Administrar complementos para confirmar si se ha instalado el complemento .NET SDK.
Después de confirmar que se instaló el complemento, vuelva a INSTALACIONES DE .NET SDK y asegúrese de que la versión correcta y los detalles de lanzamiento del complemento de .NET SDK estén configurados. Proceda a hacer clic en el Guardar del botón.
Establezca las variables de entorno en su editor de código
entorno { NOMBRE DE USUARIO = credenciales ('es-username') // nombre de usuario de la cuenta SSL.com. CONTRASEÑA = credenciales('es-password') // Contraseña de la cuenta SSL.com. CREDENTIAL_ID = credentials('es-crendential-id') // ID de la credencial para firmar el certificado. TOTP_SECRET = credenciales('es-totp-secret') // OAuth TOTP Secret (https://www.ssl.com/how-to/automate-esigner-ev-code-signing) ENVIRONMENT_NAME = 'PROD' // SSL .com Nombre del entorno. Para la cuenta de demostración, puede ser 'PRUEBA'; de lo contrario, será 'PROD'}
Encontrará los valores para cada variable en su tablero de Jenkins en Seguridad> Gestiona Cartas credenciales.
Establezca las etapas para crear el directorio de artefactos, extraer la imagen de la ventana acoplable, compilar .NET y firmar el código del artefacto
1) Crear un directorio de artefactos para almacenar archivos de artefactos firmados y sin firmar.
stage('Crear directorio de artefactos') { pasos { sh 'mkdir ${ESPACIO DE TRABAJO}/artefactos' sh 'mkdir ${ESPACIO DE TRABAJO}/paquetes' } }2) Extraiga la imagen Docker del codiseñador del registro de Github.
stage('Docker Pull Image') { pasos { sh 'docker pull ghcr.io/sslcom/codesigner:latest' } }3) Cree un proyecto o solución dotnet y todas sus dependencias. Después de crear el archivo dll o exe, cópielo en la carpeta 'paquetes' para firmar.
stage('Build Dotnet') { pasos { sh 'dotnet build dotnet/HelloWorld.csproj -c Release' sh 'cp dotnet/bin/Release/netcoreapp3.1/HelloWorld-0.0.1.dll ${WORKSPACE}/packages/ HolaMundo.dll' } }4) Este es el paso en el que los archivos DLL (artefactos) creados se firmarán con CodeSignTool.
stage('Firmar y guardar el artefacto DLL de Dotnet Core') { pasos { sh 'docker run -i --rm --dns 8.8.8.8 --network host --volume ${WORKSPACE}/packages:/codesign/examples -- volumen ${ESPACIO DE TRABAJO}/artefactos:/codiseño/salida -e NOMBRE DE USUARIO=${NOMBRE DE USUARIO} -e CONTRASEÑA=${CONTRASEÑA} -e CREDENTIAL_ID=${CREDENTIAL_ID} -e TOTP_SECRET=${TOTP_SECRET} -e ENVIRONMENT_NAME=${ ENTORNO_NOMBRE} ghcr.io/sslcom/codesigner:última señal -input_file_path=/codesign/examples/HelloWorld.dll -output_dir_path=/codesign/output' } publicar { siempre { archiveArtifacts artefactos: "artifacts/HelloWorld.dll", onlyIfSuccessful: true } } } } }
Crear un repositorio de Github
Copie cada uno de los componentes del comando push en Github.Escriba los comandos en una nueva terminal en su editor de código para enviar el código.
Después de enviar el código, vaya a su cuenta de Github y copie el enlace URL de su proyecto.
Vaya a su cuenta de Jenkins y haga clic en el Crea un trabajo .
Elija Oleoducto de Ramales Múltiples, establezca el nombre de su proyecto y haga clic en el botón OK del botón.
bajo Fuentes de rama, seleccione Git y pegue el enlace URL de su proyecto Github.
Desplácese hacia abajo hasta Escanear activadores de canalización de varias sucursales. Marque la casilla para Periódicamente si no se ejecuta de otra manera. Puedes elegir 2 minutos.
Haga clic en el Guardar del botón.
Regrese a su cuenta de Jenkins, haga clic en su proyecto y confirme si la tubería ha comenzado
Haga clic en su proyecto Jenkins y seleccione Escanee la canalización de múltiples sucursales ahora en el tablero.
Haz Clic Salida de consola
Desplácese hacia abajo y verifique si la firma del código es exitosa
Guión completo
Definir la canalización
canalización { agente cualquier opción { buildDiscarder(logRotator(numToKeepStr: "5")) disabledConcurrentBuilds() }
Instalar herramientas de compilación
herramientas { dotnetsdk "DOTNET_CORE_3.1.24" //https://plugins.jenkins.io/dotnet-sdk }
Crea una variable de entorno
entorno { NOMBRE DE USUARIO = credenciales ('es-username') // nombre de usuario de la cuenta SSL.com. CONTRASEÑA = credenciales('es-password') // Contraseña de la cuenta SSL.com. CREDENTIAL_ID = credentials('es-crendential-id') // ID de la credencial para firmar el certificado. TOTP_SECRET = credenciales('es-totp-secret') // OAuth TOTP Secret (https://www.ssl.com/how-to/automate-esigner-ev-code-signing) ENVIRONMENT_NAME = 'PROD' // SSL .com Nombre del entorno. Para la cuenta de demostración, puede ser 'PRUEBA'; de lo contrario, será 'PROD'}
Guión para las etapas de construcción y firma
etapas { // 1) Crear directorio de artefactos para almacenar archivos de artefactos firmados y sin firmar etapa ('Crear directorio de artefactos') { pasos { sh 'mkdir ${ESPACIO DE TRABAJO}/artifacts' sh 'mkdir ${ESPACIO DE TRABAJO}/paquetes' } } / / 2) Extraiga la imagen de Docker del codiseñador de la etapa de registro de Github ('Docker Pull Image') { pasos { sh 'docker pull ghcr.io/sslcom/codesigner:latest' } } // 3) Cree un proyecto o una solución dotnet y todo sus dependencias. // Después de que se haya creado el archivo dll o exe, cópielo en la carpeta 'paquetes' para la etapa de firma ('Build Dotnet') { pasos { 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) Este es el paso en el que los archivos DLL (artefactos) creados se firmarán con CodeSignTool. stage('Firmar y guardar el artefacto DLL de Dotnet Core') { pasos { sh 'docker run -i --rm --dns 8.8.8.8 --network host --volume ${WORKSPACE}/packages:/codesign/examples -- volumen ${ESPACIO DE TRABAJO}/artefactos:/codiseño/salida -e NOMBRE DE USUARIO=${NOMBRE DE USUARIO} -e CONTRASEÑA=${CONTRASEÑA} -e CREDENTIAL_ID=${CREDENTIAL_ID} -e TOTP_SECRET=${TOTP_SECRET} -e ENVIRONMENT_NAME=${ ENTORNO_NOMBRE} ghcr.io/sslcom/codesigner:última señal -input_file_path=/codesign/examples/HelloWorld.dll -output_dir_path=/codesign/output' } publicar { siempre { archiveArtifacts artefactos: "artifacts/HelloWorld.dll", onlyIfSuccessful: true } } } } }
Ejemplo de canalización de Jenkins
Echa un vistazo a la canalización de muestra de Jenkins que hemos creado en github.com/SSLcom/codesigner-jenkins-muestraOtras guías de integración de firma remota
- Integración de firma de código en la nube con CircleCI
- Integración de firma de código en la nube con acciones de GitHub
- Integración de firma de código en la nube con GitLab CI
- Integración de firma de código en la nube con Travis CI
- Integración de firma de código en la nube con Azure DevOps
- Automatización de la firma de código en la nube con servicios de CI/CD
¿Necesita soluciones personalizadas?
Con nuestro conocimiento experto y personal de soporte de cinco estrellas, estamos listos y dispuestos a trabajar con usted en soluciones personalizadas o descuentos en firmas de alto volumen a nivel empresarial. Complete el siguiente formulario y nos pondremos en contacto.