zoukankan      html  css  js  c++  java
  • gitlab+jenkins+tomcat war包部署(此文有新版本)

    对本文进行格式整理,url:

    https://www.cnblogs.com/huandada/p/9969234.html

     

    整个项目的框架为:

    1.gitlab的安装(Centos7)

    新建/etc/yum.repos.d/gitlab-ce.repo,添加以下内容:

    [gitlab-ce]
    name=gitlab-ce
    baseurl=http://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7
    repo_gpgcheck=0
    gpgcheck=0
    enabled=1
    gpgkey=https://packages.gitlab.com/gpg.key

    安装步骤:

    # 安装依赖包 

    yum install curl openssh-server openssh-clients postfix cronie

    # 启动 postfix 邮件服务

    service postfix start

    # 检查 postfix

    chkconfig postfix on

    # 安装 GitLab 社区版 ,安装git,使其支持git命令

    yum install gitlab-ce git

    # 初始化 GitLab 

    gitlab-ctl reconfigure

    修改 host

    添加访问的 host,修改/etc/gitlab/gitlab.rb的external_url

    external_url 'http://git.home.com'

    vi /etc/hosts,添加 host 映射

    127.0.0.1 git.home.com

    每次修改/etc/gitlab/gitlab.rb,都要运行以下命令,让配置生效

       gitlab-ctl reconfigure

    启动gitlab

       gitlab-ctl start

    配置本机的 host,如:192.168.113.59 git.home.com。最后,在浏览器打开网址http://git.home.com,登陆。默认管理员:
      用户名: root
      密码: xxxxxx

    安装中文语言包(汉化)

    对于英文还过得去的同学,可以不用汉化,下载最新的汉化包,并查看版本,汉化包版本要与gitlab-ce包版本一致:

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

         cat gitlab/VERSION

                10.6.1

    也可指定版本下载,对于刚出来的一些新版本的gitlab-ce包,可能没有同版本汉化包,过一段时间就会有了:

        git clone https://gitlab.com/xhang/gitlab.git  -b  v10.6.1-zh

    先关闭gitlab:

    gitlab-ctl stop

    下载的文件夹内容复制到gitlab目录下

    cp -r -f ./gitlab/* /opt/gitlab/embedded/service/gitlab-rails/

    复制过程中会出现以下提示,不用管

    cp: cannot overwrite non-directory ‘/opt/gitlab/embedded/service/gitlab-rails/log’ with directory ‘./gitlab/log’
    cp: cannot overwrite non-directory ‘/opt/gitlab/embedded/service/gitlab-rails/tmp’ with directory ‘./gitlab/tmp’

    重新加载配置,启动gitlab

    gitlab-ctl reconfigure   

    gitlab-ctl restart

    再次访问gitlabweb界面即变为中文。

    gitlab的使用:

    接下来配置密钥,实现本地工作机git pull/push gitlab的项目:
    在本地工作机上生成密钥,将公钥复制到gitlab
     ssh-key
     cat ~/.ssh/id_rsa.pub 

    回到刚才gitlab新建项目里,复制该项目地址

     

    在本地工作机上,配置域名解析  /etc/hosts,将gitlab里的test 1项目克隆到本地:

    172.19.0.111 gitlab.home.com

    mkdir test_repo
    cd test_repo/
    git init        #初始化仓库
    git clone git@gitlab.home.com:root/test1.git

    由于我之前本地hosts中配置的是另一台gitlab的相同域名不同ip,在known_hosts 文件中有属于 该hostname 的密钥,git clone会报错

    在该项目中创建新的文件aaa,并同步到gitlab,可在gitlab的web界面查看

    cd  test1

    echo aaa>aaa
    git add ./*
    git commit -m "提交代码"
    git push

    删除该项目中的文件aaa,并同步到gitlab

    git rm -r --cached aaa
    git commit -m 'delete'
    git push  

    git pull 可以从gitlab中将文件拉到本地

    2.jenkins的安装 (version 2.73.3)

    安装好jdk8与tomcat,下载jenkins.war包,放在tomcat的webapp下,重启tomcat服务。配置好防火墙和selinux。访问jenkins的web界面 http://ip:8080/jenkins,cat该passwd文件,填写到下面的框中。

    jenkins ssh-keygen生成密钥,将公钥添加到gitlabssh key中。
    安装插件,install suggested plugins,后边还有额外安装一些插件.添加用户名密码,管理员为admin

    安装插件 Maven Integration , Publish Over SSH,Gitlab

    此时没有maven项目,需要安装插件Maven Integration ,同时安装Gitlab与远程连接tomcat服务器 的插件Publish Over SSH

    系统管理 ---> 管理插件 ---> 可选插件 ---> 过滤选中直接安装

     

    jenkins安装jdk与maven,安装完在server命令行/root/.jenkins/tools/目录下可以看到jdk与maven的两个安装目录

     

    jenkinsweb界面报错Your container doesn’t use UTF-8 to decode URLs. If you use non-ASCII ....
    tomcat的字符问题,在tomcat配置文件server.xml中添加URIEncoding="UTF-8",并重启tomcat。有些版本的tomcat不会报错。

     

    配置jenkins获取gitlab的密钥

    jenkins服务器生成密钥

    ssh-keygen

    cat   ~/.ssh/id_rsa.pub

    复制公钥粘贴到gtilab 的SSH keys中

    gitlab的域名解析加到jenkins的/etc/hosts中。若后边的url涉及到域名时,改为ip,也可以不加该域名的解析。

    配置Gitlab插件
    打开gitlab右上角绿色图标设置 ---> 右边图标access tokens --->创建个人访问令牌

    复制访问令牌待用

     

    jenkins 添加gitlab的访问令牌

    Connection name 随便起名 ---> Gitlab host URL gitlab的ip --->  Credentials 选择Gitlab API token ---> Add ---> jenkins配置加下第二图

    最后测试连接一下,是否成功

     

    配置publish over SSH 插件,remote directory为war包在tomcat服务器中需要放置的路径,普遍是放在tomcat的webapp下,我这里放到自定义的目录下,后边会配置脚本进行后续操作。

     

    Passphrase:密码(key的密码,如果你设置了,否则不填)

     

    Path to key:key文件(私钥)的路径 

     

    Key:将私钥复制到这个框中

     

    Disable exec:禁止运行命令

     

     

     配置jenkins免密登录tomcat服务器

    tomcat服务器:

    ssh-keygen

    将~/.ssh/id_rsa.pub放到jenkins的~/.ssh/下,并改名为authorized_keys

    下面我们就新建一个maven项目,点击左下角ok

     

    点进这个test项目 ---> 配置

    gitlab中该项目的地址粘贴过来到 Repository URL

    这里中间出现红色字体的报错,排错思路:

    1.先测试jenkins与gitlab连通没,在jenkins命令git clone 项目url 是否成功

    2.确认访问令牌配好没

    3.域名解析有没有

    此处我把域名改为ip就好了,这里的认证方式我们选用gitlab用户名密码的方式,也有填密钥路径的方式,此处就不多介绍了。下面的*/master默认对master分支进行构建。

    构建触发器,此处选择webhook的方式。复制webhook url,待用

    将刚复制的url放到gitlab中,点击下面的 “ 增加web钩子 ”

     

    此处构建触发器还有其他方式Poll SCM    H/1 * * * * 每隔1分钟核对一次gitlab是否更新,若有更新就立即构建。

     

    构建环境不用管

    Goals   maven的打包命令

    生成war包需要读取pom.xml里的配置,root pom.xml默认为该项目web界面里工作空间下的相对路径,即server里/root/.jenkins/workspace/项目名/pom.xml。这里就需要gitlab里的代码直接在该项目下,前面没有多余的目录。像这样:

    而不是这样,项目下还有一层 目录。在jenkins上配置pom.xml时,把这个目录加在pom.xml文件前面也是不能识别该路径的:

    设置构建后的邮件通知

     构建后需要将war包传到tomcat服务器

    source files为相对于工作空间的war包位置,构建完默认在target下;

    remove prefix 去掉war包之前的路径

    exec command 部署好war包后,在tomcat服务器中要执行的命令,此处我写成一个脚本在tomcat服务器中。

     

    cat  change_war.sh

    #! bin/bash

    #cd /usr/share/tomcat/bin && ./shutdown.sh
    systemctl stop tomcat
    cd /usr/share/tomcat/webapps
    rm -rf appstore.war appstore
    mv /usr/share/war/appstore.war /usr/share/tomcat/webapps/ &&
    systemctl start tomcat
    #cd /usr/share/tomcat/bin && ./start.sh

    在jenkins中配置maven的home:

     

     在maven的配置文件中修改私服的服务器地址:

    vim  /root/.jenkins/tools/hudson.tasks.Maven_MavenInstallation/Maven3/conf/settings.xml

    配置完就可以构建了。

    一般第一次构建会报错,查看控制台输出,找报错原因。

    由于部署很复杂,过程过一定会报错,慢慢查原因,一定只有把整个过程理解后,才会部署成功。这是我的心得。

    本文参考文章链接:

  • 相关阅读:
    忘记的知识点补充
    mysql使用过程中出现的问题总结
    身份证校验
    数据库plsql配置
    前端字符间间距与单词间间距
    Oracle中的instr()函数 详解及应用
    Oracle执行过程中出现的问题
    572. Subtree of Another Tree 大树里包括小树
    404. Sum of Left Leaves 左叶子之和
    637. Average of Levels in Binary Tree 二叉树的层次遍历再求均值
  • 原文地址:https://www.cnblogs.com/huandada/p/8854702.html
Copyright © 2011-2022 走看看