en English
X

Select Language

Powered by Google TranslateTranslate

We hope you will find the Google translation service helpful, but we don’t promise that Google’s translation will be accurate or complete. You should not rely on Google’s translation. English is the official language of our site.

en English
X

Select Language

Powered by Google TranslateTranslate

We hope you will find the Google translation service helpful, but we don’t promise that Google’s translation will be accurate or complete. You should not rely on Google’s translation. English is the official language of our site.

Intégration de la signature de code dans le cloud avec Jenkins CI

Il s'agit d'un guide sur la façon de procéder à une signature de code automatisée sur Jenkins avec l'utilisation d'eSigner CodeSignTool.

CodeSignTool est un utilitaire de ligne de commande qui convient aux signatures à volume élevé et s'intègre de manière transparente à diverses plates-formes CI/CD. Il fait partie d'eSigner : notre service de signature à distance qui offre une approche efficace, sécurisée et conviviale de la signature de code.

SSL.com EV Signature du code Les certificats aident à protéger votre code contre les falsifications non autorisées et les compromis avec le plus haut niveau de validation, et sont disponibles pour aussi peu que 249 $ par année. Vous pouvez également utilisez votre certificat EV Code Signing à grande échelle dans le cloud avec eSigner.

COMMANDEZ

Créez un fichier Jenkins et définissez le pipeline sur votre éditeur de code

pipeline { agent toutes les options { buildDiscarder(logRotator(numToKeepStr : "5")) disableConcurrentBuilds() }

Paramétrez l'outil .NET sur votre éditeur de code en configurant Jenkins

Cliquez  Gérer Jenkins onglet sur votre tableau de bord Jenkins.

Faites défiler la page et cliquez sur Configuration globale de l'outil.

Faites défiler vers le bas et cliquez Installations du SDK .NET.

Copiez la valeur pour .NET SDK et collez-la dans votre éditeur de code.

outils { dotnetsdk "DOTNET_CORE_3.1.24" }

Allez sur plugins.jenkins.io et installez le plugin .NET SDK

Sous Gérer Jenkins sur votre tableau de bord, cochez Gérer les plugins pour confirmer si le plug-in .NET SDK a été installé.

Après avoir confirmé que le plug-in a été installé, revenez à .NET SDK INSTALLATIONS et assurez-vous que la version correcte et les détails de version du plug-in .NET SDK sont définis. Continuez à cliquer sur le Enregistrer .

Définissez les variables d'environnement sur votre éditeur de code

environnement { USERNAME = identifiants ('es-username') // nom d'utilisateur du compte SSL.com. PASSWORD = identifiants('es-password') // Mot de passe du compte SSL.com. CREDENTIAL_ID =credentials('es-crendential-id') // ID d'identification pour la signature du certificat. TOTP_SECRET = identifiants('es-totp-secret') // Secret TOTP OAuth (https://www.ssl.com/how-to/automate-esigner-ev-code-signing) REGISTRY_PASSWORD = identifiants('es-github -token') // Jeton Github pour l'image Docker du concepteur de code Pull REGISTRY_USERNAME = 'bayrakmustafa' // Nom d'utilisateur du registre Github pour l'image Docker du concepteur de code Pull ENVIRONMENT_NAME = 'PROD' // Nom de l'environnement SSL.com. Pour le compte démo, cela peut être 'TEST' sinon ce sera 'PROD' }

Vous trouverez les valeurs de chaque variable sur votre tableau de bord Jenkins sous Sécurité> Gérer Expérience.

Définissez les étapes de création du répertoire des artefacts, de l'extraction de l'image Docker, de la création de .NET et de la signature du code de l'artefact

 

        1) Créez un répertoire d'artefacts pour stocker les fichiers d'artefacts signés et non signés.
 stage('Créer le répertoire des artefacts') { étapes { sh 'mkdir ${WORKSPACE}/artifacts' sh 'mkdir ${WORKSPACE}/packages' } }
        2) Extrayez l'image Docker Codesigner du registre Github.
stage('Docker Pull Image') { étapes { sh 'docker pull ghcr.io/bayrakmustafa/codedesigner:latest' } }
        3) Créez un projet ou une solution dotnet et toutes ses dépendances. Une fois le fichier dll ou exe créé, copiez-le dans le dossier "packages" pour signature.
