• 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: 'git@192.168.10.254: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: 'git@192.168.10.254: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 www@192.168.10.230:/data/tomcat/webapps/testapp'
       sh 'scp -P22 /var/lib/jenkins/workspace/pipline-test/web233.zip www@192.168.10.231:/data/tomcat/webapps/testapp'
       }
       
       stage('停止服务') { //echo '停止服务'
       sh 'ssh -p22 www@192.168.10.230 "/etc/init.d/tomcat stop"'
       sh 'ssh -p22 www@192.168.10.231 "/etc/init.d/tomcat stop"'
       }
       
       stage('代码替换') { //echo '代码替换'
       sh 'ssh -p22 www@192.168.10.230 "cd /data/tomcat/webapps/testapp && rm -rf ./index.* && unzip web233.zip && rm -rf web233.zip"'
       sh 'ssh -p22 www@192.168.10.231 "cd /data/tomcat/webapps/testapp && rm -rf ./index.* && unzip web233.zip && rm -rf web233.zip"'
       }
       
       stage('启动服务') { //echo '启动服务'
       sh 'ssh -p22 www@192.168.10.230 "/etc/init.d/tomcat start"'
       sh 'ssh -p22 www@192.168.10.231 "/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 www@192.168.10.230
    ssh-copy-id -p22 www@192.168.10.231

    pipline
    pipline

    node ('jenkins-slave1') {
       stage('代码clone') { //echo '代码clone'
       sh 'cd /var/lib/jenkins/workspace/workspace/pipline-test && rm -rf ./* && git clone git@192.168.10.254:web233/web1.git'
       //git credentialsId: '900ec5eb-5557-4f26-94cd-85c72a3c7f50', url: 'git@192.168.10.254: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 www@192.168.10.230:/data/tomcat/webapps/testapp'
       sh 'scp -P22 /var/lib/jenkins/workspace//workspace/pipline-test/web1/web233.zip www@192.168.10.231:/data/tomcat/webapps/testapp'
       }
       
       stage('停止服务') { //echo '停止服务'
       sh 'ssh -p22 www@192.168.10.230 "/etc/init.d/tomcat stop"'
       sh 'ssh -p22 www@192.168.10.231 "/etc/init.d/tomcat stop"'
       }
       
       stage('代码替换') { //echo '代码替换'
       sh 'ssh -p22 www@192.168.10.230 "cd /data/tomcat/webapps/testapp && rm -rf ./index.* && unzip web233.zip && rm -rf web233.zip"'
       sh 'ssh -p22 www@192.168.10.231 "cd /data/tomcat/webapps/testapp && rm -rf ./index.* && unzip web233.zip && rm -rf web233.zip"'
       }
       
       stage('启动服务') { //echo '启动服务'
       sh 'ssh -p22 www@192.168.10.230 "/etc/init.d/tomcat start"'
       sh 'ssh -p22 www@192.168.10.231 "/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 git@192.168.10.254:web233/web1.git
  • 相关阅读:
    [易学易懂系列|rustlang语言|零基础|快速入门|(18)|use关键词]
    [易学易懂系列|rustlang语言|零基础|快速入门|(17)|装箱crates]
    [易学易懂系列|rustlang语言|零基础|快速入门|(16)|代码组织与模块化]
    区块链行业访谈:《创世访谈录》
    波卡简介
    [易学易懂系列|rustlang语言|零基础|快速入门|(15)|Unit Testing单元测试]
    GIT分布式代码管理系统
    jenkins介绍及部署tomcat环境、部署Maven项目及密码忘记修改
    Docker安装、命令详情、层级架构、docker服务启动失败解决方法
    ELK日志分析系统部署
  • 原文地址:https://www.cnblogs.com/fina/p/11240029.html
Copyright © 2020-2023  润新知