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 Épargnez .
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) ENVIRONMENT_NAME = 'PROD' // SSL .com Nom de l'environnement. 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/sslcom/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/sslcom/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.
Selectionnez 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 Épargnez .
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
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 { NOM D'UTILISATEUR = identifiants ('es-nom d'utilisateur') // 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) ENVIRONMENT_NAME = 'PROD' // SSL Nom de l'environnement .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/sslcom/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/sslcom/codedesigner:latest sign -input_file_path=/codesign/examples/HelloWorld.dll -output_dir_path=/codesign/output' } post { always { archiveArtifacts artefacts : "artifacts/HelloWorld.dll", onlyIfSuccessful : vrai } } } } }
Exemple de pipeline Jenkins
Découvrez l'exemple de pipeline Jenkins que nous avons créé sur github.com/SSLcom/codedesigner-jenkins-sampleAutres guides d'intégration de la signature à distance
- Intégration de la signature de code dans le cloud avec CircleCI
- Intégration de la signature de code dans le cloud avec les actions GitHub
- Intégration de la signature de code dans le cloud avec GitLab CI
- Intégration de la signature de code dans le cloud avec Travis CI
- Intégration de la signature de code dans le cloud avec Azure DevOps
- Automatisation de la signature de code dans le cloud avec les services CI/CD
Besoin de solutions personnalisées ?
Grâce à nos connaissances spécialisées et à notre personnel d'assistance cinq étoiles, nous sommes prêts et disposés à travailler avec vous sur des solutions personnalisées ou des remises de signature de gros volumes au niveau de l'entreprise. Remplissez le formulaire ci-dessous et nous vous contacterons.