『互联网架构』软件架构-jenkins搭建和 maven gitlab自动化部署流程(上)(五)

栏目: Java · 发布时间: 5年前

内容简介:几年前没用过jenkins的时候,每次都需要用eclipse打个war包,然后小心翼翼的上传到服务器,给服务器原有的war包改个名字,mv到bak目录中,停止服务,删除原有的webapps的项目,再把新上传的war包放进到tomcat的webapp说的目录下,启动项目。每次改个html的标签的名字都需要重新上传,每次都是这么繁琐的操作。其实小公司还可以容忍,如果是比较大的项目,还持续停留在这个脚本上运维人员都累死了,因为有可能一次部署几十个项目。源码:https://github.com/limingios

几年前没用过jenkins的时候,每次都需要用eclipse打个war包,然后小心翼翼的上传到服务器,给服务器原有的war包改个名字,mv到bak目录中,停止服务,删除原有的webapps的项目,再把新上传的war包放进到tomcat的webapp说的目录下,启动项目。每次改个html的标签的名字都需要重新上传,每次都是这么繁琐的操作。其实小公司还可以容忍,如果是比较大的项目,还持续停留在这个脚本上运维人员都累死了,因为有可能一次部署几十个项目。源码:https://github.com/limingios/netFuture/tree/master/jenkins/ysource/idig8

『互联网架构』软件架构-jenkins搭建和 maven gitlab自动化部署流程(上)(五)

jenkins

  • 历史

    >Hudson是在2004年的夏天由Sun公司开发

    2005年2月开源并发布了第一个版本。

    Hudson发布的时候CruiseControl是CI界的老大哥,但是很快,在大约2007年的时候Hudson已经超越CruiseControl。2008年5月的JavaOne大会上,Hudson获得了开发解决方案类的Duke’s Choice奖项。从此,小弟翻身做大哥,Hudson成为CI的代名词。

    2010年9月,乌龟壳公司偷偷把Hudson®™变成了注册商标。2010年11月,Hudson社区的核心开发人员发现并angry了,双方进行了不太友好的会谈,不出意料的谈崩了。圣诞节过后,

    >2011年的第一场雪,比以往来的要晚一些,几个秃顶的大叔在McDonald‘s的豪华包间里做了一个艰难的决定:

    mv -f hudson jenkins

    >Hudson和Jenkins都拥有代码;

    Hudson有Oracle和Sonatype’s corporate的支持和Hudson的注册商标

    Jenkins拥有的是大多数的核心开发者,社区,和后续更多的commit。

『互联网架构』软件架构-jenkins搭建和 maven gitlab自动化部署流程(上)(五)

jenkins git 、maven gitlab 、tomcat 构建持续集成环境 流程

『互联网架构』软件架构-jenkins搭建和 maven gitlab自动化部署流程(上)(五)

1> 开发者将新版本push到git server (Gitlab)。

2> Gitlab随后触发jenkins master结点进行一次build。(通过web hook或者定时检测)

3> jenkins master结点将这个build任务分配给若干个注册的slave结点中的一个,这个slave结点根据一个事先设置好的脚本进行build。这个脚本可以做的事情很多,比如编译,测试,生成测试报告等等。这些原本需要手动完成的任务都可以交给jenkins来做。

4> 我们在build中要进行编译,这里使用了分布式编译器distcc来加快编译速度。

jenkins的工作原理是先将源代码从gitlab中拷贝一份到本地,然后根据设置的脚本进行build。我们可以看出,整个系统的关键就是那个build脚本,用来告诉jenkins在一次集成中需要执行的任务。

这次将结合一个比较简单maven聚合项目,结合之前的maven私服,git私服和将要搭建的jenkins完成自动化构建。

  • gitlab,nexus私服,jenkins,tomcat的搭建

    >通过源码生成4个虚拟机,准备工作。vagrant已经安装了 对应的docker。

    docker 安装nexus就是为了避免环境变量,用户赋权等复杂的操作。对于vagrant的如何安装不用的系统不一样可以参看

    > mac 安装vgarant :https://idig8.com/2018/07/29/docker-zhongji-07/

    > window安装vgaranthttps://idig8.com/2018/07/29/docker-zhongji-08/

