以下是本人使用jenkins自动部署django项目所使用的方法,django项目是现成的,主要讲jenkins的配置
一、jenkins的安装
- 搞一台服务器,我这边由于环境限制,本地虚拟机不方便操作,就直接去腾讯云上搞了台免费1个月的机器(反正就是练练手),机器的话选择预装docker的,不用自己装了。
- 我这边选择的是把jenkins部署在docker内(网上现成的方法,非常简单,下面是链接,看前面部分就行了)
docker search jenkins
,这里选第二个,jenkins/jenkinsdocker pull jenkins/jenkins
,把镜像从仓库拉到本地docker images
,已经拉到本地了docker run -d --name=jenkins -p 9090:8080 -u=root -v /root/jenkins_home/:/var/jenkins_home jenkins/jenkins:latest
- 要改容器名字的话修改–name=xxxx;改服务端口的话修改: -p 外部访问端口:容器内端口;改数据挂载的话修改: -v 宿主机目录:容器内目录。(我啥也没改,直接跑就完了)
docker ps -a
,看下已经跑起来的容器(如果没有跑起来,先看下日志,docker logs 容器id/name
,根据报错原因进行解决,我遇到过一个报错:Failed to start thread “GC Thread#0” - pthread_create failed (EPERM) for attributes: stacksize: 1024k, guardsize: 4k, detached.,是因为docker没有执行权限导致的,可以在run的时候添加--privileged
解决该问题)docker logs 容器id/name
,通过该命令拿到密匙,首次进入jenkins要用的- 去腾讯云设置刚才的9090端口可以访问,不然可请求不到这个端口
- 通过服务器的公网ip+9090端口可以访问jenkins了
- 刚进入会要求把密钥输进去的,进去后按照提示开始安装各种基本的插件,以及建立个人账户。
- 如果卡在Please wait while Jenkins is getting ready to work …,一直进不去,可以到宿主机挂载目录下修改镜像源地址,
vim /root/jenkins_home/hudson.model.UpdateCenter.xml
,把原地址https://updates.jenkins.io/update-center.json改成https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json,保存退出后重启下容器,再进入jenkins,稍等下就可以进去了。 - 中文插件:进入Manage Jenkins-plugins,搜索并安装Locale plugin插件,安装完成重启后,前端界面很多就是中文展示了。
二、配置jenkins
- 进入系统工具-全局工具配置-Git installations,设置git命令的路径后,保存退出。
whereis git
,找到jenkins所在宿主机的git位置- 需要设置跨站请求,避免使用webhook时无法回调jenkins
具体可以参考下面这篇文章进行设置:
Error 403 No valid crumb was included in the request 报错解决 容器化jenkins关闭CSRF
-
我的jenkins是运行在docker内,所以稍微复杂点。进入系统工具-全局安全配置-Authentication-授权策略,选择登录用户可以做任何事,同时勾选“匿名用户具有可读权限”。
-
由于用的是最新版的jenkins,跨域的设置无法在后台页面直接操作了,需要修改服务器上jenkins的配置文件。我们进入运行jenkins的容器(这个没有挂载到外面,只能进容器改了)。
docker exec -u root -it 容器id/name bash
-
进去后需要先安装vim,或vi,不然无法修改配置文件。使用apt-get命令或者yum进行安装:
apt-get install vim
-
如果安装失败,提示:Unable to locate package vim,那就需要先运行
apt-get update
;update完成之后再运行:apt-get install vim
;安装过程中由于网络问题导致各种安装失败,没关系,按照提示操作,最后可以安装成功。(有了vim之后可以配置下apt-get的镜像文件,方便以后下载快点,这边不再累述,网上都有) -
vim /usr/local/bin/jenkins.sh
进入jenkins的配置文件,找到exec java
那一行,添加:-Dhudson.security.csrf.GlobalCrumbIssuerConfiguration.DISABLE_CSRF_PROTECTION=true
;保存后退出,最终效果如下:
exec java -Duser.home="$JENKINS_HOME" -Dhudson.security.csrf.GlobalCrumbIssuerConfiguration.DISABLE_CSRF_PROTECTION=true "${java_opts_arra