为什么需要持续集成呢?
1.因为在开发的过程中,用于阶段性地构建出产品。 化整为零:
1.这套组合可以分成源码管理、编译构建、远程部署
Gitlab的作用:作为源码管理的角色。 1.信任 GitLab 的 GPG 公钥:[root@bc ~]# curl https://packages.gitlab.com/gpg.key 2> /dev/null | sudo apt-key add - &>/dev/null 2.配置一个清华大学的yum源[root@bc ~]# vim /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 不得不说,清华大学的源速度很快,感觉节约了好多生命。 3.安装gitlab和必要的依赖[root@bc ~]# yum makecache [root@bc ~]# yum install gitlab-ce [root@bc ~]# yum install curl policycoreutils openssh-server openssh-clients [root@bc ~]# systemctl enable sshd [root@bc ~]# systemctl start sshd [root@bc ~]# yum install postfix [root@bc ~]# systemctl enable postfix [root@bc ~]# systemctl start postfix 4.初始化gitlab[root@bc ~]# gitlab-ctl reconfigure 5.找到应该访问的地址[root@bc .ssh]# vim /etc/gitlab/gitlab.rb external_url 'http://node1.bc.com'
注意: 或者修改host文件:C:\Windows\System32\drivers\etc\hosts 192.168.31.201 node1 node1.bc.com bc.com 正常访问页面:
使用域名访问
错误访问的页面:
直接访问ip地址会这样!
Maven的作用:Maven负责java语言的编译和打包。 官方地址:http://maven.apache.org/ 1.获取安装包:还是清华的镜像。[root@node2 ~]# wget http://mirrors.tuna.tsinghua.edu.cn/apache/maven/maven-3/3.3.9/binaries/apache-maven-3.3.9-bin.tar.gz 2.解压tar包[root@node2 ~]# tar apache-maven-3.3.9-bin.tar.gz -C /bin/apache-maven-3.3.9/ [root@node2 ~]# ln -sv /bin/apache-maven-3.3.9/ /bin/maven 3.定义变量,输出执行路径[root@node2 ~]# vim /etc/profile.d/maven.sh export M2_HOME=/bin/maven export MAVEN_HOME=/bin/maven PATH=$M2_HOME/bin:$PATH [root@node2 ~]# source /etc/profile.d/maven.sh 4.测试能否正常运行[root@node2 ~]# mvn -v Apache Maven 3.3.9 (bb52d8502b132ec0a5a3f4c09453c07478323dc5; 2015-11-11T00:41:47+08:00) Maven home: /bin/maven Java version: 1.8.0_111, vendor: Oracle Corporation Java home: /usr/java/jdk1.8.0_111/jre Default locale: en_US, platform encoding: UTF-8 OS name: "linux", version: "3.10.0-229.el7.x86_64", arch: "amd64", family: "unix"
JENKINS的功能: 1.获取安装包#安装方式有多种,包括rpm、war包启动、dockerfile。此处为war包。 [root@node2 ~]# wget http://mirrors.jenkins.io/war/latest/jenkins.war 2.启动方式#方法1:直接使用jvm启动 [root@node2 ~]# java -jar jenkins.war #方法2:把war包放置到tomcat的应用目录并启动,让其自动解压 [root@node2 ~]# cp jenkins.war /usr/local/tomcat/webapps/ [root@node2 ~]# startup.sh
如果下载lts版提示找不到cloudbees-folder,下载weekly版的
提示:Maven、Git、JDK都是安装到jenkins服务器。 1.获取源码包[root@node2 ~]# wget https://www.kernel.org/pub/software/scm/git/git-2.12.0.tar.gz `注意:为了能让jenkins能正常从gitlab中拉取源码,需要编译1.9以上的版本。` 2.git构建时,需要的环境[root@node2 ~]# yum groupinstall "Development Tool" [root@node2 ~]# yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel gcc perl-ExtUtils-MakeMaker openssh-clients `除了正常的编译环境之外,编译git的时候还要额外安装各种devel包。否则会构建失败。` 3.编译并安装,同时输出执行路径到环境变量中:[root@node2 ~]# make prefix=/usr/local/git all [root@node2 ~]# make prefix=/usr/local/git install [root@node2 ~]# echo "export PATH=$PATH:/usr/local/git/bin" >> /etc/bashrc [root@node2 ~]# source /etc/bashrc 4.验证能否正常运行:[root@node2 ~]# git --version
1.指定Maven、Git、JDK的安装路径
整合工具
指定JDK和Git路径
指定Maven路径
2.为Jenkins安装配件:
jenkins-安装插件
需要安装的插件: Gitlab Plugin #安装之后才可以在系统配置中指定gitlab的IP地址 Git Plugin Git Client Plugin #用于jenkins在gitlab中拉取源码 Publish Over SSH #用于通过ssh部署应用 Maven Integration plugin #用于新建maven项目 注意 : 安装了插件之后,在全局配置才能详细配置。 3.为刚才安装的插件,配置选项(留意图片下的注释)
Jenkins全局设定
配置Gitlab的地址,红字表示需要Gitlab的账号密码,但是这个可以在新建项目的时候指定。
Publish_over_SSH插件,可以使用Path to key指定jenkins主机的私钥路径,也可以如上。 注意:部署应用的主机需要jenkins主机的公钥,可以ssh-copy-id命令复制过去。
配置部署应用的主机的IP地址
注意:安装了Maven Integration plugin才可以创建maven项目
刚才红字提示Gitlab的账号密码在这里可以配置
这一步很重要!!! 它包括了两个步骤: 1.发送编译好的war包到目标主机,此处为tomcat。 2.在发送war包之后,执行自己写的脚本,部署新的应用到服务器上。
1.配置主机SSH_KEY公钥到gitlab上
用于无密码直接把代码git push到gitlab上
2.初始化本地git目录、并添加远程仓库[root@node2 javaCode]# git init [root@node2 javaCode]# git remote add origin git@bc.com:root/HelloWorld-public.git 3.上传代码[root@node2 javaCode]# git add . [root@node2 javaCode]# git commit -m "2nd Commit" [root@node2 javaCode]# git push origin master 4.本地的目录结构#注意pom.xml文件要放在根目录下,maven编译的时候会自动读取。 [root@node2 javaCode]# tree . ├── pom.xml └── src ├── Greeter.java └── HelloWorld.java
进入新建的项目中
注意事项:
1.进入之前创建的项目中,点立即构建可以通过maven进行编译。 查看输出的最后:SSH: Disconnecting configuration [tomcat] ... ERROR: Exception when publishing, exception message [Exec timed out or was interrupted after 120,002 ms] Build step 'Send files or execute commands over SSH' changed build result to UNSTABLE Finished: UNSTABLE 结合图例并查看输出,可以知道: 1.黄色为编译成功。 2.部署脚本出了点意外,所以是黄色不稳定。
构建成功,部署成功之后,图例是蓝色的。 云朵是用来统计构建成功和构建失败的比例。
作者:酱油菠菜 链接:https://www.jianshu.com/p/3507d8b2ac87 (责任编辑:IT) |