stage('Build Dotnet') { étapes { 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) C'est l'étape où les fichiers DLL (artefacts) créés seront signés avec 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/bayrakmustafa/codedesigner:latest sign -input_file_path=/codesign/examples/HelloWorld.dll -output_dir_path=/codesign/output' } post { always { archiveArtifacts artefacts : "artifacts/HelloWorld.dll", onlyIfSuccessful : vrai } } } } }
 

Créer un dépôt Github

Copiez chacun des composants de la commande push sur Github.

Écrivez les commandes dans un nouveau terminal sur votre éditeur de code pour pousser le code.

Après avoir poussé le code, accédez à votre compte Github et copiez le lien URL de votre projet.

Accédez à votre compte Jenkins et cliquez sur le Créer un emploi lien.

Choisissez Pipeline multibranche, définissez le nom de votre projet, puis cliquez sur le OK .

Sous Sources des succursales, Sélectionnez Git et collez le lien URL de votre projet Github.

Faites défiler jusqu'à Analyser les déclencheurs de pipeline multibranche. Cochez la case pour Périodiquement sinon exécuter autrement. Vous pouvez sélectionner 2 minutes.

Cliquez  Enregistrer .

Retournez sur votre compte Jenkins, cliquez sur votre projet et confirmez si le pipeline a démarré

Cliquez sur votre projet Jenkins et sélectionnez Analysez maintenant le pipeline multibranche sur le tableau de bord.

Cliquez Sortie de la console

Faites défiler vers le bas et vérifiez si la signature du code a réussi

Script entier

Remarque : Assurez-vous de corriger les erreurs typographiques ou les sauts de ligne erronés dans le script afin que le processus de signature se déroule sans heurts.

Définir le pipeline

pipeline { agent toutes les options { buildDiscarder(logRotator(numToKeepStr : "5")) disableConcurrentBuilds() }

Installer les outils de compilation

outils { dotnetsdk "DOTNET_CORE_3.1.24" //https://plugins.jenkins.io/dotnet-sdk}

Créer une variable d'environnement

environnement { USERNAME = identifiants ('es-username') // nom d'utilisateur du compte SSL.com. PASSWORD = identifiants('es-password') // Mot de passe du compte SSL.com. CREDENTIAL_ID =credentials('es-crendential-id') // ID d'identification pour la signature du certificat. TOTP_SECRET = identifiants('es-totp-secret') // Secret TOTP OAuth (https://www.ssl.com/how-to/automate-esigner-ev-code-signing) REGISTRY_PASSWORD = identifiants('es-github -token') // Jeton Github pour l'image Docker du concepteur de code Pull REGISTRY_USERNAME = 'bayrakmustafa' // Nom d'utilisateur du registre Github pour l'image Docker du concepteur de code Pull ENVIRONMENT_NAME = 'PROD' // Nom de l'environnement SSL.com. Pour le compte démo, cela peut être 'TEST' sinon ce sera 'PROD' }

Script pour les étapes de construction et de signature

stages { // 1) Créer un répertoire d'artefacts pour stocker les fichiers d'artefacts signés et non signés stage('Créer un répertoire d'artefacts') { steps { sh 'mkdir ${WORKSPACE}/artifacts' sh 'mkdir ${WORKSPACE}/packages' } } / / 2) Extraire l'image Docker Codesigner du registre Github stage ('Docker Pull Image') { étapes { sh 'docker pull ghcr.io/bayrakmustafa/codedesigner:latest' } } // 3) Construire un projet ou une solution dotnet et tout ses dépendances. // Une fois le fichier dll ou exe créé, copiez-le dans le dossier 'packages' pour la signature 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) Il s'agit de l'étape où les fichiers DLL (artefacts) créés seront signés avec 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/bayrakmustafa/codedesigner:latest sign -input_file_path=/codesign/examples/HelloWorld.dll -output_dir_path=/codesign/output' } post { always { archiveArtifacts artefacts : "artifacts/HelloWorld.dll", onlyIfSuccessful : vrai } } } } }

Autres guides d'intégration de la signature à distance

Pour plus d'informations sur un abonnement eSigner et des certificats de signature de code, y compris des solutions à volume élevé et personnalisées, veuillez contacter  Ou remplissez le formulaire ci-dessous.  

Abonnez-vous à la newsletter de SSL.com

Ne manquez pas les nouveaux articles et mises à jour de SSL.com