実現すること
- GitLabのGitにはhttpsでアクセス
- GitLabにはssh公開鍵は登録しない
手順
Jenkins機で作業する前に、ローカルのvagrantにて実施。
まず普通にやろうとすると、以下のようにRuntimeExceptionが出る。
Jenkinsが動いているJavaにGitLabの証明書を登録する。
まず、Jenkinsが動いているJavaを確認。
[root@localhost ~]# ps auxw|grep jenkins
jenkins 6051 13.6 27.3 2001624 278948 ? Ssl 00:44 1:29 /etc/alternatives/java -Dcom.sun.akuma.Daemon=daemonized -Djava.awt.headless=true -Dhudson.util.ProcessTree.disable=true -DJENKINS_HOME=/var/lib/jenkins -jar /usr/lib/jenkins/jenkins.war --logfile=/var/log/jenkins/jenkins.log --webroot=/var/cache/jenkins/war --daemon --httpPort=8080 --ajp13Port=8009 --debug=5 --handlerCountMax=100 --handlerCountMaxIdle=20 --prefix=/jenkins
root 6141 0.0 0.0 107460 940 pts/0 S+ 00:55 0:00 grep jenkins
keytoolを使ってGitLabの証明書を登録する。尚、cerでもpemでもどちらでも良い。
[root@localhost ~]# ll /etc/alternatives/java
lrwxrwxrwx 1 root root 46 10月 29 04:05 2014 /etc/alternatives/java -> /usr/lib/jvm/jre-1.7.0-openjdk.x86_64/bin/java
[root@localhost ~]# cd /usr/lib/jvm/jre-1.7.0-openjdk.x86_64/bin/
[root@localhost bin]# keytool -importcert -v -trustcacerts -file /vagrant/Downloads/gitlabkey/cacert.cer -keystore ../lib/security/jssecacerts -alias gitlab
キーストアのパスワードを入力してください:
新規パスワードを再入力してください:
.
.
証明書がキーストアに追加されました
JENKINS_HOME(/var/lib/jenkins)に.gitconfigを作成する。
尚、GitLabのpemもここに置いた。
[http]
sslcainfo=/var/lib/jenkins/gitlab.pem
この時点でエラーは401 Unauthorizedだけになるので、Credentialsを追加する。
これでエラーは解消し、リポジトリからclone出来るようになった。