Utwórz plik Jenkins i zdefiniuj potok w edytorze kodu
pipeline { agent dowolne opcje { buildDiscarder(logRotator(numToKeepStr: "5")) disableConcurrentBuilds() }
Ustaw narzędzie .NET w edytorze kodu, konfigurując Jenkins
Kliknij Zarządzaj Jenkinsem zakładka na pulpicie Jenkins.
Przewiń stronę w dół i kliknij Globalna konfiguracja narzędzi.
Przewiń w dół i kliknij Instalacje .NET SDK.
Skopiuj wartość dla .NET SDK i wklej ją w edytorze kodu.
narzędzia { dotnetsdk "DOTNET_CORE_3.1.24" }
Przejdź do plugins.jenkins.io i zainstaluj wtyczkę .NET SDK
Pod Zarządzaj Jenkinsem w panelu, sprawdź Zarządzaj wtyczkami aby potwierdzić, czy zainstalowano wtyczkę .NET SDK.
Po potwierdzeniu, że wtyczka została zainstalowana, wróć do INSTALACJI .NET SDK i upewnij się, że ustawiono poprawną wersję i szczegóły wydania wtyczki .NET SDK. Przejdź, aby kliknąć Zapisz przycisk.
Ustaw zmienne środowiskowe w edytorze kodu
environment { NAZWA UŻYTKOWNIKA = credentials('es-username') // Nazwa użytkownika konta SSL.com. PASSWORD = credentials('es-password') // hasło do konta SSL.com. CREDENTIAL_ID = credentials('es-crendential-id') // Identyfikator poświadczeń do podpisywania certyfikatu. TOTP_SECRET = credentials('es-totp-secret') // OAuth TOTP Secret (https://www.ssl.com/how-to/automate-esigner-ev-code-signing) ENVIRONMENT_NAME = 'PROD' // SSL Nazwa środowiska .com. W przypadku konta demonstracyjnego może to być „TEST”, w przeciwnym razie będzie to „PROD” }
Znajdziesz wartości dla każdej zmiennej na pulpicie nawigacyjnym Jenkins pod Bezpieczeństwo> zarządzanie Poświadczeń.
Ustaw etapy tworzenia katalogu artefaktów, pobierania obrazu dockera, budowania platformy .NET i podpisywania kodu artefaktu
1) Utwórz katalog artefaktów do przechowywania podpisanych i niepodpisanych plików artefaktów.
stage('Utwórz katalog artefaktów') { kroki { sh 'mkdir ${OBSZAR ROBOCZY}/artifacts' sh 'mkdir ${OBSZAR ROBOCZY}/pakiety' } }2) Wyciągnij obraz Docker Codesigner z rejestru Github.
stage('Docker Pull Image') {steps { sh 'docker pull ghcr.io/sslcom/codesigner:latest' } }3) Zbuduj projekt lub rozwiązanie dotnet i wszystkie jego zależności. Po utworzeniu pliku dll lub exe skopiuj go do folderu „pakiety” w celu podpisania.
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) Jest to krok, w którym utworzone pliki DLL (artefakty) zostaną podpisane za pomocą CodeSignTool.
stage('Podpisz i zapisz artefakt Dotnet Core DLL') {steps { sh 'docker run -i --rm --dns 8.8.8.8 --network host --volume ${OBSZAR ROBOCZY}/packages:/codesign/examples -- wolumin ${OBSZAR ROBOCZY}/artifacts:/codesign/output -e NAZWA UŻYTKOWNIKA=${NAZWA UŻYTKOWNIKA} -e HASŁO=${HASŁO} -e CREDENTIAL_ID=${CREDENTIAL_ID} -e TOTP_SECRET=${TOTP_SECRET} -e NAZWA_ŚRODOWISKA=${ ENVIRONMENT_NAME} ghcr.io/sslcom/codesigner:latest sign -input_file_path=/codesign/examples/HelloWorld.dll -output_dir_path=/codesign/output' } post { always { archiveArtifacts artefakty: "artifacts/HelloWorld.dll", onlyIfSuccessful: true } } } } }
Utwórz repozytorium Github
Skopiuj każdy z komponentów polecenia push na Github.Napisz polecenia w nowym terminalu w edytorze kodu, aby wypchnąć kod.
Po wypchnięciu kodu przejdź do swojego konta Github i skopiuj link URL swojego projektu.
Przejdź do swojego konta Jenkins i kliknij Utwórz pracę łącze.
Dodaj Rurociąg wielooddziałowy, ustaw nazwę dla swojego projektu i kliknij OK przycisk.
Pod Źródła branżowe, Wybierz git i wklej link URL swojego projektu na Github.
Przewiń w dół do Skanuj wyzwalacze potoku wielooddziałowego. Zaznacz pole dla Okresowo, jeśli nie uruchamiaj inaczej. Możesz wybrać 2 minut.
Kliknij Zapisz przycisk.
Wróć do swojego konta Jenkins, kliknij swój projekt i potwierdź, czy potok się rozpoczął
Kliknij swój projekt Jenkins i wybierz Skanuj teraz wielooddziałowy potok na pulpicie nawigacyjnym.
Kliknij Wyjście konsoli
Przewiń w dół i sprawdź, czy podpisywanie kodu powiodło się
Cały skrypt
Zdefiniuj rurociąg
pipeline { agent dowolne opcje { buildDiscarder(logRotator(numToKeepStr: "5")) disableConcurrentBuilds() }
Zainstaluj narzędzia do budowania
narzędzia { dotnetsdk "DOTNET_CORE_3.1.24" //https://plugins.jenkins.io/dotnet-sdk }
Utwórz zmienną środowiskową
environment { NAZWA UŻYTKOWNIKA = credentials('es-username') // Nazwa użytkownika konta SSL.com. PASSWORD = credentials('es-password') // hasło do konta SSL.com. CREDENTIAL_ID = credentials('es-crendential-id') // Identyfikator poświadczeń do podpisywania certyfikatu. TOTP_SECRET = credentials('es-totp-secret') // OAuth TOTP Secret (https://www.ssl.com/how-to/automate-esigner-ev-code-signing) ENVIRONMENT_NAME = 'PROD' // SSL Nazwa środowiska .com. W przypadku konta demonstracyjnego może to być „TEST”, w przeciwnym razie będzie to „PROD” }
Skrypt dla etapów budowania i podpisywania
Stages { // 1) Utwórz katalog artefaktów do przechowywania podpisanych i niepodpisanych plików artefaktów stage('Utwórz katalog artefaktów') { steps { sh 'mkdir ${WORKSPACE}/artifacts' sh 'mkdir ${WORKSPACE}/packages' } } / / 2) Wyciągnij obraz platformy Codesigner Docker z Github Registry stage('Docker Pull Image') { steps { sh 'docker pull ghcr.io/sslcom/codesigner:latest' } } // 3) Zbuduj projekt lub rozwiązanie dotnet i wszystkie jego zależności. // Po utworzeniu pliku dll lub exe skopiuj go do folderu „packages” w celu podpisania 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) Jest to krok, w którym utworzone pliki DLL (artefakty) zostaną podpisane za pomocą CodeSignTool. stage('Podpisz i zapisz artefakt Dotnet Core DLL') {steps { sh 'docker run -i --rm --dns 8.8.8.8 --network host --volume ${OBSZAR ROBOCZY}/packages:/codesign/examples -- wolumin ${OBSZAR ROBOCZY}/artifacts:/codesign/output -e NAZWA UŻYTKOWNIKA=${NAZWA UŻYTKOWNIKA} -e HASŁO=${HASŁO} -e CREDENTIAL_ID=${CREDENTIAL_ID} -e TOTP_SECRET=${TOTP_SECRET} -e NAZWA_ŚRODOWISKA=${ ENVIRONMENT_NAME} ghcr.io/sslcom/codesigner:latest sign -input_file_path=/codesign/examples/HelloWorld.dll -output_dir_path=/codesign/output' } post { always { archiveArtifacts artefakty: "artifacts/HelloWorld.dll", onlyIfSuccessful: true } } } } }
Przykładowy potok Jenkinsa
Sprawdź przykładowy potok Jenkins, na którym utworzyliśmy https://github.com/SSLcom/codesigner-jenkins-sampleInne przewodniki dotyczące integracji zdalnego podpisywania
- Integracja Cloud Code Signing z CircleCI
- Integracja Cloud Code Signing z działaniami GitHub
- Integracja Cloud Code Signing z GitLab CI
- Integracja Cloud Code Signing z Travis CI
- Integracja podpisywania kodu w chmurze z usługą Azure DevOps
- Automatyzacja podpisywania kodu w chmurze z usługami CI/CD
Potrzebujesz niestandardowych rozwiązań?
Dzięki naszej wiedzy eksperckiej i pięciogwiazdkowemu personelowi pomocy technicznej jesteśmy gotowi i chętni do współpracy z Tobą w zakresie niestandardowych rozwiązań lub rabatów na podpisywanie na dużą skalę na poziomie przedsiębiorstwa. Wypełnij poniższy formularz, a skontaktujemy się z Tobą.