【Gitlab+Jenkins+Ansible】构建自动化部署

说明: Gitlab、Jenkins、生产服务器、测试服务器上都需要安装Git.

 

 

 一、安装Gitlab

1.主机配置

IP: 10.10.10.105
OS: CentOs7.5
Gitlab版本:gitlab-ce-10.0.0-ce.0.el6.x86_64

 

2.关闭防火墙

systemctl stop firewalld

 

3.下载Gitlab

清华大学开源镜像站:

https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/

 

4.安装依赖项(可根据情况选择性操作)

yum install -y curl policycoreutils-python openssh-server openssh-clients cronie
lokkit -s http -s ssh
yum install postfix
systemctl start postfix
chkconfig postfix on

 

5.安装Gitlab

rpm -ivh gitlab-ce-10.0.0-ce.0.el6.x86_64.rpm

 

6.配置Gitlab

因为Jenkins使用端口也是8080端口,我们需要多Gitlab的端口做修改。分别改为11000,11001,11002.

这个在/etc/gitlab/gitlab.rb文件中修改:

修改内容如下:

 

external_url 'http://gitlab.example.com'

修改为

external_url 'http://10.10.10.102:11000'

 

unicorn['port'] = 8080

修改为

unicorn['port'] = 11001

 

prometheus['listen_address'] = '10.10.10.102:8081'

修改为

prometheus['listen_address'] = '10.10.10.102:11002'

 

每次重新配置,都需要执行gitlab-ctl reconfigure使之生效。

 

7.启动Gitlab

载入配置信息:

gitlab-ctl reconfigure

启动Gitlab:

gitlab-ctl start

 

常用管理命令:

gitlab-ctl start
gitlab-ctl restart
gitlab-ctl stop
gitlab-ctl status

 

8.访问Gitlab

http://10.10.10.105:11000

访问上述地址即可打开Gitlab页面。首次登录时,需要修改root密码。

 

9.Gitlab其他信息

日志位置:/var/log/gitlab    #可以查看访问日志以及报错日志等,供访问查看以及异常排查。

gitlab-ctl tail            #查看所有日志
gitlab-ctl tail nginx/gitlab_access.log  #查看nginx访问日志

 Gitlab仓库位置:

/var/opt/gitlab/git-data/repositories

 查看Gitlab版本信息:

gitlab-rake gitlab:env:info

 

cat /opt/gitlab/embedded/service/gitlab-rails/VERSION

 

10.重置root密码

 

gitlab-rails console production

irb(main):001:0> user = User.where(id: 1).first
    => # user.password=12345678
    => 12345678
irb(main):003:0> user.password_confirmation=12345678
    => 12345678
irb(main):004:0> user.save!
    => true
irb(main):005:0> quit

 

 

 

 

二、Gitlab汉化

1.停止Gitlab服务

gitlab-ctl stop

 

2.查看Gitlab版本

cat /opt/gitlab/embedded/service/gitlab-rails/VERSION  
10.0.0  
yum -y install git  

 

3.克隆获取汉化版本库

cd  /root
git clone https://gitlab.com/xhang/gitlab.git

 

4.查看汉化版本

cat gitlab/VERSION  
10.2.3 
cd /root/gitlab/  
git diff v10.0.0 v10.0.0-zh >/tmp/10.0.0-zh.diff 
yum install patch -y  
patch -d /opt/gitlab/embedded/service/gitlab-rails -p1 < /tmp/10.0.0-zh.diff

 

5.启动和重新配置Gitlab

gitlab-ctl start
gitlab-ctl reconfigure

 

 

三、升级Gitlab

1.关闭部分Gitlab服务

 

gitlab-ctl stop unicorn
gitlab-ctl stop sidekiq
gitlab-ctl stop nginx

 

2.升级

rpm -Uvh gitlab-ce-10.0.0-ce.0.el6.x86_64.rpm

 

3.重新配置Gitlab

gitlab-ctl reconfigure

 

4.重启Gitlab

gitlab-ctl restart

 

四、安装Jenkins

参见:https://www.cnblogs.com/xialiaoliao0911/p/8638495.html

 

五、安装Gitlab插件

 

1.首先登录Jenkins,点击“系统管理”>"插件管理"。在插件管理中可以看到“可更新”、“可选插件”、“已安装”插件。

【Gitlab+Jenkins+Ansible】构建自动化部署_第1张图片

 

 2.我们切换到“可选插件”选项卡,在搜索框中输入gitlab,找到gitlab pulgin。选中点击安装。如下是已经安装好的Gitlab插件。

【Gitlab+Jenkins+Ansible】构建自动化部署_第2张图片

 

 六、配置Gitlab插件

1.打开Gitlab,点击右上角头像下拉框中的“Setting”>"Account",复制“Private token”备用。

【Gitlab+Jenkins+Ansible】构建自动化部署_第3张图片

 