系统类型 IP地址 节点角色 CPU Memory Hostname
Centos7 192.168.66.100 gitlab 2 2G gitlab
Centos7 192.168.66.101 jenkins 2 2G jenkins
Centos7 192.168.66.102 nexus 2 2G nexus
Centos7 192.168.66.103 tomcat 2 2G tomcat

(1). 虚拟机vagrant讲述安装的步骤

vagrant up

(2).机器window/mac开通远程登录root用户下

su -
# 密码
vagrant
#设置 PasswordAuthentication yes
vi /etc/ssh/sshd_config
sudo systemctl restart sshd

『互联网架构』软件架构-jenkins搭建和 maven gitlab自动化部署流程(上)(五)

『互联网架构』软件架构-jenkins搭建和 maven gitlab自动化部署流程(上)(五)

『互联网架构』软件架构-jenkins搭建和 maven gitlab自动化部署流程(上)(五)

『互联网架构』软件架构-jenkins搭建和 maven gitlab自动化部署流程(上)(五)

『互联网架构』软件架构-jenkins搭建和 maven gitlab自动化部署流程(上)(五)

『互联网架构』软件架构-jenkins搭建和 maven gitlab自动化部署流程(上)(五)

『互联网架构』软件架构-jenkins搭建和 maven gitlab自动化部署流程(上)(五)

『互联网架构』软件架构-jenkins搭建和 maven gitlab自动化部署流程(上)(五)

『互联网架构』软件架构-jenkins搭建和 maven gitlab自动化部署流程(上)(五)

四台机器公共执行命令

su -
#密码
vagrant
service docker restart
yum install -y lrzsz

注意:下面除了jenkins的机器不是使用docker,其他全部使用docker全装

66.100 gitlab安装

管理员:root

密码:123456789qwe

mkdir gitlab
cd gitlab
vi start.sh
mkdir postgresql redis gitlab 
chown -R 200 postgresql
chown -R 200 redis
chown -R 200 gitlab
  • 编写脚本
cur_dir=`pwd`
docker stop gitlab-postgresql
docker rm gitlab-postgresql
docker stop gitlab-redis
docker rm gitlab-redis
docker stop gitlab
docker rm gitlab
docker run --name gitlab-postgresql -d \
    --env 'DB_NAME=gitlabhq_production' \
    --env 'DB_USER=gitlab' --env 'DB_PASS=password' \
    --env 'DB_EXTENSION=pg_trgm' \
    --volume ${cur_dir}/postgresql:/var/lib/postgresql \
    sameersbn/postgresql:10
docker run --name gitlab-redis -d \
    --volume ${cur_dir}/redis:/var/lib/redis \
    sameersbn/redis:4.0.9-1
docker run --name gitlab -d \
    --link gitlab-postgresql:postgresql --link gitlab-redis:redisio \
    --publish 10022:22 --publish 10080:80 \
    --env 'GITLAB_PORT=10080' --env 'GITLAB_SSH_PORT=10022' \
    --env 'GITLAB_ROOT_PASSWORD=123456789qwe' \
    --env 'GITLAB_SECRETS_DB_KEY_BASE=long-and-random-alpha-numeric-string' \
    --env 'GITLAB_SECRETS_SECRET_KEY_BASE=long-and-random-alpha-numeric-string' \
    --env 'GITLAB_SECRETS_OTP_KEY_BASE=long-and-random-alpha-numeric-string' \
    --volume ${cur_dir}/gitlab:/home/git/data \
    sameersbn/gitlab[root@gitlab ~]#
  • 启动gitlab

    >重点说下 不要用rz来上传我提供的start.sh脚本sh start.sh的时候会报错。sh start.sh需要执行两遍,不要问我为啥,我也不知道,第一遍执行玩容器自己就挂掉了,在启动一遍就好了

sh start.sh
sh start.sh

『互联网架构』软件架构-jenkins搭建和 maven gitlab自动化部署流程(上)(五)

66.101 jenkins安装

