gitlab+jenkins环境搭建.md
gitlab+jenkins自动化部署环境搭建
环境说明
| 系统 | 主机 | IP | 安装软件 | 
|---|---|---|---|
| CentOS 7 | study-1 | 192.168.100.51 | gitlab、git | 
| CentOS 7 | study-2 | 192.168.100.52 | jdk、maven、jenkins、git | 
| CentOS 7 | study-3 | 192.168.100.53 | tomcat、mysql、jenkins、git | 
所有系统的selinux和iptables都已经关闭,同时需要做好时间同步,机器的hosts文件如下:
192.168.100.51 study-1 gitlab.study.com
192.168.100.52 study-2
192.168.100.53 study-3
下面还需要在study-1机器上生成的公钥和私钥复制到study-2和study-3主机上。
[root@study-1 ~]# ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):
Created directory '/root/.ssh'.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
f0:02:05:f7:5c:9c:66:d2:25:42:42:a4:11:dc:27:92 root@study-1
The key's randomart image is:
+--[ RSA 2048]----+
|   .+B*.oooo.    |
|    E=o+oo*.     |
|    o..oo+       |
|     . o         |
|      . S        |
|       .         |
|                 |
|                 |
|                 |
+-----------------+
[root@study-1 ~]# ssh-copy-id root@192.168.100.52
[root@study-1 ~]# scp .ssh/id_rsa* root@192.168.100.52:/root/.ssh
[root@study-1 ~]# ssh-copy-id root@192.168.100.53
[root@study-1 ~]# scp .ssh/id_rsa* root@192.168.100.53:/root/.ssh
gitlab主机配置
下载
下载地址:https://mirror.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7/
安装
[root@study-1 ~]# yum install -y gitlab-ce-8.16.9-ce.0.el7.x86_64.rpm
配置
安装后修改配置文件中的如下内容:
[root@study-1 ~]# vim /etc/gitlab/gitlab.rb
......
external_url 'http://gitlab.study.com'
......
[root@study-1 ~]# gitlab-ctl reconfigure
[root@study-1 ~]# gitlab-ctl start
启动后需要登录:http://gitlab.study.com 然后去设置用户root的密码这里不做介绍。之后需要进行密钥的配置,这个比较简单就不错介绍
测试程序配置
这里的测试代码是用的如下的内容:https://git.oschina.net/zchuanzhao/jeesns.git
下面是在gitlab克隆测试的代码:

