jenkins补充1

jenkins补充1

pipline实现代码部署

https://jenkins.io/2.0/
pipline 是帮助Jenkins 实现Cl到CD转变的重要角色,是运行在jenkins2.X版本的核心插件,简单来说Pipline就是一套运行于Jenkins上的工作流框架,将原本独立运行于单个或者多个节点的任务连接起来,实现单个任务难以完成的复杂发布流程,从而实现单个任务很难实现的复杂流程编排和任务可视化,Pipeline的实现方式是一套Groovy DSL,任何发布流程都可以表述为一段Groovy 脚本。

pipline优势

  • 可持续性:jenkins的重启或者中断后不影响已经执行的Pipline Jobe
  • 支持暂停:pipline可以选择停止并等待人工输入或批准后再继续执行。
  • 可扩展:通过groovy的编程更容易的扩展插件。
  • 并行执行:通过groovy脚本可以实现step,stage间的并行执行,和更复杂的相互依赖关系。

pipline 语法

  • Stage:阶段,一个pipline 可以划分为若干个stage,每个stage都是一个操作,比如clone代码、代码编译、代码测试和代码部署,阶段是一个逻辑分组,可以跨多个node执行。
  • Node:节点,每个node都是一个jenkins节点,可以是jenkins master也可以是jenkins agent,node是执行step的具体服务器。
  • Step:步骤,step是jenkinspipline最基本的操作单元,从在服务器创建目录到构建容器镜像,由各类
    Jenkins 插件提供实现,例如:sh “make"

pipline job测试

phpline 创建一个job

jenkins
jenkins

jenkins
jenkins

写入测试代码

node {
   stage('代码clone') { 
   echo '代码clone'
   }
   
   stage('代码打包') { 
   echo '代码打包'
   }
   
   stage('停止服务') { 
   echo '停止服务'
   }
   
   stage('启动服务') { 
   echo '启动服务'
   }
}

jenkins
jenkins

执行pipline job

jenkins
jenkins

查看pipline job执行结果

jenkins
jenkins

  • 代码clone
  • 代码打包
  • 停止服务
  • 代码替换
  • 启动服务

查看语法
piiline

node {
   stage('代码clone') { //echo '代码clone'
   git credentialsId: '900ec5eb-5557-4f26-94cd-85c72a3c7f50', url: '[email protected]:web233/web1.git'
   }
   
   stage('代码打包') { 
   echo '代码打包'
   }
   
   stage('停止服务') { 
   echo '停止服务'
   }
 
   stage('代码替换') { 
   echo '代码替换'
   }
   
   stage('启动服务') { 
   echo '启动服务'
   }
}

pipline
pipline

pipline
pipline

执行结果
pipline

pipline
pipline

node {
   stage('代码clone') { //echo '代码clone'
   git credentialsId: '900ec5eb-5557-4f26-94cd-85c72a3c7f50', url: '[email protected]:web233/web1.git'
   }
   
   stage('代码打包') { //echo '代码打包'
   sh 'cd /var/lib/jenkins/workspace/pipline-test && rm -rf web233.zip && zip -r web233.zip ./*'
   sh 'scp -P22 /var/lib/jenkins/workspace/pipline-test/web233.zip [email protected]:/data/tomcat/webapps/testapp'
   sh 'scp -P22 /var/lib/jenkins/workspace/pipline-test/web233.zip [email protected]:/data/tomcat/webapps/testapp'
   }
   
   stage('停止服务') { //echo '停止服务'
   sh 'ssh -p22 [email protected] "/etc/init.d/tomcat stop"'
   sh 'ssh -p22 [email protected] "/etc/init.d/tomcat stop"'
   }
   
   stage('代码替换') { //echo '代码替换'
   sh 'ssh -p22 [email protected] "cd /data/tomcat/webapps/testapp && rm -rf ./index.* && unzip web233.zip && rm -rf web233.zip"'
   sh 'ssh -p22 [email protected] "cd /data/tomcat/webapps/testapp && rm -rf ./index.* && unzip web233.zip && rm -rf web233.zip"'
   }
   
   stage('启动服务') { //echo '启动服务'
   sh 'ssh -p22 [email protected] "/etc/init.d/tomcat start"'
   sh 'ssh -p22 [email protected] "/etc/init.d/tomcat start"'
   }
}

