概要
AWS EC2に立てたJenkinsのソースコード管理でGitHubのprivateリポジトリを使う。
なかなかうまくいかなくてハマったので備忘録を兼ねてメモ。
環境
- AWS EC2(OS: Amazon Linux 2)
- Jenkins 2.235.1
1. Jenkinsにgitを認識させる
これに気付かずめっちゃハマった。
- Jenkinsの管理 > Global Tool Configuration からGitを設定する
- install済のgitのパスを指定する
- 自動インストールを選択する
- どうせgitは使うと思うので、サーバーにgitをinstallして設定した
$ sudo yum install -y git
$ git --version
git version 2.23.3
$ which git
/usr/bin/git
2. 公開鍵と秘密鍵を作成する
-
/var/lib/jenkins/.ssh/
に鍵を作成する - 公開鍵: id_rsa_github.pub
- 秘密鍵: id_rsa_github
- パスフレーズはなしでOK
- デフォルトだとjenkinsユーザーにスイッチできないのでrootで作成して所有者を変更する
-
/etc/passwd/
を見るとjenkinsユーザーは/bin/false
// .sshディレクトリを作成する
$ cd /var/lib/jenkins/
$ sudo mkdir .ssh
$ sudo chmod 700 .ssh/
$ ls -la | grep ssh
drwx------ 2 root root 6 Jun 29 15:08 .ssh
// 鍵を作成する
$ sudo su -
# cd /var/lib/jenkins/.ssh/
# ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): id_rsa_github
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in id_rsa_github.
Your public key has been saved in id_rsa_github.pub.
// 所有者を変更
# chown jenkins:jenkins id_rsa_github.pub
# chown jenkins:jenkins id_rsa_github
# cd ../
# pwd
/var/lib/jenkins
# chown jenkins:jenkins .ssh/
# ls -la | grep ssh
drwx------ 2 jenkins jenkins 52 Jun 29 15:14 .ssh
# exit
3. .ssh/config
を作成する
-
id_rsa
以外の名前で作成した場合はconfigで設定する必要あり -
id_rsa
の場合はデフォルトで見に行くので不要(のはず)
$ sudo touch .ssh/config
$ sudo vi .ssh/config
Host github.com
HostName github.com
IdentityFile ~/.ssh/id_rsa_github
User git
// 所有者を変更
$ sudo chown jenkins:jenkins .ssh/config
4. GitHubに公開鍵を登録する
5. ssh接続の確認
- サーバーからsshが通るか確認しておく
$ sudo -u jenkins ssh -T github.com
Hi tamorieeeen/repositpry_name! You've successfully authenticated, but GitHub does not provide shell access.
6. JenkinsのJobで設定する
- ソースコード管理でGitを選択
- リポジトリ
- リポジトリURL: GitHubのClone with SSHのURL
- 認証情報: なし
- 今回はサーバー上でid_rsaを管理しているので認証情報はなしでOK