tomcat主机配置
jdk安装
[root@study-3 ~]# tar xf jdk-7u79-linux-x64.tar.gz -C /usr/local/
[root@study-3 ~]# ln -sv /usr/local/jdk1.7.0_79 /usr/local/java
‘/usr/local/java’ -> ‘/usr/local/jdk1.7.0_79’
[root@study-3 ~]# vim /etc/profile.d/java.sh
export JAVA_HOME=/usr/local/jdk1.7.0_79
export PATH=$PATH:$JAVA_HOME/bin
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
[root@study-3 ~]# . /etc/profile.d/java.sh
[root@study-3 ~]# java -version
java version "1.7.0_79"
Java(TM) SE Runtime Environment (build 1.7.0_79-b15)
Java HotSpot(TM) 64-Bit Server VM (build 24.79-b02, mixed mode)
tomcat安装
[root@study-3 ~]# tar xf apache-tomcat-7.0.72.tar.gz -C /usr/local/
[root@study-3 ~]# ln -sv /usr/local/apache-tomcat-7.0.72 /usr/local/tomcat
‘/usr/local/tomcat’ -> ‘/usr/local/apache-tomcat-7.0.72’
[root@study-3 ~]# vim /etc/profile.d/tocmat.sh
export PATH=$PATH:/usr/local/tomcat/bin
[root@study-3 ~]# . /etc/profile.d/tocmat.sh
[root@study-3 ~]# catalina.sh start
MySQL安装
[root@study-3 ~]# yum install -y perl-Data-Dumper
[root@study-3 ~]# tar xf mysql-5.6.31-linux-glibc2.5-x86_64.tar.gz -C /usr/local/
[root@study-3 ~]# ln -sv /usr/local/mysql-5.6.31-linux-glibc2.5-x86_64 /usr/local/mysql
‘/usr/local/mysql’ -> ‘/usr/local/mysql-5.6.31-linux-glibc2.5-x86_64’
[root@study-3 ~]# vim /etc/profile.d/mysql.sh
export PATH=$PATH:/usr/local/mysql/bin
[root@study-3 ~]# . /etc/profile.d/mysql.sh
[root@study-3 ~]# cd /usr/local/mysql
[root@study-3 mysql]# groupadd -r mysql
[root@study-3 mysql]# useradd -r -g mysql -M -s /sbin/nologin mysql
[root@study-3 mysql]# vim /etc/my.cnf
[mysqld]
datadir=/data/mydata
socket=/tmp/mysql.sock
symbolic-links=0
[mysqld_safe]
log-error=/data/mydata/err.log
pid-file=/var/run/mysql/mariadb.pid
!includedir /etc/my.cnf.d
[root@study-3 mysql]# mkdir -pv /data/mydata
[root@study-3 scripts]# ./scripts/mysql_install_db --datadir=/data/mydata/ --basedir=/usr/local/mysql --user=mysql
[root@study-3 mysql]# cp support-files/mysql.server /etc/init.d/mysqld
[root@study-3 mysql]# chmod +x /etc/init.d/mysqld
[root@study-3 mysql]# /etc/init.d/mysqld start
Starting MySQL.. SUCCESS! 
导入sql语句:
[root@study-3 ~]# mysql
mysql> create database jeesns character set utf8;
Query OK, 1 row affected (0.00 sec)
mysql> use jeesns
Database changed
mysql> source /root/jeesns.sql;
sql文件请在:http://git.oschina.net/zchuanzhao/jeesns 上面进行下载。
jenkins主机配置
下载路径:https://pkg.jenkins.io/redhat-stable/
jdk安装
[root@study-2 ~]# tar xf jdk-7u79-linux-x64.tar.gz -C /usr/local/
[root@study-2 ~]# ln -sv /usr/local/jdk1.7.0_79 /usr/local/java
‘/usr/local/java’ -> ‘/usr/local/jdk1.7.0_79’
[root@study-2 ~]# vim /etc/profile.d/java.sh
[root@study-2 ~]# . /etc/profile.d/java.sh
[root@study-2 ~]# chown -R root.root /usr/local/java/
[root@study-2 ~]# java -version
java version "1.7.0_79"
Java(TM) SE Runtime Environment (build 1.7.0_79-b15)
Java HotSpot(TM) 64-Bit Server VM (build 24.79-b02, mixed mode)
maven安装
[root@study-2 ~]# tar xf apache-maven-3.5.0-bin.tar.gz -C /usr/local/
[root@study-2 ~]# ln -sv /usr/local/apache-maven-3.5.0 /usr/local/maven
‘/usr/local/maven’ -> ‘/usr/local/apache-maven-3.5.0’
[root@study-2 ~]# vim /etc/profile.d/maven.sh
[root@study-2 ~]# . /etc/profile.d/maven.sh
[root@study-2 ~]# chown -R root.root /usr/local/maven/
[root@study-2 ~]# mvn -version
Apache Maven 3.5.0 (ff8f5e7444045639af65f6095c62210b5713f426; 2017-04-04T03:39:06+08:00)
Maven home: /usr/local/maven
Java version: 1.7.0_79, vendor: Oracle Corporation
Java home: /usr/local/jdk1.7.0_79/jre
Default locale: en_US, platform encoding: UTF-8
OS name: "linux", version: "3.10.0-327.el7.x86_64", arch: "amd64", family: "unix"
jenkins 安装
[root@study-2 ~]# yum install -y jenkins-2.46.2-1.1.noarch.rpm
[root@study-2 ~]# vim /etc/init.d/jenkins
···
candidates="
/usr/local/jdk1.7.0_79/bin/java  #需要添加jdk的路径
/etc/alternatives/java
/usr/lib/jvm/java-1.8.0/bin/java
/usr/lib/jvm/jre-1.8.0/bin/java
/usr/lib/jvm/java-1.7.0/bin/java
/usr/lib/jvm/jre-1.7.0/bin/java
/usr/bin/java
"
···
[root@study-2 ~]# systemctl daemon-reload
[root@study-2 ~]# /etc/init.d/jenkins start
Starting jenkins (via systemctl):                          [  OK  ]
在浏览器输入:http://192.168.100.52:8080,会提示需要登录密码:

