gitlab+jenkins+tomcat实现代码自动部署

一 搭建docker-gitlab-ce(优先部署docker,前面有docker部署文档)

环境准备:

1 物理内存要大于3GB
2 Linux Centos7系统
3 需要能够访问外网
4 jdk-8u172-linux-x64.tar.gz软件包 (均在官网即可下载)
5 apache-tomcat-8.5.31.tar.gz软件包6 jenkins.war软件包

1 下载gitlab的镜像源

[root@bogon ~] docker pull gitlab/gitlab-ce:latest   $:下载gitlab标准镜像源(也可以自己定制)
[root@bogon ~] docker images                         $:查看已有的镜像文件,查看到如下信息说明下载成功
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
gitlab/gitlab-ce    latest              a6cd10f85c07        2 weeks ago         1.47GB

2 基于gitlab-ce镜像启动一个容器

[root@bogon ~] docker run -d -p 7080:80 -p 2222:22 \
                           --name gtilab \
                           --restart always \
                           --volume /data/local/gitlab/config:/etc/gitlab \
                           --volume /data/local/gitlab/logs:/var/log/gitlab \
                           --volume /data/local/gitlab/data:/var/opt/gitlab \
                           gitlab/gitlab-ce:latest
-d:后台运行容器并返回容器ID
-p:将容器中端口号映射到本地指定端口号
--restart:容器重启后的状态always:在容器退出时总是重启容器
--volume:将容器中/etc/gitlab目录映射到本地的/data/local/gitlab/config目录,本地目录不存在自动创建,其他同理
gitlab/gitlab-ce:latest:要运行的镜像的名称
[root@bogon ~] docker ps -a    $:查看当前运行的容器

3 编辑gitlab配置文件(由于我们已经映射到本地,所以在本地编辑就可以)

[root@bogon ~] cd /data/local/gitlab/config       $:进入配置文件所在目录下
[root@bogon config] cp gitlab.rb gitlab.rb.bak    $:修改配置文件之前先备份,养成习惯!
[root@bogon config] vim gitlab.rb                 $:下列显示的都是编辑器中内容
# external_url 'GENERATED_EXTERNAL_URL'           $:找到这一行,修改为下面这一行
  external_url 'http://192.168.119.101'           $:后面的地址改为gitlab地址
# gitlab_rails['gitlab_shell_ssh_port'] = 22      $:找到这一行,修改为下面一行
  gitlab_rails['gitlab_shell_ssh_port'] = 2222    $:开启gitlab的ssh功能并且端口改为2222;
    :wq!                                          $:保存且推出vim编辑器
[root@bogon config] docker restart gitlab         $:重启gitlab容器生效

4 访问gitlab查看是否可以访问

在浏览器中输入gitlab配置文件中定义的IP地址,以及docker映射到本地的端口号查看是否可以访问
看到图中信息则说明成功,开始初始化管理员密码(刚开始启动后访问页面会比较慢,等一会儿就可以了)

image5 进入gitlab开始使用吧!! image

二 安装jenkins+tomcat(与gitlab在同一台主机)

1 首先需要安装1.8版本的jdk

[root@bogon ~] cd /app                             $:到指定目录下安装软件
[root@bogon app] rz                                  $:使用rz命令上传jdk-8u172-linux-x64.tar.gz软件包
[root@bogon app] tar zxvf jdk-8u172-linux-x64.tar.gz $:解压文件
[root@bogon app] vim /etc/profile.d/jdk.sh           $:创建jdk.sh文件并编辑写入以下内容    
    JAVA_HOME=/app/jdk1.8.0_172
    CLASS_PATH=.:$JAVA_HOME/lib.tools.jar
    PATH=$JAVA_HOME/bin:$PATH
    export JAVA_HOME CLASS_PATH PATH:wq              $:保存并退出
[root@bogon app] source /etc/profile.d/jdk.sh        $:刷新此文件中定义的内容
[root@bogon app] java -version                       $:查看java版本以及home路径是否正确,如下图所示

image

2 安装tomcat

[root@bogon app] tar zxvf apache-tomcat-8.5.31.tar.gz  $:解压文件
[root@bogon app] mv apache-tomcat-8.5.31/ tomcat       $:将解压后的目录名改为tomcat方便日后管理
[root@bogon app] cd tomcat/bin                         $:进入二进制文件存放目录
[root@bogon bin] ./startup.sh                          $:启动tomcat

3 访问tomcat查看是否能够访问

在浏览器中直接输入tomcat主机的IP地址加端口号查看到下图信息则说明安装成功

image

4 将jenkins整合到tomcat中

[root@bogon app] rz                                 $:上传jenkins.war包到此处(官网即可下载)
[root@bogon app] mv jeknins.war tomcat/webapps/     $:将jenkins.war文件移动到tomcat的webapps文件夹下,当tomcat启动,Linux会自动识别出jenkins.war包

5 重新启动tomcat并且访问jenkins

[root@bogon app] cd tomcat/bin      $:进入指定目录下执行
[root@bogon bin] ./shutdown.sh      $:首先停止tomcat服务
[root@bogon bin] ss -nlt            $:使用此命令查看端口状况,没有8080端口则说明停止成功
[root@bogon bin] ./startup.sh       $:启动tomcat服务,此时的webapps下应该多出了一个jenkins文件夹,这就说明tomcat识别了jenkins.war包

