CICD之Jenkins使用

CICD之Jenkins使用一、Jenkins1、Docker安装Jenkins1.docker安装dockerrun\-uroot\-d\-p8080:8080\-p50000:50000\-vjenkins-data:/var/jenkins_home\-v/var/run/docker.sock:/var/run/docker.sock\jenkinsci/blueocean2.可选镜像jenkins/jenkins:lts#可选镜像jenkin

大家好,又见面了,我是你们的朋友全栈君。

一、Jenkins

1、Docker安装Jenkins

1.docker安装

docker run \
  -u root \
  -d \
  -p 8080:8080 \
  -p 50000:50000 \
  -v jenkins-data:/var/jenkins_home \
  -v /var/run/docker.sock:/var/run/docker.sock \
  jenkinsci/blueocean

2.可选镜像 jenkins/jenkins:lts

#可选镜像 jenkins/jenkins:lts
 
docker service create --name jenkins \
-u root \
-p 8080:8080 -p 50000:50000 \
--mount type=volume,source=jenkins-data,destination=/var/jenkins_home \
--mount type=bind,source=/var/run/docker.sock,destination=/var/run/docker.sock \
--constraint node.role==manager \
jenkinsci/blueocean

#把Jenkins调度manager。jenkins帮我们部署服务,docker service,docker stack
#jenkins是java写。docker方式安装的jenkins。jenkins容器中默认就有java环境啦
#密码
jenkinsci/blueocean比  jenkins/jenkins:lts多了blueocean
blueocean?可视化的CICD。jenkinsfile不会写。通过可视化界面,可视化的创建流水线。
blueocean也可以自己再装。

 
rancher;
参数化构建.....
#插件下载加速
注意:配置国内的镜像
官方下载插件慢 更新下载地址

cd { 
   你的Jenkins工作目录}/updates  #进入更新配置位置
sed -i 's/http:\/\/updates.jenkins-ci.org\/download/https:\/\/mirrors.tuna.tsinghua.edu.cn\/jenkins/g' default.json && sed -i 's/http:\/\/www.google.com/https:\/\/www.baidu.com/g' default.json

这是直接修改的配置文件,如果前边Jenkins用sudo启动的话,那么这里的两个sed前均需要加上sudo
重启Jenkins,安装插件


https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json

JAVA环境是好的,docker命令也是可用

使用jenkins的最佳实战。

  • 1、编写服务的jenkinsfile描述文件。成为Pipeline。流水线文件。解耦(不用我们每次手动配置jenkins的每一步做什么事情,以前都得一步一步自己配置流水线的流程。)
  • 2、jenkins只要拿到这个项目,发现了这个jenkinsfile文件,就能自动化的执行整个流程。

jenkins把项目拉倒jenkins服务器,放到workspace(一般我们的源代码都在这里),开始进行流水线处理。

自动拉取代码

  • 定时轮询
  • 远程触发,github会给我们jenkins(webhook(钩子程序))发送请求{jenkins需要公网能访问}。gitlab。
  • 手动构建(手动立即构建)

编写代码完–>jenkins全部流水执行完—>发送邮件/发短信。

1、安装blueocean插件

2、详细教程可以参加下面的介绍

用 Maven 构建 Java 应用

用 Blue Ocean 创建流水线

2、使用

1、初试pipeline

pipeline { 
   
    agent { 
    docker 'maven:3.3.3' } #代理,
    stages { 
     #阶段。
        stage('build') { 
    #每一个阶段
            steps { 
      #每一个步骤
                sh 'mvn --version'
            }
        }
        stage('test') { 
   
           steps { 
   
              sh 'echo success'
           }
        }
    }
}
#每一个流水线工程最终都在
/var/jenkins_home/workspace/流水线工程名

#agent { docker 'maven:3.3.3' }
整个流水线工程
docker run -t -d -u 0:0 -w /var/jenkins_home/workspace/helloworld --volumes-from cd270036b30eada48bb123338864c1451ee8c7d30997a3b856c6d0174b1be2e2 -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** maven:3.3.3 cat
整个流水线的文件夹是在maven容器内运行的