这个不使用容器,相对来说安装比较复杂些。这个机器不光需要安装jenkins,还需要安装maven,git,jdk1.8

  • 为了让各位老铁安装jdk1.8 git 和maven美滋滋,写了个脚本
# @Author: liming
# @Date:   2018-11-26 23:14:59
# @Last Modified by:   liming
# @Last Modified time: 23:15:05
# @urlblog idig8.com
# 个人公众号  编程坑太多

#!/bin/bash
SOFT_PATH=/opt/soft

if [ ! -d $SOFT_PATH ];then
mkdir $SOFT_PATH
else
echo "文件夹已经存在"
fi

yum install -y wget 
#install jdk1.8
cd $SOFT_PATH
wget wget --no-cookies --no-check-certificate --header "Cookie: gpw_e24=http%3A%2F%2Fwww.oracle.com%2F; oraclelicense=accept-securebackup-cookie" "http://download.oracle.com/otn-pub/java/jdk/8u141-b15/336fa29ff2bb4ef291e347e091f7f4a7/jdk-8u141-linux-x64.tar.gz"
tar -zxvf jdk* -C $SOFT_PATH
cd jdk*
JAVA_HOME=`pwd` 

#install maven3.2.3
cd $SOFT_PATH
wget https://archive.apache.org/dist/maven/maven-3/3.2.3/binaries/apache-maven-3.2.3-bin.tar.gz
tar -zxvf apache-maven-3.2.3-bin.tar.gz -C $SOFT_PATH
mv apache-maven-3.2.3 maven-3.2.3
cd maven*
MAVEN_HOME=`pwd`

#install git 2.8.0
cd $SOFT_PATH
yum -y install zlib-devel openssl-devel cpio expat-devel gettext-devel curl-devel perl-ExtUtils-CBuilder perl-ExtUtils- MakeMaker
wget https://mirrors.edge.kernel.org/pub/software/scm/git/git-2.8.0.tar.gz
tar -zxvf git-2.8.0.tar.gz -C $SOFT_PATH
cd git*
./configure
make install
ln -s /usr/local/bin/git /usr/bin/git

#追加环境变量
echo "export JAVA_HOME=${JAVA_HOME}" >> /etc/profile
echo "export PATH=$""JAVA_HOME/bin:$""PATH" >> /etc/profile
echo "export MAVEN_HOME=${MAVEN_HOME}" >> /etc/profile
echo "export PATH=$""MAVEN_HOME/bin:$""PATH" >> /etc/profile
source /etc/profile
#输出信息
echo "-----source update-----"
echo "java version"
java -version
echo "maven version"
mvn -v
echo "-----path-----"
echo "JAVA_HOME:"$JAVA_HOME
echo "MAVEN_HOME:"$MAVEN_HOME
source /etc/profile
  • 查看环境变量

    > 如果环境变量不生效请执行:source /etc/profile

source /etc/profile
git --version
java -version
mvn -v   
````