第一次登录需要的密码是安装自动生成的,路径已经说明在/var/lib/jenkins/secrets/initialAdminPassword文件中。
插件安装
实用插件
iOS专用:Xcode integration
Android专用:Gradle plugin
Gitlab插件:GitLab Plugin 和 Gitlab Hook Plugin
Git插件: Git plugin
GitBuckit插件: GitBuckit plugin
签名证书管理插件: Credentials Plugin 和Keychains and Provisioning Profiles Management
FTP插件: Publish over FTP
脚本插件: Post-Build Script Plug-in
修改Build名称/描述(二维码): build-name-setter / description setter plugin
获取仓库提交的commit log: Git Changelog Plugin
自定义全局变量: Environment Injector Plugin
自定义邮件插件: Email Extension Plugin
获取当前登录用户信息: build-user-vars-plugin
显示代码测试覆盖率报表: Cobertura Plugin
来展示生成的单元测试报表,支持一切单测框架,如junit、nosetests等: Junit Plugin
其它: GIT plugin / SSH Credentials Plugin
安装插件
点击左侧的“系统管理”----"管理插件"------“已安装”---查找需要安装的插件:git-client/scm-api/git/publish over SSH//ssh
jenkins设置
密钥的配置
[root@study-2 opt]# cp /root/.ssh/* /var/lib/jenkins/.ssh/
[root@study-2 opt]# chown -R jenkins.jenkins /var/lib/jenkins/.ssh/
Global Tool Configuration 配置
点击左侧的“系统管理”----"Global Tool Configuration"
下面是jdk和git的配置:

下面是maven的配置:

Credentials 配置
点击左侧“Credentials”-->“System”-->在“Global credentials (unrestricted)”选择“Add Credentials”-->写上登录gitlab上的帐号密码。

系统设置
配置gitlab主机:
jenkins的访问地址,自动生成可以不用配置:

Publish over SSH配置:

Configure Global Security 配置
SSH Server 端口的修改,这里使用的是默认端口:

安装排错
构建时控制台报错如下:
Host key verification failed.
lost connection
Build step 'Execute shell' marked build as failure
SSH: Current build result is [FAILURE], not going to run.
Finished: FAILURE
原因:这个是由于ssh密钥配置的问题,虽然我们在系统配置中配置了私钥但是还是不行。原先我是用root运行jenkins,而rpm包是用普通用户运行。所以密钥需要拷贝至jenkins的家目录中及:/var/lib/jenkins/.ssh/中才能使用。
构建项目
创建
点击左侧的“新建”然后如下:

源码管理

构建
点击“增加构建步骤”-->选择“Execute shell”:

点击“增加构建步骤”-->选择“Invoke top-level Maven targets”:
配置了上面的信息后,maven会将打包的war包放在下面的这个目录中:
/var/lib/jenkins/jobs/study/workspace/target/
/var/lib/jenkins/:jenkins的工作目录
jobs/study/:jenkins管理study项目的目录
workspace:表示maven等插件的工作目录

点击“增加构建步骤”-->选择“Execute shell”:

构建后操作
选择“增加构建后操作步骤”-->选择“Send build artifacts over SSH”:

上面图片来自:http://www.cnblogs.com/horizonli/p/5332515.html 。之后就是保存了。我们还可以在上面中继续添加server,添加server之前需要提前做好设置。
执行构建的项目
下面就是选择刚才创建的项目并执行“立即构建”。
构建后我们还可以在“Console Output”中查看构建执行的状态。
下面是远程主机执行的脚本,没有做过多的判断只能能够让其运行起来就行了。
[root@study-3 jeesns]# cat /opt/deploy/deploy.sh
#!/bin/bash
tomcatPid=`ps aux |grep tomcat |grep -v grep|awk '{print $2}'`
kill $tomcatPid
sleep 5
rm -rf /usr/local/tomcat/webapps/jeesns*
cp /opt/deploy/jeesns/jeesns.war /usr/local/tomcat/webapps/
/usr/local/tomcat/bin/catalina.sh start
echo '部署完毕'
gitlab+jenkins环境搭建.md的更多相关文章
- 基于Centos搭建Jenkins 环境搭建
		
系统要求: CentOS 7.2 64 位操作系统 安装 Jenkins Jenkins 简介 Jenkins 是一个开源软件项目,是基于Java开发的一种持续集成工具,用于监控持续重复的工作,旨在提 ...
 - jenkins 环境搭建与入门示例
		
环境说明: 1.win7 2.tomcat 9.0.0.M17 3.jenkins 2.32.2.war jenkins 环境搭建 1.下载jenkins部署包 https://jenkins.io/ ...
 - windows系统下jenkins环境搭建与基本使用
		
