Jenkins 파일 생성 및 코드 편집기에서 파이프라인 정의
파이프라인 { 에이전트 모든 옵션 { buildDiscarder(logRotator(numToKeepStr: "5")) disableConcurrentBuilds() }
Jenkins를 구성하여 코드 편집기에서 .NET 도구 설정
클릭 젠킨스 관리 Jenkins 대시보드의 탭.
페이지를 아래로 스크롤하고 전역 도구 구성을 클릭합니다.
아래로 스크롤하여 클릭하십시오. .NET SDK 설치.
.NET SDK의 값을 복사하여 코드 편집기에 붙여넣습니다.
도구 { dotnetsdk "DOTNET_CORE_3.1.24" }
plugins.jenkins.io로 이동하여 .NET SDK 플러그인을 설치합니다.
$XNUMX Million 미만 젠킨스 관리 대시보드에서 확인 플러그인 관리 .NET SDK 플러그인이 설치되었는지 확인합니다.
플러그인이 설치되었는지 확인한 후 .NET SDK 설치로 돌아가서 .NET SDK 플러그인의 올바른 버전 및 릴리스 세부 정보가 설정되었는지 확인하십시오. 다음을 클릭하세요. 찜하기 버튼을 클릭합니다.
코드 편집기에서 환경 변수 설정
environment { USERNAME = credentials('es-username') // SSL.com 계정 사용자 이름. PASSWORD = credentials('es-password') // SSL.com 계정 비밀번호. CREDENTIAL_ID = credentials('es-credential-id') // 인증서 서명을 위한 자격 증명 ID입니다. TOTP_SECRET = 자격 증명('es-totp-secret') // OAuth TOTP 비밀(https://www.ssl.com/how-to/automate-esigner-ev-code-signing) ENVIRONMENT_NAME = 'PROD' // SSL .com 환경 이름. 데모 계정의 경우 'TEST'일 수 있으며 그렇지 않으면 'PROD'가 됩니다. }
Jenkins 대시보드에서 각 변수의 값을 찾을 수 있습니다. 보안> 관리 신임장.
아티팩트 디렉토리 생성, 도커 이미지 가져오기, .NET 빌드 및 아티팩트 코드 서명 단계 설정
1) 서명된 아티팩트 파일과 서명되지 않은 아티팩트 파일을 저장할 아티팩트 디렉토리를 만듭니다.
stage('아티팩트 디렉토리 생성') { steps { sh 'mkdir ${WORKSPACE}/artifacts' sh 'mkdir ${WORKSPACE}/packages' } }2) Github 레지스트리에서 Codesigner Docker 이미지를 가져옵니다.
stage('도커 풀 이미지') { 단계 { sh '도커 풀 ghcr.io/sslcom/codesigner:latest' } }3) dotnet 프로젝트 또는 솔루션 및 모든 종속성을 빌드합니다. dll 또는 exe 파일이 생성된 후 서명을 위해 'packages' 폴더에 복사합니다.
stage('Build Dotnet') { steps { sh 'dotnet build dotnet/HelloWorld.csproj -c 릴리스' sh 'cp dotnet/bin/Release/netcoreapp3.1/HelloWorld-0.0.1.dll ${WORKSPACE}/packages/ HelloWorld.dll' } }4) 생성된 DLL(artifact) 파일을 CodeSignTool로 서명하는 단계입니다.
stage('Dotnet Core DLL 아티팩트 서명 및 저장') { steps { sh 'docker run -i --rm --dns 8.8.8.8 --network host --volume ${WORKSPACE}/packages:/codesign/examples -- 볼륨 ${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' } 게시 { 항상 { archiveArtifacts artifacts: "artifacts/HelloWorld.dll", onlyIfSuccessful: true } } } } }
Github 리포지토리 만들기
Github에서 각 푸시 명령 구성 요소를 복사합니다.코드 편집기의 새 터미널에 명령을 작성하여 코드를 푸시합니다.
코드를 푸시한 후 Github 계정으로 이동하여 프로젝트의 URL 링크를 복사합니다.
Jenkins 계정으로 이동하여 직업 만들기 링크를 클릭하십시오.
왼쪽 메뉴에서 멀티브랜치 파이프라인, 프로젝트 이름을 설정하고 OK 버튼을 클릭합니다.
$XNUMX Million 미만 분기 소스, 고르다 힘내 Github 프로젝트의 URL 링크를 붙여넣습니다.
아래로 스크롤 다중 분기 파이프라인 트리거 스캔. 에 대한 확인란을 선택하십시오. 달리 실행되지 않는 경우 주기적으로. 당신은 선택할 수 있습니다 2 분.
클릭 찜하기 버튼을 클릭합니다.
Jenkins 계정으로 돌아가서 프로젝트를 클릭하고 파이프라인이 시작되었는지 확인합니다.
Jenkins 프로젝트를 클릭하고 선택하십시오. 지금 멀티브랜치 파이프라인 스캔 대시 보드에서.
콘솔 출력
아래로 스크롤하여 코드 서명이 성공했는지 확인합니다.
전체 스크립트
파이프라인 정의
파이프라인 { 에이전트 모든 옵션 { buildDiscarder(logRotator(numToKeepStr: "5")) disableConcurrentBuilds() }
빌드 도구 설치
도구 { dotnetsdk "DOTNET_CORE_3.1.24" //https://plugins.jenkins.io/dotnet-sdk }
환경 변수 만들기
environment { USERNAME = credentials('es-username') // SSL.com 계정 사용자 이름. PASSWORD = credentials('es-password') // SSL.com 계정 비밀번호. CREDENTIAL_ID = credentials('es-credential-id') // 인증서 서명을 위한 자격 증명 ID입니다. TOTP_SECRET = 자격 증명('es-totp-secret') // OAuth TOTP 비밀(https://www.ssl.com/how-to/automate-esigner-ev-code-signing) ENVIRONMENT_NAME = 'PROD' // SSL .com 환경 이름. 데모 계정의 경우 'TEST'일 수 있으며 그렇지 않으면 'PROD'가 됩니다. }
빌드 및 서명 단계용 스크립트
stages { // 1) 서명 및 서명되지 않은 아티팩트 파일 저장을 위한 아티팩트 디렉터리 생성 stage('아티팩트 디렉터리 만들기') { steps { sh 'mkdir ${WORKSPACE}/artifacts' sh 'mkdir ${WORKSPACE}/packages' } } / / 2) Github Registry에서 Codesigner Docker 이미지 가져오기 stage('Docker Pull Image') { steps { sh 'docker pull ghcr.io/sslcom/codesigner:latest' } } // 3) dotnet 프로젝트 또는 솔루션 빌드 및 모든 그것의 의존성. // dll 또는 exe 파일 생성 후 'packages' 폴더에 복사하여 서명 단계('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) 생성된 DLL(아티팩트) 파일을 CodeSignTool로 서명하는 단계입니다. stage('Dotnet Core DLL 아티팩트 서명 및 저장') { steps { sh 'docker run -i --rm --dns 8.8.8.8 --network host --volume ${WORKSPACE}/packages:/codesign/examples -- 볼륨 ${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' } 게시 { 항상 { archiveArtifacts artifacts: "artifacts/HelloWorld.dll", onlyIfSuccessful: true } } } } }
샘플 Jenkins 파이프라인
우리가 생성한 샘플 Jenkins 파이프라인을 확인하십시오. github.com/SSLcom/codesigner-jenkins-sample기타 원격 서명 통합 가이드
- CircleCI와 클라우드 코드 서명 통합
- GitHub 작업과 Cloud Code Signing 통합
- GitLab CI와 클라우드 코드 서명 통합
- Travis CI와 클라우드 코드 서명 통합
- Azure DevOps와 클라우드 코드 서명 통합
- CI/CD 서비스를 통한 클라우드 코드 서명 자동화
맞춤형 솔루션이 필요하십니까?
우리의 전문 지식과 XNUMX성급 지원 직원을 통해 맞춤형 솔루션 또는 엔터프라이즈 수준의 대량 서명 할인에 대해 귀하와 협력할 준비가 되어 있습니다. 아래 양식을 작성해 주시면 연락드리겠습니다.