2、pipeline语法介绍

#1、多步骤。steps{ sh ```多命令 ```}
#2、agent:jenkins接下来的流水线运行在哪个环境
	https://www.jenkins.io/doc/book/pipeline/syntax/#agent
	 agent any:任意环境(立刻就能运行,不挑环境),
	 agent none:顶级整个流水线环境,每个阶段stage,要定义自己的agent环境
	 agent { 
    label 'my-defined-label' }
	 agent { 
    node { 
    label 'labelName' } } ;和agent { 
    label 'labelName' }一个意思,
	 agent { 
   
        docker { 
   
            image 'maven:3-alpine'
            label 'my-defined-label'
            args  '-v /tmp:/tmp'
        }
     } #指定当前流水线或者stage运行在使用docker下载来的这个环境下,用完就删了。如果这些环境有些数据需要永久保存我们就应该挂载出来。
     
#3、环境变量,jenkins整个流水线过程中,我可以把经常要用的一些值,抽取为环境变量,在下面方便引用。
 environment { 
   
        DISABLE_AUTH = 'true'
        DB_ENGINE    = 'sqlite'
    }
 
#4、后置处理
    post { 
   
        always { 
   
            junit 'build/reports/**/*.xml'
        }
        aborted: { 
   
           sh 'echo 666'
        }
    }
always:完成

changed:阶段发生变化执行

fixed:

regression
Only run the steps in post if the current Pipeline’s or stage’s run’s status is failure, unstable, or aborted and the previous run was successful.

aborted:手工停止

failure
Only run the steps in post if the current Pipeline’s or stage’s run has a "failed" status, typically denoted by red in the web UI.

success
Only run the steps in post if the current Pipeline’s or stage’s run has a "success" status, typically denoted by blue or green in the web UI.

unstable
Only run the steps in post if the current Pipeline’s or stage’s run has an "unstable" status, usually caused by test failures, code violations, etc. This is typically denoted by yellow in the web UI.

unsuccessful
Only run the steps in post if the current Pipeline’s or stage’s run has not a "success" status. This is typically denoted in the web UI depending on the status previously mentioned.

cleanup
Run the steps in this post condition after every other post condition has been evaluated, regardless of the Pipeline or stage’s status.

示例:构建失败的时候邮件通知
post { 
   
    failure { 
   
        mail to: 'team@example.com',
             subject: "Failed Pipeline: ${currentBuild.fullDisplayName}",
             body: "Something is wrong with ${env.BUILD_URL}"
    }
}
#5、人工确认
 input "Does the staging environment look ok?"
#6、总结:Pipeline语法
pipeline { 
   
   agent any
   stages { 
   
      stage('第一阶段') { 
   
         //
         steps { 
   
           sh 'echo 111'
           emailext body: '哈哈', subject: '测试', to: '22222@qq.com'
         }
      }
   }
}
#所有不会写的语法,全部参照 流水线工程里面的 语法生成器。
片段生成器--》可以生产step里面不会写的内容
Declarative Directive Generator--》生成哪些指令不会用
post { 
   
  always { 
   
    // One or more steps need to be included within each condition's block. } aborted { // One or more steps need to be included within each condition's block.
  }
  success { 
   
    // One or more steps need to be included within each condition's block. } failure { // One or more steps need to be included within each condition's block.
  }
}

3、pipeline指定镜像源

    agent { 
   
        docker { 
   
            image 'maven:3-alpine'  #docker下载来的maven作为接下来的环境,容器用完就没了
            args '-v /root/.m2:/root/.m2'  #mvn从网上下载jar包。下载来的东西都挂载到linux的/root/.m2
        }
    }
    #默认使用docker的maven环境下载很慢。如何下载快的问题
    #1、改配置文件。进入linux的/root/.m2。修改settings-docker.xml
    #2、指定maven的配置。 
    		2.1:先给项目里面放maven-setting.xml文件,配置好mirror,profile等。
    		2.2:jenkins流水线,mvn -gs maven-setting.xml