【Gitlab+Jenkins+Ansible】构建自动化部署_第4张图片

 

2.打开Jenkins,点击“系统管理”>"系统设置。

【Gitlab+Jenkins+Ansible】构建自动化部署_第5张图片

 

3.点击“配置”下拉框,选择Gitlab选项。

【Gitlab+Jenkins+Ansible】构建自动化部署_第6张图片

 

 4.配置Gitlab.

Connection name: 填写一个有意义的名字

Gitlab host URL : 填写Gitlab的实际地址

然后点击“Add”>Jenkins.

 

【Gitlab+Jenkins+Ansible】构建自动化部署_第7张图片

在弹出框里,“类型” 选择“Gitlab API token”,   API token 中输入之前复制的Private token.然后点击“添加”。

 

【Gitlab+Jenkins+Ansible】构建自动化部署_第8张图片

 

 在选择刚才新建的Credentials:

【Gitlab+Jenkins+Ansible】构建自动化部署_第9张图片

 

 设置完成后,点击“Test Connection” 来测试一下是否可以成功连接。显示“Success” 则说明测试成功。

【Gitlab+Jenkins+Ansible】构建自动化部署_第10张图片

 

 之后点击“应用”后,再点击“保存”。

 【Gitlab+Jenkins+Ansible】构建自动化部署_第11张图片

 

 

 

七、配置Git插件

1.打开Jenkins,点击“系统管理”>“系统设置”。

【Gitlab+Jenkins+Ansible】构建自动化部署_第12张图片

 

2.点击“配置”下拉框,选择“Git plugin”. 

【Gitlab+Jenkins+Ansible】构建自动化部署_第13张图片

 

 然后设置Git插件的全局配置。然后点击“应用”并“保存”。

【Gitlab+Jenkins+Ansible】构建自动化部署_第14张图片

 

 注: 关于git的全局配置,这里说明一下。首先在git安装完成后,可以对git进行一些全局设置。刚才的user.name和user.email就是在git中设置的。

         设置方法就是执行如下两条命令:

        

[root@CentOS7 ~]# git config --global user.name "Sakura"
[root@CentOS7 ~]# git config --global user.email "[email protected]"

      查看配置信息:

 

[root@CentOS7 ~]# git config --list
user.name=Sakura
[email protected]
core.repositoryformatversion=0
core.filemode=true
core.bare=false
core.logallrefupdates=true

 

 

八、创建一个Jenkins Job

 

在Jenkins里,一个任务叫做一个job。一般我们的项目会有多个分支,比如开发分支和产品分支,我们可以对每一个分支都新建一个job.

比如,我们对开发分支创建一个测试的job,每次有代码提交就自动运行一次测试,对产品分支创建一个打包的job,每次有代码提交就运行打包任务。

 

不过在这里,我们只是单纯的创建一个job,来演示jenkins自动运行任务的过程。首先,点击“创建一个新任务”.

【Gitlab+Jenkins+Ansible】构建自动化部署_第15张图片

 任务名称:根据任务内容起一个见名知意的名字。

然后选择“构建一个自由风格的软件项目”。之后点击“确定”。

 【Gitlab+Jenkins+Ansible】构建自动化部署_第16张图片

 

 

九、生成访问Gitlab的ssh密钥

1.在Linux下生成ssh密钥

在Jenkins服务器的命令行输入如下命令来生成公钥和私钥。

 

[root@CentOS7 ~]# ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): 
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:
SHA256:XsMCl46+G81iIrIGR75xI8m0yElOLHESQmVNwcROS2E [email protected]
The key's randomart image is:
+---[RSA 2048]----+
|+o.o*Eo          |
|+ o .*   .       |
|.+  + o o        |
|.+o  o = .       |
|**.o  . S +      |
|o+O o. + o .     |
|o..=..= +        |
| +.. o +         |
|o     o.         |
+----[SHA256]-----+

 

记录下私钥的存放路径以备用。

 

2. 复制公钥文件里的全部内容,然后打开Gitlab,找到SSH Keys. 然后将刚才复制的公钥文件内容粘贴进Key中。

Title : 自定义,起一个见名知意的名字。

然后点击“Add Key”。填写成功后,会在下方的“Your SSH keys”中显示已添加的Key.

【Gitlab+Jenkins+Ansible】构建自动化部署_第17张图片

添加后的结果:

【Gitlab+Jenkins+Ansible】构建自动化部署_第18张图片

 

 

十、配置Job

1.打开Jenkins,点击刚刚创建的Job的名称“deployfrontend”.

【Gitlab+Jenkins+Ansible】构建自动化部署_第19张图片

 

2.然后点击“配置”

【Gitlab+Jenkins+Ansible】构建自动化部署_第20张图片

 

3.配置Job的“源码管理”

(1)首先打开GitLab,新建一个Project,命名为monkey.

点击扳手图标,即可看到新建按钮。