![](https://upload-images.jianshu.io/upload_images/11223715-11c15505cdc29e44.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)




* 下载jenkins
>官网:https://jenkins.io/

![](https://upload-images.jianshu.io/upload_images/11223715-6de4485ff0e583d0.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

>下载jenkins

``` bash
wget https://mirrors.tuna.tsinghua.edu.cn/jenkins/war-stable/2.138.3/jenkins.war
# 先这样启动目的是直接可以看到秘钥因为第一次安装需要秘钥
java -jar jenkins.war --ajp13Port=-1 --httpPort=8888
#这是后台启动
nohup java -jar jenkins.war --ajp13Port=-1 --httpPort=8888 &

『互联网架构』软件架构-jenkins搭建和 maven gitlab自动化部署流程(上)(五)

『互联网架构』软件架构-jenkins搭建和 maven gitlab自动化部署流程(上)(五)

『互联网架构』软件架构-jenkins搭建和 maven gitlab自动化部署流程(上)(五)

『互联网架构』软件架构-jenkins搭建和 maven gitlab自动化部署流程(上)(五)

『互联网架构』软件架构-jenkins搭建和 maven gitlab自动化部署流程(上)(五)

『互联网架构』软件架构-jenkins搭建和 maven gitlab自动化部署流程(上)(五)

『互联网架构』软件架构-jenkins搭建和 maven gitlab自动化部署流程(上)(五)

  • pipline的插件全部安装

『互联网架构』软件架构-jenkins搭建和 maven gitlab自动化部署流程(上)(五)

  • 之前我也用docker安装过jenkins插件老安装失败各种错误。这次我不用docker插件全部安装成功

66.102 nexus安装

管理员:admin

密码:admin123

mkdir nexus
cd nexus
vi start.sh
mkdir data && chown -R 200 data
  • start.sh
#!/bin/bash
cur_dir=`pwd`
docker stop nexus
docker rm nexus
docker run -d -p 8081:8081 --name nexus -v  ${cur_dir}/data:/sonatype-work sonatype/nexus
  • 启动脚本
sh start.sh

『互联网架构』软件架构-jenkins搭建和 maven gitlab自动化部署流程(上)(五)

『互联网架构』软件架构-jenkins搭建和 maven gitlab自动化部署流程(上)(五)

66.103 tomcat安装

tomcat 还讲什么?不懂?干就完了 兄弟!

mkdir tomcat
cd tomcat
vi start.sh
  • 脚本
#!/bin/bash
cur_dir=`pwd`
docker stop tomcat
docker rm tomcat
docker run --name tomcat -p 8080:8080 -v ${cur_dir}/tomcat-persistence:/bitnami bitnami/tomcat:latest
  • 启动脚本
sh start.sh

『互联网架构』软件架构-jenkins搭建和 maven gitlab自动化部署流程(上)(五)

『互联网架构』软件架构-jenkins搭建和 maven gitlab自动化部署流程(上)(五)

  • war包放在这里

『互联网架构』软件架构-jenkins搭建和 maven gitlab自动化部署流程(上)(五)

『互联网架构』软件架构-jenkins搭建和 maven gitlab自动化部署流程(上)(五)

以上所有的程序安装已经完毕,开始进行自动化的部署流程

应用 IP地址 服务 端口 安装应用 安装方式
gitlab 192.168.66.100 gitlab 10080 gitlab docker
jenkins 192.168.66.101 jenkins 8888 jdk8 maven3.2 git2.8 shell
nexus 192.168.66.102 nexus 8081 nexus docker
tomcat 192.168.66.103 tomcat 8080 tomcat docker

PS:下一步将关联这4台服务器,进行本地代码的提交到gitlab,然后由jenkins操作命令的形式进行自动化的部署。

『互联网架构』软件架构-jenkins搭建和 maven gitlab自动化部署流程(上)(五)

百度未收录

>>原创文章,欢迎转载。转载请注明:转载自IT人故事会,谢谢!

>>原文链接地址:上一篇:

已是最新文章


以上所述就是小编给大家介绍的《『互联网架构』软件架构-jenkins搭建和 maven gitlab自动化部署流程(上)(五)》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Node.js硬实战:115个核心技巧

Node.js硬实战:115个核心技巧

【美】Alex R. Young、【美】Marc Harter / 承竹、慕陶、邱娟、达峰 / 电子工业出版社 / 2017-1 / 109.9

《Node.js 硬实战:115 个核心技巧》是一本面向实战的Node.js 开发进阶指南。作为资深专家,《Node.js 硬实战:115 个核心技巧》作者独辟蹊径,将着眼点放在Node.js 的核心模块和网络应用,通过精心组织的丰富实例,向读者充分展示了Node.js 强大的并发处理能力,读者从中可真正掌握Node 的核心基础与高级技巧。《Node.js 硬实战:115 个核心技巧》总共有三部分......一起来看看 《Node.js硬实战:115个核心技巧》 这本书的介绍吧!

HTML 压缩/解压工具
HTML 压缩/解压工具

在线压缩/解压 HTML 代码

Markdown 在线编辑器
Markdown 在线编辑器

Markdown 在线编辑器

RGB HSV 转换
RGB HSV 转换

RGB HSV 互转工具