在上传一个版本

cat index.html 
this is web233 test v1...
this is web233 test v2...
this is web233 test v3...
this is web233 test v4...
this is web233 test v5...
git add ./*
git  commit -m "v5"
git push 

配置slave执行job
jenkins-slave1

ssh-keygen
cat /root/.ssh/id_rsa.pub
ssh-copy-id -p22 [email protected]
ssh-copy-id -p22 [email protected]

pipline
pipline

node ('jenkins-slave1') {
   stage('代码clone') { //echo '代码clone'
   sh 'cd /var/lib/jenkins/workspace/workspace/pipline-test && rm -rf ./* && git clone [email protected]:web233/web1.git'
   //git credentialsId: '900ec5eb-5557-4f26-94cd-85c72a3c7f50', url: '[email protected]:web233/web1.git'
   }
   
   stage('代码打包') { //echo '代码打包'
   sh 'cd /var/lib/jenkins/workspace/workspace/pipline-test/web1 && rm -rf web233.zip && zip -r web233.zip ./*'
   sh 'scp -P22 /var/lib/jenkins/workspace//workspace/pipline-test/web1/web233.zip [email protected]:/data/tomcat/webapps/testapp'
   sh 'scp -P22 /var/lib/jenkins/workspace//workspace/pipline-test/web1/web233.zip [email protected]:/data/tomcat/webapps/testapp'
   }
   
   stage('停止服务') { //echo '停止服务'
   sh 'ssh -p22 [email protected] "/etc/init.d/tomcat stop"'
   sh 'ssh -p22 [email protected] "/etc/init.d/tomcat stop"'
   }
   
   stage('代码替换') { //echo '代码替换'
   sh 'ssh -p22 [email protected] "cd /data/tomcat/webapps/testapp && rm -rf ./index.* && unzip web233.zip && rm -rf web233.zip"'
   sh 'ssh -p22 [email protected] "cd /data/tomcat/webapps/testapp && rm -rf ./index.* && unzip web233.zip && rm -rf web233.zip"'
   }
   
   stage('启动服务') { //echo '启动服务'
   sh 'ssh -p22 [email protected] "/etc/init.d/tomcat start"'
   sh 'ssh -p22 [email protected] "/etc/init.d/tomcat start"'
   }
}

构建过程中注意
目录路径或文件夹是否存在
pipline

git认证没有做好
pipline

软件包没有装
pipline

免密钥登陆没有设置
pipline

完成
pipline

jenkins脚本及传递参数使用

新建一个任务做测试
jenkins

看需求要保留天数及个数
jenkins

添加选项参数
jenkins

jenkins
jenkins

构建执行shell窗口
jenkins

bash /root/scripts/deploy.sh

jenkins
jenkins

发送邮件通知
jenkins

jenkins
jenkins

mkdir -pv /root/scripts
cd /root/scripts/
[root@jenkins scripts]# cat deploy.sh 
#!/bin/bash

whoami

IP_LIST=$1
if [ ${IP_LIST} == "GROUP1" ];then
  IP="192.168.10.230"
elif [ ${IP_LIST} == "GROUP2" ];then
  IP="192.168.10.231"
fi

echo $IP

jenkins
jenkins

jenkins
jenkins

jenkins
jenkins

添加字符参数
jenkins

jenkins
jenkins

jenkins
jenkins

jenkins
jenkins

ls /var/lib/jenkins/workspace/project1/

#!/bin/bash
whoami
IP_LIST=$1
BRANCH=$2

if [ ${IP_LIST} == "GROUP1" ];then
  IP="192.168.10.230"
elif [ ${IP_LIST} == "GROUP2" ];then
  IP="192.168.10.231"
fi

echo $IP
echo $BRANCH
if [ -z $BRANCH ];then
  BRANCH=master
fi
echo $BRANCH

cd /var/lib/jenkins/workspace/project1 && rm -rf ./*
git clone -b $BRANCH [email protected]:web233/web1.git

猜你喜欢

转载自www.cnblogs.com/fina/p/11240029.html