【Gitlab+Jenkins+Ansible】构建自动化部署_第21张图片

 

新建成功后,效果如下:

【Gitlab+Jenkins+Ansible】构建自动化部署_第22张图片

 

(2)再在GitLab中,新建用户coldplay.  并设置密码为coldplay.

【Gitlab+Jenkins+Ansible】构建自动化部署_第23张图片

 

(3)在新建的Project加入成员coldplay.

首先点击扳手图标,查看所有Project.

然后点击需要添加的Project,这里是Administrator/monkey.

【Gitlab+Jenkins+Ansible】构建自动化部署_第24张图片

进入如下页面后,点击后边的Manage access.

【Gitlab+Jenkins+Ansible】构建自动化部署_第25张图片

 

添加成员用户,并设置角色权限。点击“Add to project”加入到Project.

【Gitlab+Jenkins+Ansible】构建自动化部署_第26张图片

 

(4)复制刚才在Gitlab中新建的Project的地址。

【Gitlab+Jenkins+Ansible】构建自动化部署_第27张图片

(5)在Jenkins中,选择“源码管理”>Git.  将Gitlab的项目地址填写到Repository URL中。然后点击“credentials”后面的“Add”按钮。

这里的Credentials后选择coldplay,并输入它的密码。

【Gitlab+Jenkins+Ansible】构建自动化部署_第28张图片

 如果没报错,说明成功了,点击页面底部的“应用”。如果出错了,会在“Repository URL”和“Credentials”之间显示红色的错误信息。

 【Gitlab+Jenkins+Ansible】构建自动化部署_第29张图片

Jenkins job默认对master分支进行构建,你也可以自定义分支。这要求你的Gitlab代码仓库中要存在这个分支,一般来说,就是要向代码仓库提交一次更改,请 自行完成(Gitlab项目刚创建时是空的,一个分支也没有,这样的话,自动构建时会出错)。

 

 4.配置Job的构建触发器

点击“构建触发器”,然后选择“轮询”SCM。这里我们可以设置每十五分钟轮询一次。

【Gitlab+Jenkins+Ansible】构建自动化部署_第30张图片

 

 其他选项,大家可以根据实际情况设置。

 

 5.配置Job的构建脚本

 点击“构建”,然后选择“执行shell”(可根据实际情况选择)

【Gitlab+Jenkins+Ansible】构建自动化部署_第31张图片

之后,我们就可以设置我们需要执行的shell命令了。

【Gitlab+Jenkins+Ansible】构建自动化部署_第32张图片

 

 6.配置构建后操作

根据实际情况可选择相应的操作。例如:邮件通知

【Gitlab+Jenkins+Ansible】构建自动化部署_第33张图片

 

【Gitlab+Jenkins+Ansible】构建自动化部署_第34张图片

 

十一、实例演示

1.需求说明

【服务器说明】

10.10.10.102:Gitlab服务器,这里记作A。

10.10.10.103:Jenkins服务器,这里记作B。

10.10.10.104:生产服务器,即需要部署程序的机器,这里记作C。

10.10.10.105:测试服务器,在该台服务器编写代码,这里记作D。

 

注:上述4台机器都需要安装Git.

        Gitlab-->Jenkins ,Gitlab-->生产服务器,都做免密登录。

 

【需求】

在D机器上编写好的代码,可以push到A机器上。然后通过Jenkins自动将代码发布到C上。

 

2.操作步骤

(1)首先在Gitlab(10.10.10.102)上新建用户coldplay,新建项目monkey. 并将coldplay用户加入到monkey项目中;

Gitlab中新建的项目名称要和生产服务器上的项目名称保持一致,这里都叫monkey.

 

(2)然后打开Jenkins(10.10.10.103),新建任务monkey,并配置monkey项目地址;

【Gitlab+Jenkins+Ansible】构建自动化部署_第35张图片

 

【Gitlab+Jenkins+Ansible】构建自动化部署_第36张图片

 

 

(3)在生产服务器上(10.10.10.104)安装tomcat,并设置一个默认页。

  • 在/usr/local/apache-tomcat-9.0.8/conf/server.xml中的如下位置新添加如下内容(红色字体部分):

注意docBase的位置要和你实际的地址相同。

 

  

        
        

        
        

        #############################################add by guanyy#################################################
        
        ###########################################################################################################

      

 

 

  • 在/usr/local/apache-tomcat-9.0.8/conf/web.xml中检查默认页设置(注意要和项目中的名字相同);

如下红色字体部分是设置多个默认页,你需要保证你的默认页的名字是如下文件的一个

    
        index.html
        index.htm
        index.jsp
    
  •  在/usr/local/apache-tomcat-9.0.8/conf/server.xml中修改端口为8090

 

  
    
    
                    

你可能感兴趣的:(【Gitlab+Jenkins+Ansible】构建自动化部署)