方法/步骤
安装jenkins
参照官网wiki,如下图:
安装后的jenkin在/var/lib/jenkins启动关闭jenkins:
sudo /etc/init.d/jenkins startsudo /etc/init.d/jenkins stop
Jenkins安装完毕后,可以通过浏览器,例如192.168.16.183:8080,此处IP地址为Jenkins所在机器的IP地址。
配置jenkins
Jenkins安装好之后,需要为其安装gitlab插件:在主面板上点击Manage Jenkins ->Manage Plugins,选择安装Gitlab Plugin和Gitlab Hook Plugin。
搭建gitlab源码服务器
参照官网wiki,如下图:
安装完之后默认是只能本机通过localhost访问的,修改/etc/gitlab/gitlab.rb中的对应配置项如下:external_url ‘http://your ip:8080’nginx[‘listen_addresses’] = [‘your ip’]nginx[‘listen_port’] = 8080
配置SSH key
由于jenkins需要从gitlab上拉取代码,通过ssh方式。所以需要在jenkins机器上安装git,并且将jenkins机器上生成的ssh密钥的公钥(id_rsa.pub中的内容)添加到gitlab的ssh keys中:
在jenkins安装机器上安装git
sudo apt-get install git
配置username和Email,生成ssh密钥
git config –global user.name “your name”git config –global user.email “your email”ssh-keygen -t rsa -C “10010@gmail.com”
拷贝公钥内容填到gitlab服务器
配置GitLab connections连接到gitlab拉取代码使用,配置证书,使用gitlab api token。token从gitlab中获取,在个人设置中有Access Token一栏,创建一个token,填入jenkins的系统管理 ->系统设置 ->gitlab配置中。
Test Connection,显示success则表示配置成功。
测试集成环境
新建一个项目,源码管理选git,填入对应的仓库URL,配置 Credentials,这里可以选择用ssh username with private key(其他的我也没试成功过。。),输入用户名和对应的私钥即可
接下来构建触发器选择Build when a change is pushed to GitLab. GitLab CI Service URL: …
添加hook
由于我们的jenkins任务由webhook事件来通知,所以需要将上面的CIservice URL添加到gitlab对应项目的Integrations配置中。
RUN
配置完之后apply,保存。jenkins任务就新建完成了此时我们在本地push代码到gitlab服务器,可以看到:成功地触发一次jenkins构建,效果如下:
至此jenkins+gitlab持续集成环境搭建完成!
检查是否git-server允许ssh认证方式以下步骤默认git-server允许ssh连接
检查是否添加jenkins所在服务器ssh-key至git-server中
检查jenkins服务启动用户是否通过在git-server中添加ssh-key的用户启动的
建议jenkins服务器通过普通用户启动服务,避免jenkins沦陷后服务器直接被提权
1.通过Jenkins web页面添加Git pluginManage Jenkins->Manage Plugins->Available中选择Git Plugin安装,
注意要填写user name和 email地址,否则日后会碰到git tag的错误
2.在Jenkins使用的机器上创建Git用户所需要的公钥
具体步骤参考前面Git server文章
http://blog.csdn.net/sheismylife/article/details/7204345
但是注意,要将最后生成的.ssh目录下的公钥和私钥文件复制到/var/lib/jenkins/.ssh目录下,否则git clone命令会报错
3.修改jenkins目录权限
chmod -R 777 /var/lib/jenkins
4.现在可以通过web页面创建一个项目Test,然后设置该项目使用Git作为版本管理。
并且设置repository路径,比如我的:git@S1:cml.git
5.在build选项的pom文件指定你需要执行的pom.xml路径
比如我的一个测试工程名叫client,是个maven工程,我设置为client/pom.xml
6.现在可以点击左侧的Build now进行测试
一切OK,则没有错误日志。在Build History中可以看到测试结果,有没有错误。
7.Email发送设置
在Manage Jenkins->Configure System->Email Notification中,设置SMTP发送的基本信息,点击Advanced,可以填写用户名和密码。还有一个测试按钮可以用来发送测试设置是否正确。
同时在Test项目中的Building Settings打勾选中E-mail
Notification,点击右边的问号,会出现帮助文档,说明在四种情况下会发送email,填写接受email的地址,然后故意将client代码
修改到不能编译通过。然后点击Build now按钮测试一下。果然收到email.
8.检查代码更新并编译
可以通过Poll SCM来设置定时检查编译功能
比如*/5 * * * * 就是每隔5分钟检查一次,如果git仓库中有更新,则执行build *** 作。
9.使用Maven私服加快下载速度
如我这篇文章所述,用私服可以避免下载过慢问题,也可以绕过公司内部外网限制问题。
http://blog.csdn.net/sheismylife/article/details/7209722
Jenkins的.m2目录路径在:/var/lib/jenkins/.m2/
首先清空里面所有的jar包,然后创建settings.xml文件,并编辑内容如下:
源码打印?
<settings>
<mirrors>
<mirror>
<!--This sends everything else to /public -->
<id>nexus</id>
<mirrorOf>*</mirrorOf>
<url>http://S1:8081/nexus/content/groups/public</url>
</mirror>
</mirrors>
<profiles>
<profile>
<id>nexus</id>
<!--Enable snapshots for the built in central repo to direct -->
<!--all requests to nexus via the mirror -->
<repositories>
<repository>
<id>central</id>
<url>http://central</url>
<releases><enabled>true</enabled></releases>
<snapshots><enabled>true</enabled></snapshots>
</repository>
</repositories>
<pluginRepositories>
<pluginRepository>
<id>central</id>
<url>http://central</url>
<releases><enabled>true</enabled></releases>
<snapshots><enabled>true</enabled></snapshots>
</pluginRepository>
</pluginRepositories>
</profile>
</profiles>
<activeProfiles>
<!--make the profile active all the time -->
<activeProfile>nexus</activeProfile>
</activeProfiles>
</settings>
现在点击build now测试一下,打开console output,看看命令行输出结果,如果发现从S1下载jar包,就正确。和不用私服的比较了一下,节省了1分多钟.
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)