几年前没用过jenkins的时候,每次都需要用eclipse打个war包,然后小心翼翼的上传到服务器,给服务器原有的war包改个名字,mv到bak目录中,停止服务,删除原有的webapps的项目,再把新上传的war包放进到tomcat的webapp说的目录下,启动项目。每次改个html的标签的名字都需要重新上传,每次都是这么繁琐的操作。其实小公司还可以容忍,如果是比较大的项目,还持续停留在这个脚本上运维人员都累死了,因为有可能一次部署几十个项目。源码:https://github.com/limingios/netFuture/tree/master/jenkins/ysource/idig8
历史
>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。
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
su - #密码 vagrant service docker restart yum install -y lrzsz
注意:下面除了jenkins的机器不是使用docker,其他全部使用docker全装
管理员: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,git,jdk1.8
# @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 &
管理员:admin
密码:admin123
mkdir nexus cd nexus vi start.sh mkdir data && chown -R 200 data
#!/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
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
应用 | 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操作命令的形式进行自动化的部署。
百度未收录
>>原创文章,欢迎转载。转载请注明:转载自IT人故事会,谢谢!
>>原文链接地址:上一篇:已是最新文章