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

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

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

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

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

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

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

  1. #-------------------------- Jenkins ------------------------------------
  2. # 下载LTS版 如2.138.1 https://jenkins.io/download/ 选择OS版本,或者 .war
  3. # 将其放入 tomcat/webapps中,或者Linux的某文件夹, 例如:
  4. cd /opt
  5. java -jar jenkins.war # 等待运行成功 显示 管理密码 复制
  6.  
  7. # 之后建议后台运行
  8. nohup java -jar jenkins.war >> jenkins.log &

  9. 通常生产环境安装的方式:
  1. wget -O /etc/yum.repos.d/jenkins.repo http://pkg.jenkins-ci.org/redhat/jenkins.repo # 下载
  2.  
  3. rpm --import http://pkg.jenkins-ci.org/redhat/jenkins-ci.org.key # 导入key
  4.  
  5. yum -y install jenkins # 安装
  6.  
  7. /etc/rc.d/init.d/jenkins start # 作为守护进程启动
  8.  
  9. ### PS. 我的环境启动时提示找不到/usr/bin/java的错误,就用java实际路径添加了个软链接。
  10. ln -s /usr/local/src/jdk1..0_161/bin/java /usr/bin/java
  1.  
  1. # 浏览器访问 http://此机器所在域名:8080
  2. # 按照页面提示,输入管理密码,继续安装,选择需要的组件,继续。等待安装成功后,
  3. # 创建管理员账号,开始使用
  4.  
  5. ## Jenkins集成git
  6. ## git的通信协议
  7. ## Git 可以使用四种主要的协议来传输数据:本地传输,SSH 协议,Git 协议和 HTTP 协议。
  8. ## (Ps:HTTP 协议外,其他所有协议都要求在服务器端安装并运行 Git)

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

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

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

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

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

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

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

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

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

  1. #------------------------------ Maven 安装 ------------------------------
  2. # 部署Maven项目,必须安装. 下载页:http://maven.apache.org/download.cgi
  3. tar zxf apache-maven-3.5.-bin.tar.gz
  4. mv apache-maven-3.5. maven
  5. cd maven/conf
  6. vim settings.xml
  7. # <localRepository>/path/to/local/repo</localRepository> 是下载jar文件时的存储路径
  8.  
  9. # 在<mirrors>中增加aliyun</mirrors>
  10. <mirror>
  11. <id>nexus-aliyun</id>
  12. <mirrorOf>*</mirrorOf>
  13. <name>Nexus aliyun</name>
  14. <url>http://maven.aliyun.com/nexus/content/groups/public</url>
  15. </mirror>
  16.  
  17. # 再将文件settings.xml copy 到 /root/.m2 (用户根路径)文件夹下
  18. # 配置环境变量:
  19. vim /ect/profile
  20.  
  21. export M2_HOME=/opt/maven
  22. export PATH=$M2_HOME/bin:$PATH
  23.  
  24. source /ect/profile
  25. mvn -v

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

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

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

  1. #------------------------- 再看个java war包的示例 ------------------------
  2. # Jenkins 构建仍是Execute shell , Command内容:
  3. export BUILD_ID=dontKillMe
  4. /opt/scripts/deploy_v2_screen_api.sh
  5.  
  6. # 脚本 deploy_v2_screen_api.sh 内容:一定不要忘记 chmod 755 执行权限
  7. cd /opt/product/config/screen_api/v2/
  8. git checkout .
  9. git pull
  10.  
  11. cd /opt/product/code/screen_api_v2/
  12. git checkout .
  13. git pull
  14.  
  15. #rm -rf /opt/product/code/screen_api_v2/target/screen_api_v2.war
  16.  
  17. cp -f /opt/product/config/screen_api/v2/application.yml /opt/product/code/screen_api_v2/src/main/resources/
  18.  
  19. #rm -rf /opt/product/code/screen_api_v2/target/
  20. /opt/maven/bin/mvn clean
  21. /opt/maven/bin/mvn -Dfile.encoding=UTF- package
  22. #scp /root/screen/screen_backend/target/monitor.war root@101.37.22.173:/opt/tomcat/webapps/
  23.  
  24. rm -rf /opt/tomcat/webapps/screen_api_v2.war
  25. mv /opt/product/code/screen_api_v2/target/screen_api_v2.war /opt/tomcat/webapps/

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

  1. #----------------------------------------------------------------------#
  2. # 修改yum源为aliyun
  3. # 先备份:
  4. mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
  5. # 下载配置文件 注意 centos版本
  6. wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-6.repo
  7. yum makecache # 生成缓存
  8. #----------------------------------------------------------------------#
  1. # git clone出现错误:(gnome-ssh-askpass:): Gtk-WARNING **: cannot open display:
  2. # 直接运行unset SSH_ASKPASS,然后再重新git clone
  3.  
  4. ##################### jenkins数据的转移 ###################################
  5. # 由于我的jenkins.war ,版本是Jenkins2.121.1,并没有看到网上说的可以在jenkins系统管理-系统设置中直接更改主工作空间,而是需要通过修改环境变量的方式进行设置。
  6.  
  7. # Jenkins默认工作空间 /root/.jenkins,而Jenkins默认查找顺序是先环境变量中查找“JENKINS_HOME”指定的目录作为工作空间,
  8. # 如果没配置“JENKINS_HOME”环境变量的,Jenkins就采用了默认的工作空间配置。
  9.  
  10. # 如果有jenkins服务在运行中,建议先停止jenkins服务。
  11. # 然后拷贝数据到新路径,例如:
  12. cp /root/.jenkins /opt/jkdata/.jenkins
  13.  
  14. # 设置JENKINS_HOME环境变量参数
  15. # 打开tomcat的bin目录,编辑catalina.sh文件,在第一行下面添加
  16. export JENKINS_HOME=/opt/jkdata/.jenkins
  17.  
  18. # 并且在profile文件最后加入:
  19. vi /etc/profile
  20. export JENKINS_HOME=/opt/jkdata/.jenkins
  21. source /etc/profile
  22. # 然后启动jenkins,所有的插件,配置,job及备份全部已迁移。

