Crea un file Jenkins e definisci la pipeline nel tuo editor di codice
pipeline { agent any options { buildDiscarder(logRotator(numToKeepStr: "5")) disableConcurrentBuilds() }
Imposta lo strumento .NET sul tuo editor di codice configurando Jenkins
Clicca su Gestisci Jenkins scheda sulla dashboard di Jenkins.
Scorri la pagina verso il basso e fai clic su Configurazione globale dello strumento.
Scorri verso il basso e fai clic Installazioni di .NET SDK.
Copia il valore per .NET SDK e incollalo nell'editor di codice.
strumenti {dotnetsdk "DOTNET_CORE_3.1.24" }
Vai su plugins.jenkins.io e installa il plugin .NET SDK
Sotto Gestisci Jenkins sulla tua dashboard, controlla Gestisci plugin per confermare se il plug-in .NET SDK è stato installato.
Dopo aver verificato che il plug-in è stato installato, torna a INSTALLAZIONI DI .NET SDK e assicurati che la versione corretta e i dettagli sulla versione del plug-in .NET SDK siano impostati. Procedi a fare clic su Risparmi pulsante.
Imposta le variabili d'ambiente sul tuo editor di codice
ambiente {NOMEUTENTE = credenziali('es-username') // nome utente dell'account SSL.com. PASSWORD = credenziali('es-password') // Password dell'account SSL.com. CREDENTIAL_ID = credenziali('es-crendential-id') // ID credenziali per la firma del certificato. TOTP_SECRET = credenziali('es-totp-secret') // Segreto TOTP OAuth (https://www.ssl.com/how-to/automate-esigner-ev-code-signing) ENVIRONMENT_NAME = 'PROD' // SSL .com Nome dell'ambiente. Per conto demo può essere 'TEST' altrimenti sarà 'PROD' }
Troverai i valori per ciascuna variabile nella dashboard Jenkins sotto Sicurezza> gestire Credenziali.
Imposta le fasi per la creazione della directory degli artefatti, il pull dell'immagine Docker, la creazione di .NET e la firma del codice dell'artefatto
1) Crea una directory degli artefatti per archiviare i file degli artefatti firmati e non firmati.
stage('Crea directory artifacts') { steps { sh 'mkdir ${WORKSPACE}/artifacts' sh 'mkdir ${WORKSPACE}/packages' } }2) Estrai l'immagine Docker di Codesigner dal registro di Github.
stage('Docker Pull Image') { steps { sh 'docker pull ghcr.io/sslcom/codesigner:latest' } }3) Crea un progetto o una soluzione dotnet e tutte le sue dipendenze. Dopo aver creato il file dll o exe, copialo nella cartella "pacchetti" per la firma.
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) Questo è il passaggio in cui i file DLL (artifact) creati verranno firmati con 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 -- volume ${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:latest sign -input_file_path=/codesign/examples/HelloWorld.dll -output_dir_path=/codesign/output' } post { sempre { archiveArtifacts artefatti: "artifacts/HelloWorld.dll", onlyIfSuccessful: true } } } } }
Crea un repository Github
Copia ciascuno dei componenti del comando push su Github.Scrivi i comandi su un nuovo terminale sul tuo editor di codice per eseguire il push del codice.
Dopo aver inserito il codice, vai al tuo account Github e copia il link URL del tuo progetto.
Procedi al tuo account Jenkins e fai clic su Crea un lavoro collegamento.
Scegli Pipeline multiramo, imposta il nome per il tuo progetto e fai clic su OK pulsante.
Sotto Fonti di filiale, selezionare Idiota e incolla il link URL del tuo progetto Github.
Scorri fino a Scansione dei trigger di pipeline multiramo. Seleziona la casella per Periodicamente, se non altrimenti eseguito. Puoi selezionare 2 minuti.
Clicca su Risparmi pulsante.
Torna al tuo account Jenkins, fai clic sul tuo progetto e conferma se la pipeline è iniziata
Fai clic sul tuo progetto Jenkins e seleziona Scansiona ora la pipeline multiramo sul dashboard.
Clicchi Uscita console
Scorri verso il basso e controlla se la firma del codice ha esito positivo
Intero script
Definisci la pipeline
pipeline { agent any options { buildDiscarder(logRotator(numToKeepStr: "5")) disableConcurrentBuilds() }
Installa strumenti di compilazione
strumenti {dotnetsdk "DOTNET_CORE_3.1.24" //https://plugins.jenkins.io/dotnet-sdk }
Crea una variabile di ambiente
ambiente {NOMEUTENTE = credenziali('es-username') // nome utente dell'account SSL.com. PASSWORD = credenziali('es-password') // Password dell'account SSL.com. CREDENTIAL_ID = credenziali('es-crendential-id') // ID credenziali per la firma del certificato. TOTP_SECRET = credenziali('es-totp-secret') // Segreto TOTP OAuth (https://www.ssl.com/how-to/automate-esigner-ev-code-signing) ENVIRONMENT_NAME = 'PROD' // SSL .com Nome dell'ambiente. Per conto demo può essere 'TEST' altrimenti sarà 'PROD' }
Script per le fasi di costruzione e firma
stages { // 1) Crea una directory degli artefatti per archiviare i file degli artefatti firmati e non firmati stage('Crea directory degli artefatti') { steps { sh 'mkdir ${WORKSPACE}/artifacts' sh 'mkdir ${WORKSPACE}/packages' } } / / 2) Pull Codesigner Docker Image From Github Registry stage('Docker Pull Image') { steps { sh 'docker pull ghcr.io/sslcom/codesigner:latest' } } // 3) Crea un progetto o una soluzione dotnet e tutto le sue dipendenze. // Dopo che è stato creato il file dll o exe, copia nella cartella 'packages' per la firma 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) Questo è il passaggio in cui i file DLL (artifact) creati verranno firmati con 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 -- volume ${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:latest sign -input_file_path=/codesign/examples/HelloWorld.dll -output_dir_path=/codesign/output' } post { sempre { archiveArtifacts artefatti: "artifacts/HelloWorld.dll", onlyIfSuccessful: true } } } } }
Esempio di pipeline Jenkins
Dai un'occhiata alla pipeline Jenkins di esempio che abbiamo creato github.com/SSLcom/codesigner-jenkins-sampleAltre guide all'integrazione della firma remota
- Integrazione della firma del codice cloud con CircleCI
- Integrazione della firma del codice cloud con le azioni GitHub
- Integrazione Cloud Code Signing con GitLab CI
- Integrazione Cloud Code Signing con Travis CI
- Integrazione della firma del codice cloud con Azure DevOps
- Automazione della firma del codice cloud con servizi CI/CD
Hai bisogno di soluzioni personalizzate?
Con la nostra conoscenza esperta e il personale di supporto a cinque stelle, siamo pronti e disposti a lavorare con te su soluzioni personalizzate o sconti per firme di alto volume a livello aziendale. Compila il modulo sottostante e sarai ricontattato.