• 简单gitblit与Jenkins结合,持续集成


    gitblit是当作git服务器,也就是作为私有的代码仓库,用法类似于Github

    Jenkins 是自动构建工具,帮忙将仓库中的代码更新到服务器上。可以设置为定时自动构建。

    详细摸索了我现在公司的用法, 先简单描述下工作过程:

    平常我们写好代码之后,会git push到仓库,然后到 Jenkins 上点一下,手工执行了一下项目的构建,然后Jenkins让服务器执行了Shell脚本,

    shell脚本执行了git checkout . 以及git pull , 以及重启相关服务等。

    ## ------------ 安装 gitblit -------------------------------------
    # 前提:装好JDK, 以及依赖
    yum install git
    yum install -y gcc-c++ curl-devel expat-devel gettext-devel openssl-devel zlib-devel perl-devel
    
    # 到此处下载gitblit 我下载的1.8.0
    # http://dl.bintray.com/gitblit/releases/
    
    # 放到 centos 某文件夹,
    cd /opt
    tar zxf gitblit-1.8.0.tar.gz
    cd gitblit-1.8.0/data
    
    # 可以看到几个配置文件.   defaults.properties 拥有全部配置项
    # 在gitblit.properties中添加配置,用来覆盖 defaults.properties 中的默认值
    
    git.repositoriesFolder = ${baseFolder}/git  # 仓库位置
    server.httpPort = 80                        # http端口
    server.httpsPort = 8443                     # https端口
    server.httpBindInterface =                  # 不写则所有地址
    server.httpsBindInterface =                 # 不写则所有地址
    
    # 回到 gitblit 目录, 执行
    nohup ./gitblit.sh &     # 后台运行
    
    # netstat -nltp 检查一下端口和进程
    # 浏览器访问一下这台机器的域名试试吧。
    
    # 进入管理页面的操作很简单,就是创建用户,版本库之类的,对git客户端的支持,
    # 基本上和Github 一样
    
    ## ./gitblit-stop.sh      # 停止服务
    

    # gitblit操作部分可参考:https://www.cnblogs.com/kevingrace/p/5575348.html

    #-------------------------- Jenkins ------------------------------------
    # 下载LTS版 如2.138.1  https://jenkins.io/download/  选择OS版本,或者 .war
    # 将其放入 tomcat/webapps中,或者Linux的某文件夹, 例如:
    cd /opt
    java -jar jenkins.war   # 等待运行成功  显示 管理密码 复制
    
    # 之后建议后台运行
    nohup java -jar jenkins.war >> jenkins.log &
    
    通常生产环境安装的方式:
    wget -O /etc/yum.repos.d/jenkins.repo http://pkg.jenkins-ci.org/redhat/jenkins.repo  # 下载
    
    rpm --import http://pkg.jenkins-ci.org/redhat/jenkins-ci.org.key  # 导入key
    
    yum -y install jenkins  # 安装
    
    /etc/rc.d/init.d/jenkins start  # 作为守护进程启动
    
    ### PS. 我的环境启动时提示找不到/usr/bin/java的错误,就用java实际路径添加了个软链接。
    ln -s /usr/local/src/jdk1.8.0_161/bin/java /usr/bin/java
    
    
    # 浏览器访问 http://此机器所在域名:8080    
    # 按照页面提示,输入管理密码,继续安装,选择需要的组件,继续。等待安装成功后,
    # 创建管理员账号,开始使用
    
    ##  Jenkins集成git
    ##  git的通信协议
    ##  Git 可以使用四种主要的协议来传输数据:本地传输,SSH 协议,Git 协议和 HTTP 协议。
    ## (Ps:HTTP 协议外,其他所有协议都要求在服务器端安装并运行 Git)

     Jenkins的停止服务,使用的是web方式

    # Jenkins的停止服务,使用的是web方式
    # http://yourdomain:8080/exit        # 停止服务
    # http://yourdomain:8080/restart     # 重启服务
    # http://yourdomain:8080/reload      # 重新加载配置信息

     关于Jenkins的第一次启动配置,建议参考:https://blog.csdn.net/w105021/article/details/78657382

    最近在操作Jenkins时,忘记了管理员密码。只好重置了:

    先停止tomcat服务,然后 vim /root/.jenkins/users/admin_***/config.xml 文件,

    找到 <passwordHash>字段,将里面的内容替换为:

    #jbcrypt:$2a$10$MiIVR0rr/UhQBqT.bBq0QehTiQVqgNpUGyWW2nJObaVAM/2xSQdSq

    这样,管理员账号的密码就变成了123456,启动tomcat,打开Jenkins登录。

    为了支持Maven项目,所以,先在系统中安装maven

    #------------------------------ Maven 安装 ------------------------------
    # 部署Maven项目,必须安装.  下载页:http://maven.apache.org/download.cgi 
    tar zxf apache-maven-3.5.4-bin.tar.gz
    mv apache-maven-3.5.4 maven
    cd maven/conf
    vim settings.xml    
    # <localRepository>/path/to/local/repo</localRepository> 是下载jar文件时的存储路径
    
    # 在<mirrors>中增加aliyun</mirrors>
        <mirror>
            <id>nexus-aliyun</id>
            <mirrorOf>*</mirrorOf>
            <name>Nexus aliyun</name>
            <url>http://maven.aliyun.com/nexus/content/groups/public</url>
        </mirror>
        
    # 再将文件settings.xml  copy 到 /root/.m2 (用户根路径)文件夹下
    # 配置环境变量:
    vim /ect/profile
    
    export M2_HOME=/opt/maven
    export PATH=$M2_HOME/bin:$PATH
    
    source /ect/profile
    mvn -v

    当前我们的Jenkins只是简化了手动集成的步骤,并没有完全地自动持续集成.

    #------------------------- 例:自动部署Node.js的程序------------------------
    # jenkins 通过SSH执行远程主机上的shell脚本,shell执行 git pull 并重启服务
    
    # 1. Jenkins先在 系统管理 系统设置中,找到SSH remote hosts,添加hostname,port,credentials, 
    # 2. Check connection 测试连接成功, 保存并回到主界面
    # 3. Jenkins创建一个自由风格的软件项目,构建,增加构建步骤
    # 4. 选择 Execute shell script on remote host using ssh 
    # 5. SSH site 中选择第1步创建的连接,Command 中贴上需要执行的脚本:
        export BUILD_ID=dontKillMe
        /opt/scripts/deploy_server_v2.sh
        
    # 脚本 deploy_server_v2.sh 内容:一定不要忘记 chmod 755 执行权限
        cd /opt/apps/screen_server/
        git checkout .
        git pull
        /opt/node/bin/npm install
        /opt/node/bin/forever stop server_3rd.js
        /opt/node/bin/forever start -l /opt/logs/screen_server_3rd.log -a server_3rd.js
        
    # 6. 保存,回到项目界面,点击 立即构建  等待结果
    # 结果出错,点击错误信息,进入 状态集,点击Console Output, 发现如下错误:
        [SSH] executing...
        /usr/bin/env: node: No such file or directory
        /usr/bin/env: node: No such file or directory
        /usr/bin/env: node: No such file or directory
        
    # 解决办法:在脚本目标主机为node程序建立个软链接
        ln -s /opt/NODEJS_HOME/bin/node /usr/bin/node
        
    ### 分步执行shell 发现 git中报unable to auto-detect email address 错误
    ### 解决办法:进入项目目录 .git文件夹,编辑 config 文件,增加:
        [user]
        email=your email
        name=your name

    这个例子也是执行shell 利用maven生成war包,然后更新服务。

    #------------------------- 再看个java war包的示例 ------------------------
    # Jenkins 构建仍是Execute shell , Command内容:
        export BUILD_ID=dontKillMe
        /opt/scripts/deploy_v2_screen_api.sh
        
    # 脚本 deploy_v2_screen_api.sh 内容:一定不要忘记 chmod 755 执行权限
        cd /opt/product/config/screen_api/v2/
        git checkout .
        git pull
    
        cd /opt/product/code/screen_api_v2/
        git checkout .
        git pull
    
        #rm -rf /opt/product/code/screen_api_v2/target/screen_api_v2.war
    
        cp -f /opt/product/config/screen_api/v2/application.yml /opt/product/code/screen_api_v2/src/main/resources/
    
        #rm -rf /opt/product/code/screen_api_v2/target/
        /opt/maven/bin/mvn clean
        /opt/maven/bin/mvn -Dfile.encoding=UTF-8 package
        #scp /root/screen/screen_backend/target/monitor.war root@101.37.22.173:/opt/tomcat/webapps/
    
        rm -rf /opt/tomcat/webapps/screen_api_v2.war
        mv /opt/product/code/screen_api_v2/target/screen_api_v2.war /opt/tomcat/webapps/

    在操作中的其它动作,以及遇到的小问题:

    #----------------------------------------------------------------------#
    # 修改yum源为aliyun 
    # 先备份:
      mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
    # 下载配置文件 注意 centos版本
      wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-6.repo
      yum makecache  # 生成缓存
    #----------------------------------------------------------------------#
    # git clone出现错误:(gnome-ssh-askpass:3530): Gtk-WARNING **: cannot open display: 
    # 直接运行unset SSH_ASKPASS,然后再重新git clone
    
    
    ##################### jenkins数据的转移 ###################################
    # 由于我的jenkins.war ,版本是Jenkins2.121.1,并没有看到网上说的可以在jenkins系统管理-系统设置中直接更改主工作空间,而是需要通过修改环境变量的方式进行设置。
    
    # Jenkins默认工作空间 /root/.jenkins,而Jenkins默认查找顺序是先环境变量中查找“JENKINS_HOME”指定的目录作为工作空间,
    # 如果没配置“JENKINS_HOME”环境变量的,Jenkins就采用了默认的工作空间配置。
    
    # 如果有jenkins服务在运行中,建议先停止jenkins服务。
    # 然后拷贝数据到新路径,例如:
    cp /root/.jenkins /opt/jkdata/.jenkins
    
    # 设置JENKINS_HOME环境变量参数
    # 打开tomcat的bin目录,编辑catalina.sh文件,在第一行下面添加
    export JENKINS_HOME=/opt/jkdata/.jenkins
    
    # 并且在profile文件最后加入:
    vi /etc/profile
    export JENKINS_HOME=/opt/jkdata/.jenkins
    source /etc/profile
    # 然后启动jenkins,所有的插件,配置,job及备份全部已迁移。
  • 相关阅读:
    一位年轻女董事长的忠告:不想穷下去就请看
    Ajax拓展02
    Ajax拓展
    Ajax概念及基础
    PHP了解01
    CSS3新增功能03
    CSS3新增功能02
    CSS3新增功能01
    html5介绍
    jQuery学习03
  • 原文地址:https://www.cnblogs.com/frx9527/p/gitblit_Jenkins.html
Copyright © 2020-2023  润新知