6 访问jenkins查看是否成功

使用浏览器直接访问Tomcat主机IP地址的8080端口下的jenkins文件夹,如图

image

7 做Jenkins初始化配置

1 当jenkins启动完毕后,刷新会出现如下图的一个界面,将jenkins服务器上指定位置下的文件内容复制到管理员密码位置

image

[root@bogon app] cat /root/.jenkins/secrets/initialAdminPassword      $查看目标目录下文件并且复制到网页的"管理员密码"位置上并点击继续
2 输入完密码后,Jenkins会出现如下图所示界面,问用户是否安装部分插件,点击"安装推荐的插件"并等待安装完毕

image

3 安装完毕后,会出现让用户创建管理员的一个界面,如图,根据要求创建即可

image

4 创建完毕用户,会出现如下图所示界面,是让用户确定Jenkins的URL地址是否正确,不正确的话再手动调试,确定后点击保存并完成 image

5 最后你就成功安装了Jenkins开始使用吧!!

P.S:小知识

!!当忘记jenkins管理员密码的时候按照以下操作进行!!

1 登录到Jenkins服务器上面更改config.xml(一般在/root/.jenkins/config.xml)文件

[root@bogon ~] find / -name config.xml      $:查找名为config.xml的文件
[root@bogon ~] vim /root/.jenkins/config.xml  $:找到以下这一段全部选中删除    <useSecurity>true</useSecurity>
    <authorizationStrategy class="hudson.security.FullControlOnceLoggedInAuthorizationStrategy"><denyAnonymousReadAccess>true</denyAnonymousReadAccess>
  </authorizationStrategy><securityRealm class="hudson.security.HudsonPrivateSecurityRealm">
    <disableSignup>true</disableSignup>
    <enableCaptcha>false</enableCaptcha></securityRealm>

2 此时再次登录Jenkins就不用输入密码了,但为了安全起见,还是要在系统管理中的安全配置中打开密码验证功能并修改管理员的密码

三 配置gitlab

1 在刚刚安装的gitlab上创建一个属于自己的项目,如图 imageimageimageimage2 配置SSH-key公钥文件

1 由于上传代码默认都是以http方式上传的,但当项目过大的时候就需要用到ssh方式了,此处为了省事儿,直接改用ssh,也没有坏处,根据下列图示操作即可!
2 注意:你要用哪台电脑上传就输入哪台电脑的id_rsa.pub文件(本实验在Windows上传代码,使用的工具为"Git Bash")
如下图所示:

image

3 生成后打开指定目录下的id_rsa.pub文件并复制,如图所示

image

4 将复制的内容粘贴到gitlab的ssh-key中,按图中依次操作

image

image image

5 添加完毕后,在"Git Bash"中使用ssh -vT [email protected] -p 2222测试,看到如图字样则证明成功

image

3 将仓库克隆到本地验证是否可以与gitlab直接通信

git的学习可以去以下网站: https://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000

图中命令以及解释:
            git clone ssh://[email protected]:2222/root/test.git #:将项目的ssh地址写上使用git clone命令克隆到本地
            cd test                        $:进入到克隆下来的项目中            
            echo test > test.txt           $:生成一个内容为test的txt文件
            git add .                      $:将文件修改添加到暂存区
            git commit -m "add test.txt"   $:确认无误将暂存区数据提交,并且添加描述
            git push                       $:将目标上传至主分区

image

四 配置Jenkins

1 登录到jenkins的管理页面;

2 按照以下步骤操作

安装插件:点击"系统管理" ---> "插件管理" --> "可选插件" --> (右上角)"过滤" --> 
(依次搜索)"Gitlab Hook"、"Build Authorization Token Root"、"Publish Over SSH"、"Gitlab Authentication"、"Gitlab" 
--> "直接安装" --> 重启jenkins(本实验用的tomcat,直接重启tomcat即可)

3 开始将要上传代码到的目标服务器添加进jenkins中

1 首先要将Jenkins服务器上面的id_rsa.pub文件内容拷贝到目标服务器/root/.ssh/authorized_key文件中
 (使用ssh-keygen -t rsa命令生成id_rsa以及id_rsa.pub文件)默认authorized_key文件不存在需要手动创建
 2 接着添加主机:
     点击"系统管理" --> "系统设置"  --> "Publish Over SSH" (如图)

image

3 在Jenkins上创建一个任务(按照以下图中步骤操作)

imageimageimageimageimageimageimage

4 到此Jenkins就配置完毕了,接着回到Gitlab,按照下图步骤配置! imageimageimageimageimageimage

5 查看Jenkins构建结果,如下图就说明配置成功 image

五 测试提交代码,是否能够提交到目标服务器

1 在Windows上继续使用"Git Bash"工具再次克隆并提交代码(如图)
    git clone ssh://[email protected]:2222/root/test.git    
    cd test
    echo "hello jenkins!" > index.html
    git add .
    git commit -m "add index.html"
    git push

image

2 接着去Jenkins界面查看构建过程,如图

image

3 去目标服务器上查看是否有推送的代码,如果成功就会有显示,如图

image


猜你喜欢

转载自blog.51cto.com/kaikai0720/2131887