สร้างไฟล์ Jenkins และกำหนดไปป์ไลน์ในโปรแกรมแก้ไขโค้ดของคุณ
ไปป์ไลน์ { ตัวแทนตัวเลือกใด ๆ { buildDiscarder (logRotator (numToKeepStr: "5")) ปิดการใช้งาน ConcurrentBuilds () }
ตั้งค่าเครื่องมือ .NET ในตัวแก้ไขโค้ดโดยกำหนดค่า Jenkins
คลิก จัดการเจนกินส์ แท็บบนแดชบอร์ด Jenkins ของคุณ
เลื่อนลงมาที่หน้าและคลิก Global Tool Configuration
เลื่อนลงแล้วคลิก การติดตั้ง .NET SDK.
คัดลอกค่าสำหรับ .NET SDK แล้ววางลงในโปรแกรมแก้ไขโค้ดของคุณ
เครื่องมือ { dotnetsdk "DOTNET_CORE_3.1.24" }
ไปที่ plugins.jenkins.io และติดตั้ง .NET SDK plugin
ภายใต้ จัดการเจนกินส์ บนแดชบอร์ดของคุณ ตรวจสอบ จัดการปลั๊กอิน เพื่อยืนยันว่าได้ติดตั้งปลั๊กอิน .NET SDK แล้ว
หลังจากยืนยันว่าได้ติดตั้งปลั๊กอินแล้ว ให้กลับไปที่ .NET SDK INSTALLATIONS และตรวจสอบให้แน่ใจว่าได้ตั้งค่าเวอร์ชันและรายละเอียดการเปิดตัวของปลั๊กอิน .NET SDK ที่ถูกต้อง ดำเนินการต่อเพื่อคลิก ลด ปุ่ม
ตั้งค่าตัวแปรสภาพแวดล้อมในตัวแก้ไขโค้ดของคุณ
สภาพแวดล้อม { USERNAME = ข้อมูลรับรอง ('es-ชื่อผู้ใช้') // ชื่อผู้ใช้บัญชี SSL.com PASSWORD = credentials('es-password') // รหัสผ่านบัญชี SSL.com CREDENTIAL_ID = ข้อมูลประจำตัว ('es-crendential-id') // รหัสประจำตัวสำหรับการลงนามใบรับรอง TOTP_SECRET = ข้อมูลรับรอง ('es-totp-secret') // OAuth TOTP Secret (https://www.ssl.com/how-to/automate-esigner-ev-code-signing) ENVIRONMENT_NAME = 'PROD' // SSL .com ชื่อสิ่งแวดล้อม. สำหรับบัญชีทดลอง สามารถเป็น 'TEST' มิฉะนั้นจะเป็น 'PROD' }
คุณจะพบค่าสำหรับตัวแปรแต่ละตัวบนแดชบอร์ด Jenkins ของคุณภายใต้ ความปลอดภัย> จัดการ หนังสือรับรอง
กำหนดขั้นตอนสำหรับการสร้างไดเร็กทอรีสิ่งประดิษฐ์ การดึงอิมเมจนักเทียบท่า การสร้าง .NET และการเซ็นโค้ดของอาร์ติแฟกต์
1) สร้างไดเรกทอรีสิ่งประดิษฐ์สำหรับไฟล์สิ่งประดิษฐ์ที่ลงชื่อและไม่ได้ลงนามในร้านค้า
stage ('สร้างไดเรกทอรีสิ่งประดิษฐ์') { ขั้นตอน { sh 'mkdir ${WORKSPACE}/artifacts' sh 'mkdir ${WORKSPACE}/packages' } }2) ดึง Codesigner Docker Image จาก Github Registry
stage('Docker Pull Image') { ขั้นตอน { sh 'docker pull ghcr.io/sslcom/codesigner:latest' } }3) สร้างโปรเจ็กต์ dotnet หรือโซลูชันและการพึ่งพาทั้งหมด หลังจากสร้างไฟล์ dll หรือ exe แล้ว ให้คัดลอกไปยังโฟลเดอร์ 'packages' เพื่อลงนาม
เวที ('สร้าง Dotnet') { ขั้นตอน { 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 Artifact') { ขั้นตอน { 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/HelloWorld.dll", onlyIfSuccessful: true } } } } } } } } } }
สร้าง Github repo
คัดลอกส่วนประกอบคำสั่ง push บน Githubเขียนคำสั่งที่เทอร์มินัลใหม่ในตัวแก้ไขโค้ดของคุณเพื่อส่งโค้ด
หลังจากกดรหัสแล้ว ไปที่บัญชี Github ของคุณและคัดลอกลิงก์ URL ของโครงการของคุณ
ไปที่บัญชี Jenkins ของคุณแล้วคลิก สร้างงาน ลิงค์
Choose ท่อส่งหลายสาขา, ตั้งชื่อโปรเจ็กต์ของคุณ แล้วคลิก OK ปุ่ม
ภายใต้ แหล่งที่มาของสาขาให้เลือก ไป และวางลิงก์ URL ของโปรเจ็กต์ Github ของคุณ
เลื่อนลงไปที่ สแกนทริกเกอร์ไปป์ไลน์หลายสาขา. ทำเครื่องหมายในช่องสำหรับ เป็นระยะถ้าไม่ได้เรียกใช้เป็นอย่างอื่น. คุณสามารถเลือก 2 นาที.
คลิก ลด ปุ่ม
กลับไปที่บัญชี Jenkins ของคุณ คลิกที่โครงการของคุณ และยืนยันว่าไปป์ไลน์ได้เริ่มต้นขึ้นแล้ว
คลิกที่โปรเจ็กต์ Jenkins ของคุณแล้วเลือก สแกนไปป์ไลน์หลายสาขาทันที บนแดชบอร์ด
คลิก เอาต์พุตคอนโซล
เลื่อนลงมาและตรวจสอบว่าการลงชื่อรหัสสำเร็จหรือไม่
สคริปต์ทั้งหมด
กำหนดไปป์ไลน์
ไปป์ไลน์ { ตัวแทนตัวเลือกใด ๆ { buildDiscarder (logRotator (numToKeepStr: "5")) ปิดการใช้งาน ConcurrentBuilds () }
ติดตั้งเครื่องมือสร้าง
เครื่องมือ { dotnetsdk "DOTNET_CORE_3.1.24" //https://plugins.jenkins.io/dotnet-sdk }
สร้างตัวแปรสภาพแวดล้อม
สภาพแวดล้อม { USERNAME = ข้อมูลประจำตัว ('es-ชื่อผู้ใช้') // ชื่อผู้ใช้บัญชี SSL.com PASSWORD = credentials('es-password') // รหัสผ่านบัญชี SSL.com CREDENTIAL_ID = ข้อมูลประจำตัว ('es-crendential-id') // รหัสประจำตัวสำหรับการลงนามใบรับรอง TOTP_SECRET = ข้อมูลรับรอง ('es-totp-secret') // OAuth TOTP Secret (https://www.ssl.com/how-to/automate-esigner-ev-code-signing) ENVIRONMENT_NAME = 'PROD' // SSL .com ชื่อสิ่งแวดล้อม. สำหรับบัญชีทดลอง สามารถเป็น 'TEST' มิฉะนั้นจะเป็น 'PROD' }
สคริปต์สำหรับขั้นตอนการสร้างและลงนาม
ขั้นตอน { // 1) สร้างไดเรกทอรีสิ่งประดิษฐ์สำหรับจัดเก็บไฟล์สิ่งประดิษฐ์ที่ลงนามและไม่ได้ลงนาม / 2) ดึง Codesigner Docker Image จาก Github Registry stage('Docker Pull Image') { ขั้นตอน { sh 'docker pull ghcr.io/sslcom/codesigner:latest' } } // 3) สร้าง dotnet project หรือ solution และทั้งหมด การพึ่งพาอาศัยกัน // หลังจากสร้างไฟล์ dll หรือ exe แล้ว ให้คัดลอกไปยังโฟลเดอร์ 'packages' สำหรับขั้นตอนการลงนาม ('Build Dotnet') { ขั้นตอน { 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 (artifact) ที่สร้างขึ้นจะได้รับการเซ็นชื่อด้วย CodeSignTool stage('ลงชื่อและบันทึก Dotnet Core DLL Artifact') { ขั้นตอน { 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/HelloWorld.dll", onlyIfSuccessful: true } } } } } } } } } }
ตัวอย่างท่อส่งของเจนกินส์
ตรวจสอบตัวอย่างไปป์ไลน์ของ Jenkins ที่เราสร้างขึ้น github.com/SSLcom/codesigner-jenkins-sampleคู่มือการรวมการเซ็นชื่อระยะไกลอื่นๆ
- การผสานรวมการเซ็นชื่อรหัสบนคลาวด์กับ CircleCI
- การผสานรวมการเซ็นชื่อรหัสบนคลาวด์กับ GitHub Actions
- การผสานรวมการเซ็นชื่อรหัสบนคลาวด์กับ GitLab CI
- การผสานรวมการเซ็นชื่อรหัสบนคลาวด์กับ Travis CI
- การรวมการลงนามรหัสบนคลาวด์กับ Azure DevOps
- ระบบอัตโนมัติลงนามรหัสบนคลาวด์ด้วยบริการ CI/CD
ต้องการโซลูชันที่กำหนดเองหรือไม่
ด้วยความรู้จากผู้เชี่ยวชาญและเจ้าหน้าที่สนับสนุนระดับห้าดาว เราพร้อมและยินดีที่จะทำงานร่วมกับคุณเกี่ยวกับโซลูชันแบบกำหนดเองหรือส่วนลดการลงนามจำนวนมากในระดับองค์กร กรอกแบบฟอร์มด้านล่าง แล้วเราจะติดต่อกลับไป