jenkinsでgithubにSSH鍵認証でアクセスする方法。
SSH鍵生成
SSH鍵を登録するユーザで以下を実行。
$ ssh-keygen -t rsa
~/.ssh配下に以下のファイルが生成される。
ファイル名 | 鍵の種類 | 登録先 |
---|---|---|
id_rsa | 秘密鍵 | github |
id_rsa.pub | 公開鍵 | jenkins |
GitHubにSSH公開鍵登録
Githubに生成した公開鍵を登録。
-
[Setting]-> [SSH and GPG Keys]
-
[New SSH Key]を押下。
-
Keyに公開鍵(id_rsa.pub)の内容をコピペし[ADD SSH Key]を押下。
-
SSH Keyでgithubにアクセスできることを確認。
$ ssh -T git@github.com
最初のアクセスの場合はKnown hostsに登録する。
以下のように表示されれば成功。
Hi xxx! You've successfully authenticated, but GitHub does not provide shell access.
JenkinsのGithubアクセスの設定
-
[+新規ジョブ作成] を押下。
-
[ソースコード管理]でGitを選択。
-
Jenkins Credentials Provider: Jenkins画面で[種類]で[SSHユーザ名と秘密鍵]を選択。
-
秘密鍵で[直接入力]を選択し、[ADD]を押下後秘密鍵(id_rsa)の内容をコピペ。鍵生成時、パスフレーズを設定した場合はパスフレーズも設定。
-
[追加]を押下。
-
[Build Step]など、その他必要な設定を行ったあと[保存]を押下。
-
[ビルド実行]を行い、正常に稼働するか確認。
Pipeline内でgithubからチェックアウト
pipeline {
agent any
stages {
stage('build') {
steps {
echo 'checkout from Github'
checkout scmGit(branches: [[name: '*/master']], extensions: [], userRemoteConfigs: [[credentialsId: '<認証情報IDを指定>', url: '<SSH用URLを指定>']])
}
}
}
}