一. windows 系统下搭建jenkins环境 1.1 jenkins环境搭建和构建job流程图 1.2 安装jdk JDK下载地址: http://www.oracle.com/technet ...
 - Jenkins环境搭建(7)-集成钉钉消息推送
		
在去年的时候,搭建了一套Jenkins环境,基本功能已实现,可以通过如下地址查阅. Jenkins环境搭建(1)-下载与安装 Jenkins环境搭建(2)-搭建jmeter+ant+jenkins自动 ...
 - [原]项目进阶 之 持续构建环境搭建(四)Jenkins环境搭建
		
在之前的几篇文章中,我给大家分别介绍了这次的持续化构建环境搭建的相关前提内容.如果说前面的文章都是小菜的话,那么今天的这篇文章就是我们这个系列文章的主菜. 1.前提 安装jenkins需要安装JDK. ...
 - Jenkins环境搭建(2)-搭建jmeter+ant+jenkins自动化测试环境
		
一直想在持续集成方向学习并研究一番,近期正准备结合jmeter+ant+jenkins做自动化接口测试,在学习的同时,正好实践一番,毕竟实践才是真理. 在搭建jmeter+ant+jenkins环境有 ...
 - 物联网架构成长之路(29)-Jenkins环境搭建
		
0. 说明 哈哈,前面中间插入了一篇Eclipse增加Git插件,在此之前真的没有用过GIT. 1. 运行Jenkins 这里为了方便,还是用Docker方式安装,由于这个是标准的war报,不对Doc ...
 - 32. 持续集成简介及JDK、Tomcat、Jenkins环境搭建
		
持续集成简介 持续集成是一种软件开发实践,即团队开发成员经常集成他们的工作,通常每个成员每天至少集成一次,也就意味着每天可能会发生多次集成.每次集成都通过自动化的构建(包括编译,发布,自动化测试)来验 ...
 - mac下 jenkins 环境搭建
		
这几天搞了一些持续集成的工作,在所难免的接触到了jenkins ,下边写一下jenkins 在 mac os 环境下的搭建和配置. 1.tomcat 下载 前往apache 官网下载所需版本的tomc ...
 
随机推荐
- Unity3d嵌入web网页
			
应用场景 程序中的界面风格 UI内容等相关内容需要很容易方便的跟新替换,不使用unity传统的热加载方式,也不想使用和H5等做混合APP的时候, 就用嵌入web来实现. 假如我想替换某个背景图,一般来 ...
 - ASP.NET MVC传递Model到视图的多种方式总结(一)__通用方式的使用
			
有多种方式可以将数据传递到视图,如下所示: ViewData ViewBag PartialView TempData ViewModel Tuple 场景: 在视图页面,下拉框选择课程触发事件,分别 ...
 - EF CodeFirst 初识
			
随着EntityFramework的发展,原先的三种方式,{Code First ,Model First,Database First } CodeFirst基本摆脱了另外两种方式 成为了 最受欢 ...
 - HTML5 Form Data 对象的使用
			
HTML5 Form Data 对象的使用 MDN: https://developer.mozilla.org/zh-CN/docs/Web/Guide/Using_FormData_Object ...
 - C# 一个方法如何返回多个值
			
通常一个方法只能返回一个值,但是如果在某些时候,我们想要返回多个值,例如某个方法将一个浮点数分割成一个整数和一个小数返回.这个时候我们就要用到out关键字. using System; namespa ...
 - input pattern中常用的正则表达式
			
常用的正则表达式 pattern的用法,只是列出来一些常用的正则: 信用卡 [0-9]{13,16} 银联卡 ^62[0-5]\d{13,16}$ Visa: ^4[0-9]{12}(?:[0-9]{ ...
 - 【小程序】返回顶部wx.pageScrollTo和scroll-view的对比
			
一.wx.pageScrollTo(https://mp.weixin.qq.com/debug/wxadoc/dev/api/scroll.html) 1. 小程序中双击顶部的textbar.会默认 ...
 - GridView双击行弹出窗口
			
protected void gvCustom_RowDataBound(object sender, GridViewRowEventArgs e) { if (e.Row.RowType == D ...
 - sql 日期类型可以使用大于、小于号直接进行比较运算
			
select * from emp where hiredate > '1982-1-1'; -- mysqlselect * from emp where hiredate > to_ ...
 - spring boot(13)-logback和access日志
			
logback logback出自log4j的作者,性能和功能相比log4j作出了一些改进,而配置方法和log4j类似,是spring boot的默认日志组件.在application.propert ...