Erstellen Sie eine Jenkins-Datei und definieren Sie die Pipeline in Ihrem Code-Editor
Pipeline {Agent beliebige Optionen {buildDiscarder(logRotator(numToKeepStr: "5")) disableConcurrentBuilds() }
Richten Sie das .NET-Tool in Ihrem Code-Editor ein, indem Sie Jenkins konfigurieren
Klicken Sie auf die Verwalte Jenkins Registerkarte auf Ihrem Jenkins-Dashboard.
Scrollen Sie auf der Seite nach unten und klicken Sie auf Global Tool Configuration.
Scrollen Sie nach unten und klicken Sie auf .NET SDK-Installationen.
Kopieren Sie den Wert für .NET SDK und fügen Sie ihn in Ihren Code-Editor ein.
Tools { dotnetsdk "DOTNET_CORE_3.1.24" }
Gehen Sie zu plugins.jenkins.io und installieren Sie das .NET SDK-Plugin
Der Verwalte Jenkins Überprüfen Sie auf Ihrem Dashboard Plugins verwalten um zu bestätigen, ob das .NET SDK-Plugin installiert wurde.
Nachdem Sie bestätigt haben, dass das Plugin installiert wurde, gehen Sie zurück zu .NET SDK-INSTALLATIONEN und stellen Sie sicher, dass die richtige Version und die Release-Details des .NET SDK-Plugins eingestellt sind. Fahren Sie mit dem Klicken fort Speichern .
Legen Sie die Umgebungsvariablen in Ihrem Code-Editor fest
Umgebung { BENUTZERNAME = Anmeldeinformationen ('es-Benutzername') // Benutzername des SSL.com-Kontos. PASSWORD = Credentials('es-password') // Passwort für das SSL.com-Konto. CREDENTIAL_ID = Credentials('es-crendential-id') // Credential-ID zum Signieren des Zertifikats. TOTP_SECRET = Credentials('es-totp-secret') // OAuth TOTP Secret (https://www.ssl.com/how-to/automate-esigner-ev-code-signing) ENVIRONMENT_NAME = 'PROD' // SSL .com-Umgebungsname. Für das Demo-Konto kann es 'TEST' sein, andernfalls 'PROD' }
Sie finden die Werte für jede Variable auf Ihrem Jenkins-Dashboard unter Sicherheit> Verwalten Referenzen.
Legen Sie die Phasen für das Erstellen des Artefaktverzeichnisses, das Pullen des Docker-Images, das Erstellen von .NET und das Code-Signieren des Artefakts fest
1) Artefaktverzeichnis erstellen, um signierte und unsignierte Artefaktdateien zu speichern.
stage('Artefaktverzeichnis erstellen') { Schritte { sh 'mkdir ${WORKSPACE}/artifacts' sh 'mkdir ${WORKSPACE}/packages' } }2) Ziehen Sie das Codesigner-Docker-Image aus der Github-Registrierung.
stage('Docker Pull Image') { steps { sh 'docker pull ghcr.io/sslcom/codesigner:latest' } }3) Erstellen Sie ein dotnet-Projekt oder eine Dotnet-Lösung und alle ihre Abhängigkeiten. Nachdem die DLL- oder EXE-Datei erstellt wurde, kopieren Sie sie zum Signieren in den Ordner „packages“.
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) In diesem Schritt werden die erstellten DLL-Dateien (Artefaktdateien) mit CodeSignTool signiert.
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 { always { archiveArtifacts artifacts: "artifacts/HelloWorld.dll", onlyIfSuccessful: true } } } } }
Erstellen Sie ein Github-Repository
Kopieren Sie jede der Push-Befehlskomponenten auf Github.Schreiben Sie die Befehle an einem neuen Terminal in Ihrem Code-Editor, um den Code zu pushen.
Gehen Sie nach dem Pushen des Codes zu Ihrem Github-Konto und kopieren Sie den URL-Link Ihres Projekts.
Gehen Sie zu Ihrem Jenkins-Konto und klicken Sie auf die Erstellen Sie einen Job Link.
Wählen Multibranch-Pipeline, Legen Sie den Namen für Ihr Projekt fest und klicken Sie auf OK .
Der BranchenquellenWählen Git und fügen Sie den URL-Link Ihres Github-Projekts ein.
Scrollen Sie nach unten Scannen Sie Multibranch-Pipeline-Trigger. Aktivieren Sie das Kontrollkästchen für Periodisch, wenn nicht anders ausgeführt. Sie können auswählen 2 Мinuten.
Klicken Sie auf die Speichern .
Gehen Sie zurück zu Ihrem Jenkins-Konto, klicken Sie auf Ihr Projekt und bestätigen Sie, ob die Pipeline gestartet wurde
Klicken Sie auf Ihr Jenkins-Projekt und wählen Sie es aus Jetzt Multibranch-Pipeline scannen im Dashboard.
Klicken Sie Konsolenausgabe
Scrollen Sie nach unten und prüfen Sie, ob die Code-Signierung erfolgreich war
Gesamtes Skript
Definieren Sie die Pipeline
Pipeline {Agent beliebige Optionen {buildDiscarder(logRotator(numToKeepStr: "5")) disableConcurrentBuilds() }
Build-Tools installieren
Tools { dotnetsdk "DOTNET_CORE_3.1.24" //https://plugins.jenkins.io/dotnet-sdk }
Erstellen Sie eine Umgebungsvariable
Umgebung { BENUTZERNAME = Anmeldeinformationen ('es-Benutzername') // Benutzername des SSL.com-Kontos. PASSWORD = Credentials('es-password') // Passwort für das SSL.com-Konto. CREDENTIAL_ID = Credentials('es-crendential-id') // Credential-ID zum Signieren des Zertifikats. TOTP_SECRET = Credentials('es-totp-secret') // OAuth TOTP Secret (https://www.ssl.com/how-to/automate-esigner-ev-code-signing) ENVIRONMENT_NAME = 'PROD' // SSL .com-Umgebungsname. Für das Demo-Konto kann es 'TEST' sein, andernfalls 'PROD' }
Skript für die Phasen Build und Sign
stages { // 1) Artefaktverzeichnis zum Speichern von signierten und unsignierten Artefaktdateien erstellen stage('Artefaktverzeichnis erstellen') { steps { sh 'mkdir ${WORKSPACE}/artifacts' sh 'mkdir ${WORKSPACE}/packages' } } / / 2) Codesigner-Docker-Image aus der Github-Registrierung ziehen stage('Docker Pull Image') { steps { sh 'docker pull ghcr.io/sslcom/codesigner:latest' } } // 3) Erstellen Sie ein Dotnet-Projekt oder eine Dotnet-Lösung und all das seine Abhängigkeiten. // Nachdem die DLL- oder Exe-Datei erstellt wurde, kopieren Sie sie zum Signieren in den Ordner „packages“. Release/netcoreapp3.1/HelloWorld-0.0.1.dll ${WORKSPACE}/packages/HelloWorld.dll' } } // 4) In diesem Schritt werden die erstellten DLL-Dateien (Artefaktdateien) mit CodeSignTool signiert. 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 { always { archiveArtifacts artifacts: "artifacts/HelloWorld.dll", onlyIfSuccessful: true } } } } }
Beispiel einer Jenkins-Pipeline
Sehen Sie sich die Beispiel-Jenkins-Pipeline an, die wir erstellt haben github.com/SSLcom/codesigner-jenkins-sampleAndere Leitfäden zur Integration von Remote-Signaturen
- Cloud Code Signing-Integration mit CircleCI
- Cloud Code Signing-Integration mit GitHub-Aktionen
- Cloud Code Signing-Integration mit GitLab CI
- Cloud Code Signing-Integration mit Travis CI
- Cloud Code Signing-Integration mit Azure DevOps
- Cloud Code Signing-Automatisierung mit CI/CD-Diensten
Benötigen Sie kundenspezifische Lösungen?
Mit unserem Expertenwissen und unserem Fünf-Sterne-Support-Personal sind wir bereit und bereit, mit Ihnen an kundenspezifischen Lösungen oder Rabatten für Großseriensignaturen auf Unternehmensebene zu arbeiten. Füllen Sie das untenstehende Formular aus und wir melden uns bei Ihnen.