简单gitblit与Jenkins结合,持续集成的更多相关文章

  1. 【iOS】Jenkins Gitlab持续集成打包平台搭建

    Jenkins Gitlab持续集成打包平台搭建 SkySeraph July. 18th 2016 Email:skyseraph00@163.com 更多精彩请直接访问SkySeraph个人站点: ...

  2. 用MSBuild和Jenkins搭建持续集成环境(2)

    http://www.infoq.com/cn/articles/MSBuild-2   作者 Mustafa Saeed Haji Ali ,译者 李剑 发布于 2012年10月23日 | 注意:  ...

  3. RF+Jenkins构建持续集成

    引入RF是为了能够快速的开展自动化验收测试,Jenkins而一种持续集成工具,用于监控持续重复的工作,持续的软件版本发布/测试项目,而通过RF+Jenkins可以有利的对RF构建的接口项目进行持续集成 ...

  4. 使用Jenkins进行持续集成ionic3项目

    Jenkins是一个开源软件项目,是基于Java开发的一种持续集成工具,用于监控持续重复的工作,旨在提供一个开放易用的软件平台,使软件的持续集成变成可能.  网上大多数是关于.net web网站以及 ...

  5. 使用jenkins实现持续集成

    一.jenkins 介绍 它是一个自动化的周期性的集成测试过程,从检出代码.编译构建.运行测试.结果记录.测试统计等都是自动完成的,无需人工干预: 它需要有专门的集成服务器来执行集成构建: 它需要有代 ...

  6. jenkins+github持续集成中的坑

    1.前言 刚开始开发自己的独立博客的时候,每次发布都要手动打包,上传服务器,杀tomcat进程,重启,来回这么重复性工作,很快就有点不耐烦了.如果能自动化的东西,就绝不要手动了,所以自己搭建了个持续集 ...

  7. [转]使用jenkins实现持续集成

    本文转自:https://www.cnblogs.com/zishengY/p/7170656.html 一.jenkins 介绍 它是一个自动化的周期性的集成测试过程,从检出代码.编译构建.运行测试 ...

  8. jenkins+docker持续集成实验

    在互联网时代,对于每一家公司,软件开发和发布的重要性不言而喻,目前已经形成一套标准的流程,最重要的组成部分就是持续集成(CI)及持续部署.交付(CD).本文基于Jenkins+Docker+Git实现 ...

  9. docker+jenkins实现持续集成

    持续集成的概念我就不多说了,网上一大堆,今日主要讲讲怎么通过docker 和jenkins实现项目的持续集成.看着简单,网上完整教程很少,本人摸索很久才搞定!!! 一.首先安装docker.安装过程可 ...

  10. 使用jenkins构建持续集成平台

    jenkins +   Maven + svn/git + tomcat 的持续集成平台 项目管理流程: 需求分析----原型设计----开发代码----提交测试-----内部测试-----确认上线( ...

随机推荐

  1. Project Euler 66: Diophantine equation

    题目链接 思路: 连分数求佩尔方程最小特解 参考博客 模板: LL a[]; bool min_pell(LL d, LL &x, LL &y) { LL m = floor(sqrt ...

  2. (8)socketserver并发

    (1)client客户端: import socket sk = socket.socket() sk.connect( ("127.0.0.1",9000)) while Tru ...

  3. 音频转化mp3 ,到底选vbr还是cbr

    毫无疑问,aac格式是最好的. 其次,应该是 vbr. 参考下面文章 http://tieba.baidu.com/p/1966991568 总结: 1.正版iTunes Plus 256K AAC格 ...

  4. android ------ AAPT2 error: check logs for details解决方法

    AAPT 是全称是 Android Asset Packaging Tool,它是构建 App,甚至是构建 Android 系统都必不可少的一个工具.它的作用是将所有资源文件压缩打包到Android ...

  5. maven构建web项目,用jetty测试的配置pom.xml

    maven构建web项目,用jetty测试的配置pom.xml <project xmlns="http://maven.apache.org/POM/4.0.0" xmln ...

  6. DOM 操作成本究竟有多高,HTML、CSS构建过程 ,从什么方向出发避免重绘重排)

    前言: 2019年!我准备好了 正文:从我接触前端到现在,一直听到的一句话:操作DOM的成本很高,不要轻易去操作DOM.尤其是React.vue等MV*框架的出现,数据驱动视图的模式越发深入人心,jQ ...

  7. 简易OA漫谈之工作流设计(六,快捷表单和动态表单)

    如果没有表单设计功能,我们一般建物理表,再把表单挂接到流程, 我们可以把外接表单的地址填到表单地址中,地址中会传递一个id. 如果使用外接表单,在审批的时候可能会“不太友好”,因为在审批单上看不到任何 ...

  8. 从零开始学Python 二

    上一章我们已经安装好了Python环境,并且写出了第一个Python程序.下面我们接着继续学习.首先,来分析下上一章我们写的代码. 我们最初的目的是为了可以输出一串有意义的文字,最终选择了英文语句“h ...

  9. PIL库的运用

    PIL库学习及运用 1.库的介绍Python Imaging Library,简称PIL python图像处理库,这个库支持多种文件格式,并提供了强大的图像处理和图形处理能力. 下面是我的学习笔记 首 ...

  10. unistd.h

    unistd.h是unix std的意思,是POSIX标准定义的unix类系统定义符号常量的头文件, 包含了许多UNIX系统服务的函数原型 unistd.h在unix中类似于window中的windo ...