4、远程构建访问

#远程的github代码提交了,jenkins流水线自动触发构建。jenkins只要公网能访问就行
#远程构建即使配置了github 的webhook,默认会403.我们应该使用用户进行授权
1、创建一个用户
2、一定随便登陆激活一次
3、生成一个apitoken
http://gitops:11d89e84d79bee5b3e0fdd852c3201697e@121.89.193.184:8080/job/simple-java-maven-app/build?token=helloworld
4、github的webhook地址如下
http://用户id:apiToken@111.229.61.54/job/simple-node-js-react-npm-app/build?token=hellojenkins
每个项目是自己的

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-XkR4kxw2-1590243264780)(02%E3%80%81CICD&Jenkins.assets/image-20200510214151984.png)]

远程触发: JENKINS_URL/job/simple-java-maven-app/build?token=TOKEN_NAME 请求即可

5、动态变量参照

http://121.89.193.184:8080/job/icoding-java-custom-jenkins/pipeline-syntax/globals

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/139452.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • bytebuf使用_java byte类型

    bytebuf使用_java byte类型ByteBufAllocator为了减少分配和释放内存的开销,Netty通过支持池类ByteBufAllocator,可用于分配的任何ByteBuf我们已经描述过的类型的实例。是否使用池是由应用程序决定的,表5.8列出了ByteBufAllocator提供的操作。Table5.8ByteBufAllocatormethods名称描述buffer()buffer(int)buf…

  • Python 字典的定义以及常用方法

    Python 字典的定义以及常用方法定义(字典的key必须是不可变类型,也成为可hash类型,并且字典是无序的):info={'name':'egon','age':18,'se

  • QQ vx 刷屏神器!!

    QQ vx 刷屏神器!!在电脑上桌面新建一个txt,然后在里面写入下面的代码,写好后把文件的txt格式改为vbs格式即可次数别设太多,会卡死,间隔时间别太短setwshshell=wscript.createobject(“wscript.shell”)wshshell.AppActivate”王择玉”fori=1to2wscript.sleep100wshshell.sendKeys…

  • MIUI刷Android原生,小米手机怎么刷安卓原生系统

    MIUI刷Android原生,小米手机怎么刷安卓原生系统小米手机自带的系统很好,但是很多人还是希望用安卓的原生系统,小米手机是支持刷机成为安卓原生系统的。那么小米手机怎么刷安卓原生系统呢?今天学习啦小编与大家分享下小米手机刷安卓原生系统的具体操作步骤,有需要的朋友不妨了解下。小米手机刷安卓原生系统方法下载工具包和线刷完整包,下载完成后解压,刷机工具点击下载MIUI最新版线刷Fastboot开发版完整包点击下载。(请检查文件后缀名是否为”.tgz”,如…

  • 树莓派 gpio usb_树莓派gpio编程

    树莓派 gpio usb_树莓派gpio编程概览树莓派最令人兴奋的特点之一是它有一个GPIO连接器可以用来接其他的硬件设备。GPIO连接器实际上是由许多不同类型的接口组成的:真正的GPIO(GeneralPurposeInputOutput,通用输入/输出)针脚,你可以用来控制LED灯的开和关。I2C(Inter-IntegratedCircuit)接口针脚,使你能够仅使用2个控制针脚连接硬件模块。SPI(SerialPeriph…

    2022年10月14日
  • android sdk安装过程,图文详解Android 3.0 SDK安装教程

    android sdk安装过程,图文详解Android 3.0 SDK安装教程【51CTO编者按】我们已经为喜欢Android3.0的朋友提供Android3.0SDK下载,本文我们将向大家介绍Android3.0SDK安装教程,本教程与玩模拟器需要比较好的电脑配置,建议至少要i系列CPU,即使如此还是会经常卡,只建议给那些想尝鲜的和只想玩系统的朋友。一、准备阶段:1.安装JavaJDK2.进入“控制面板”-“系统”-“高级系统设置”在弹出的窗口中,选择“环境…

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号