Jenkins-Git username / password credentials binding
สำหรับ Blog ถ้าใช้ Jenkins แล้วอยาก Binding Git โดยใช้ username / password อยู่ใน pipeline มีวิธีการตามนี้ครับ
withCredentials([gitUsernamePassword(credentialsId: 'git-jenkins', gitToolName: 'Default')]) {def commitServiceId = sh(script: """git ls-remote origin | grep "\$(echo "${params.BRANCH_ON_GIT}" | sed 's|origin/||')" | awk '{print \$1}'""", returnStdout: true).trim()COMMIT_SERVICE_ID = commitServiceIdecho "Commit Service ID: ${COMMIT_SERVICE_ID}"}
- git-jenkins - กำหนดได้จากหน้าจอ credentials ของ git Dashboard > Manage Jenkins > Credential (อยู่ส่วนของ Security) และเอาชื่อมาครับ
- gitToolName - มาจาก Dashboard > Manage Jenkins > Tools ส่วนของ Git Installation และเอาชื่อมาครับ
ถ้าใช้ตัวอย่าง PowerShell / Shell ผมมี recap ตัวอย่างให้ลองนำไปปรับใช้กันครับ
- Shell
withCredentials([gitUsernamePassword(credentialsId: 'my-credentials-id', gitToolName: 'git-tool')]) { sh 'git fetch --all'}
- Bash
withCredentials([gitUsernamePassword(credentialsId: 'my-credentials-id', gitToolName: 'git-tool')]) { bat 'git submodule update --init --recursive'}
- PowerShell
withCredentials([gitUsernamePassword(credentialsId: 'my-credentials-id', gitToolName: 'git-tool')]) { powershell 'git push'}
สุดท้ายสำหรับวิธีการนี้ แนะนำให้ใช้กับ Git ที่ยังต่อ username / password อยู่นะครับ ถ้าเป็นตัวใหม่ๆใช้ AccessToken / PAT หรือ การแลก Key จะ Secure กว่าคร้บ