之前用的Jenkins都是别人配置好的现成的,这次因为是自己的项目,只能自己动手。
根据官方教程 https://jenkins.io/doc/book/installing/#debian-ubuntu,安装过程还是很顺利的。安好之后就安心的睡觉去了。
但是第二天想要再登录的时候,问题来了。根据自己头一天配置时设的用户名和密码怎么都登录不进去,最后查到https://stackoverflow.com/a/45076406/2177408,还是要用admin的用户名和最初的那个很长的hash密码(~/.jenkins/secrets/initialAdminPassword)来登录。
登录进去之后,下一步自然就是配置git push的hook。
显示根据http://www.cnblogs.com/dojo-lzz/p/5125619.html来配置,写bash。这里要注意,github credentials可以写https的。
然后build,发现git pull会一直反馈fatal: Not a git repository (or any of the parent directories): .git或者fatal: Could not switch to '.git': Permission denied,后来发现原因是不知道什么时候把.git的读写权限设成只有root可以操作了,于是chmod 777(664不起作用)。然后发现自己的账户没问题了,jenkins依然没有权限,通过 cat /etc/passwd查到jenkins的username,然后sudo chown -R jenkins .git/。至此,jenkins终于能够访问.git了。
之后就是根据https://help.github.com/articles/generating-a-new-ssh-key-and-adding-it-to-the-ssh-agent/#platform-linux上的步骤建公钥和私钥,注意eval “$(ssh-agent -s)”这一步不能省。然后发现自己的用户可以用ssh来git pull了,jenkins依然不行。这才意识到jenkins这个账户自己也要有ssh key,遂sudo su jenkins切换到jenkins的用户,建立公私钥。到此为止,git这一步已经没有问题了。
Jenkins手动操作:https://stackoverflow.com/questions/8072700/how-to-restart-jenkins-manually
重启Jenkins:
On Ubuntu when installed through apt-get
/dpkg
:
$ sudo /etc/init.d/jenkins restart
Usage: /etc/init.d/jenkins {start|stop|status|restart|force-reload}`
insufficient permission for adding an object to repository database
user@M063:/var/www/html/app/.git/objects$ sudo chmod 777 -R .git/objects
user@M063:/var/www/html/app/.git/objects$ sudo chown -R user:user .git/objects/