一、Jenkins安装和持续集成环境配置
1、持续集成流程说明
1 )首先,开发人员每天进行代码提交,提交到 Git 仓库,测试人员进行合并;2 )然后, Jenkins 作为持续集成工具,使用 Git 工具到 Git 仓库拉取代码到集成服务器,再配合 JDK ,Maven 等软件完成代码编译,代码测试与审查,测试,打包等工作,在这个过程中每一步出错,都重新再执行一次整个流程。3 )最后, Jenkins 把生成的 jar 或 war 包分发到测试服务器或者生产服务器,测试人员或用户就可以访问应用。
2、Gitlab代码托管服务器安装
GitLab 和 GitHub 一样属于第三方基于 Git 开发的作品,免费且开源(基于 MIT 协议),与 Github 类似, 可以注册用户,任意提交你的代码,添加SSHKey 等等。不同的是, GitLab 是可以部署到自己的服务器 上,数据库等一切信息都掌握在自己手上,适合团队内部协作开发。一般公司为了安全性,都会采用GitLab进行管理代码。
yum -y install policycoreutils openssh-server openssh-clients postfifix
systemctl enable sshd && sudo systemctl start sshd
systemctl enable postfifix && systemctl start postfifix
fifirewall-cmd --add-service=ssh --permanentfifirewall-cmd --add-service=http --permanentfifirewall-cmd --reload
wget https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el6/gitlab-ce-12.4.2-ce.0.el6.x86_64.rpm
rpm -i gitlab-ce-12.4.2-ce.0.el6.x86_64.rpm
vi /etc/gitlab/gitlab.rb
external_url ' http://xxxxxxx:82 ' nginx['listen_port'] = 82
gitlab-ctl reconfifiguregitlab-ctl restart
fifirewall-cmd --zone=public --add-port=82/tcp --permanentfifirewall-cmd --reload
cat /etc/gitlab/initial_root_password
3.持续集成环境(1)-Jenkins安装
安装jenkins的方法很多,笔者在这里采用tomcat结合war包的形式安装jenkins
1、先在linux上安装JAVA JDK
jdk的安装可以参照下我之前的文章
Linux下安装Jmeter_Yasar.l的博客-CSDN博客
2、下载tomcat,然后上传到linux服务器进行解压;
tomcat官网:Apache Tomcat® - Welcome!
解压:
tar -xvf apache-tomcat-9.0.36.tar.gz
修改tomcat的默认启用端口,在tomcat的/export/server/apache-tomcat-9.0.36/conf目录下的server.xml文件,把8080替换为8081,然后保存。
然后切换到bin目录下,启动(成功效果如图)
./startup.sh // 启动
# 这个文件停止tomcat服务,一般不用,用了就访问不了了
./shutdown.sh // 停止
3、jenkins下载安装
下载页面:Jenkins 的安装和设置
将下载到的war包,放到tomcat的/export/server/apache-tomcat-9.0.36/webapps目录下
然后重新启动tomcat
./shutdown.sh // 停止
./startup.sh // 启动
二、持续集成环境-Jenkins插件管理
1、修改Jenkins插件下载地址
http://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json
http://192.1xx.xxx.xxx:8081/jenkins/restart
2、下载汉化插件
下载完后重新启动jenkins
三、持续集成环境-Jenkins凭证管理
安装插件后,左边多了"凭证"菜单,在这里管理所有凭证
可以添加的凭证有5种:
四、安装Git插件和Git工具
yum install git -y 安装git --version 安装后查看版本
输入gitlab的账号信息,然后点击保存
找到"源码管理"->"Git",在Repository URL复制Gitlab中的项目URL
执行,看是否把gitlab的项目拉取到jenkins服务器
拉取成功
jenkins默认拉取到服务器的这个位置:/root/.jenkins/workspace/test,我们可以上服务器查看文件
五、持续集成环境-Jenkins自动构建Maven项目
Maven安装和配置
下载maven到linux服务器
wget https://archive.apache.org/dist/maven/maven-3/3.6.1/binaries/apache-maven-3.6.1-bin.tar.gz --no-check-certificate
解压tar包
tar -zxvf apache-maven-3.6.1-bin.tar.gz
添加环境变量
vi /etc/profile
export MAVEN_HOME=/export/server/apache-maven-3.6.1
export JAVA_HOME=/export/server/jdk-11
export PATH=$PATH:$JAVA_HOME/bin:$MAVEN_HOME/bin
刷新环境变量
source /etc/profile 配置生效
mvn -v 查找Maven版本
修改Maven的settings.xml
mkdir repo 创建本地仓库目录
vim /export/server/apache-maven-3.6.1/conf/settings.xml
<localRepository>/export/server/repo</localRepository>
镜像改为阿里云镜像
<mirrors>
<mirror>
<id>alimaven</id>
<mirrorOf>central</mirrorOf>
<name>aliyun maven</name>
<url>http://maven.aliyun.com/nexus/content/groups/public/</url>
</mirror>
</mirrors>
jenkins配置环境变量
Manage Jenkins->Configure System->Global Properties ,添加三个全局变量
JAVA_HOME、MAVEN_HOME、PATH+EXTRA
然后在tool中配置关联JDK和MAVEN
新建一个ITEM试一下是否能拉取项目和进行mvn打包
打包成功
publish over ssh插件下载和配置
下载完后重新启动jenkins
1.首先Jenkins要安装Publish Over SSH插件,找到插件管理,搜索下载即可;
2.安装好Publish Over SSH插件之后,点击系统管理–>系统设置,在系统设置界面找到Publish Over SSH部分;
打开我们刚刚新建的项目,我们在MVN打包后,把打的包推送到后端的服务器
shell的脚本
注意:在脚本前需要添加source /etc/profile,刷新配置文件,不然通过jenkins去执行脚本的时候,会获取不到服务器的JDK的路径导致报错;
source /etc/profile
ID=`ps -ef | grep community | grep -v grep | awk '{print $2}'`
echo $ID
for id in $ID
do
kill -9 $id
echo "kill $id"
done
nohup java -jar community-0.0.1-SNAPSHOT.jar > ./community-api.log 2>&1 &
在服务器查看 ps -ef |grep community,发现项目已经成功启动。
后续更新中........,有兴趣的关注加点赞收藏。。。。创作不易
六、Pipeline流水线Maven项目构建
Pipeline简介
安装Pipeline插件
文章来源地址https://www.toymoban.com/news/detail-851379.html
1)Declarative声明式-Pipeline
创建项目
流水线->选择HelloWorld模板
pipeline {
agent anystages {
stage('Hello') {
steps {
echo 'Hello World'
}
}
}
}
选择git,输入仓库名称和选择gitlab的账号,然后点击生成脚本
将生成的脚本放到step中
下载SSH Pipeline Steps插件,然后重新启动
在线生成ssh语句
文章来源:https://www.toymoban.com/news/detail-851379.html
pipeline {
agent anystages {
stage('拉取gitlab代码') {
steps {
checkout scmGit(branches: [[name: '*/master']], extensions: [], userRemoteConfigs: [[credentialsId: '347db7d6-7d58-4aa1-92f1-c45b5684d8a5', url: 'http://192.168.88.xxx:82/test/community-api.git']])
echo '拉取gitlab代码成功!'
}
}
stage('Maven编译打包') {
steps {
sh 'mvn clean package'
echo 'Maven编译打包成功!'
}
}
stage('项目部署') {
steps {
sshPublisher(publishers: [sshPublisherDesc(configName: 'community-api', transfers: [sshTransfer(cleanRemote: false, excludes: '', execCommand: '''cd /export/software
sh ./start.sh''', execTimeout: 120000, flatten: false, makeEmptyDirs: false, noDefaultExcludes: false, patternSeparator: '[, ]+', remoteDirectory: '/', remoteDirectorySDF: false, removePrefix: 'target/', sourceFiles: 'target/community-0.0.1-SNAPSHOT.jar')], usePromotionTimestamp: false, useWorkspaceInPromotion: false, verbose: false)])
echo '项目部署成功!'
}
}
}
}
2)Scripted Pipeline脚本式-Pipeline
node {
def mvnHome
stage('拉取gitlab代码') {
git credentialsId: '347db7d6-7d58-4aa1-92f1-c45b5684d8a5', url: 'http://192.16xxx.151:82/test/community-api.git' }
stage('编译打包') {
sh 'mvn clean package'
}
stage('部署项目') {
sshPublisher(publishers: [sshPublisherDesc(configName: 'community-api', transfers: [sshTransfer(cleanRemote: false, excludes: '', execCommand: '''cd /export/software
sh ./start.sh''', execTimeout: 120000, flatten: false, makeEmptyDirs: false, noDefaultExcludes: false, patternSeparator: '[, ]+', remoteDirectory: '/', remoteDirectorySDF: false, removePrefix: 'target/', sourceFiles: 'target/community-0.0.1-SNAPSHOT.jar')], usePromotionTimestamp: false, useWorkspaceInPromotion: false, verbose: false)]) }
}
Pipeline Script from SCM
把Jenkinsfifile上传到Gitlab
2)在项目中引用该文件
部署成功
七、Jenkins项目构建细节-常用的构建触发器
触发远程构建
用的不多,返回方式参考上图
其他工程构建后触发(Build after other projects are build)
用的不多
定时构建(Build periodically)
定时字符串从左往右分别为:分 时 日 月 周 一些定时表达式的例子:每 30 分钟构建一次: H 代表形参 H/30 * * * * 10:02 10:32每 2 个小时构建一次 : H H/2 * * *每天的 8 点, 12 点, 22 点,一天构建 3 次: ( 多个时间点中间用逗号隔开 ) 0 8,12,22 * * *每天中午 12 点定时构建一次 H 12 * * *每天下午 18 点定时构建一次 H 18 * * *在每个小时的前半个小时内的每 10 分钟 H(0-29)/10 * * * *每两小时一次,每个工作日上午 9 点到下午 5 点 ( 也许是上午 10:38 ,下午 12:38 ,下午 2:38 ,下午 4:38) H H(9-16)/2 * * 1-5
轮询SCM(Poll SCM)
轮询SCM,是指定时扫描本地代码仓库的代码是否有变更,如果代码有变更就触发项目构建。
Git hook自动触发构建(主要采用这种)
安装Gitlab Hook插件
Jenkins设置自动构建
Gitlab配置webhook
接下来我们修改
到了这里,关于Jenkins持续集成入门到精通-一篇就够的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!