热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Jenkins2.0

[TOC]Jenkins2.0支持BlueOcean界面,如下:image.png2.0的三个特点:PipelineasCode:全新的开箱体验:即变好看了。1.x兼容性Pipel

[TOC]

Jenkins 2.0

支持Blue Ocean界面,如下:

《Jenkins 2.0》 image.png

2.0的三个特点:

  • Pipeline as Code:
  • 全新的开箱体验:即变好看了。
  • 1.x兼容性

Pipeline as Code

其帮助Jenkins从CI到CD转变。其是一套运行在Jenkins上的工作流框架,把原本独立运行于
单个或多个节点的任务连接起来,实现复杂的发布流程。Pipeline的实现方式是一套Groovy DSL(类似Gradle),任何发布流程都可以表述为一段Groovy脚本,并且Jenkins支持从代码库直接读取脚本,从而实现了Pipeline as Code的理念。

基本概念:

  • Step:最基本的操作单元,小到创建一个目录,大到构建一个Docker镜像,由各类Jenkins Plugin提供。
  • Node:一个Node就是一个jenkins节点,可以是MasterAgent。是执行Step的具体运行期环境。
  • Stage:一个Pipeline可以划分为若干个Stage,每个Stage代表一组操作。Stage是个逻辑分组,可以跨多个Node

Jenkins 2默认支持3种类型的Pipeline:普通PipelineMultibranch PipelineOrganization Folders,后两种其实是批量创建一组普通Pipeline的快捷方式,分别对应于多分支的应用和多应用的大型组织

Jenkinsfile

其是一个文本文件,名称为:Jenkinsfile,放在根目录下即可。

在其中定义了Jenkins Pipeline。如下为一个定义了三个stage的pipeline

pipeline {
agent any
stages {
stage('Build') {
steps {
echo 'Building..'
}
}
stage('Test') {
steps {
echo 'Testing..'
}
}
stage('Deploy') {
steps {
echo 'Deploying....'
}
}
}
}

在Steps里面可以运行以下信息:

脚本命令的执行:

  • unin/linux: 使用sh,如:sh 'mvn -version'
  • windows:使用bat

超时、重试机制:

pipeline {
agent any
stages {
stage('Deploy') {
steps {
retry(3) {
sh './flakey-deploy.sh'
}
timeout(time: 3, unit: 'MINUTES') {
sh './health-check.sh'
}
}
}
stage('Deploy2') {
steps {
timeout(time: 3, unit: 'MINUTES') {
retry(5) {
sh './flakey-deploy.sh'
}
}
}
}
}
}

Finishing up:使用post来完成一些资源的清理工作。其和stages平级:

pipeline {
agent any
stages {
stage('Test') {
steps {
sh 'echo "Fail!"; exit 1'
}
}
}
post {
always {
echo 'This will always run'
}
success {
echo 'This will run only if successful'
}
failure {
echo 'This will run only if failed'
}
unstable {
echo 'This will run only if the run was marked as unstable'
}
changed {
echo 'This will run only if the state of the Pipeline has changed'
echo 'For example, if the Pipeline was previously failing but is now successful'
}
}
}

定义执行环境

通过agent来定义pipeline的执行环境,在每个Pipeline,agent是必需存在的。

pipeline {
agent {
docker { image 'node:7-alpine' }
}
stages {
stage('Test') {
steps {
sh 'node --version'
}
}
}
}

在最外面把agent none后,可以为每个stages设置相应的agent

环境变量

可以定义为全局的,也可以为Stage来定义。

pipeline {
agent any
environment {
CC = 'clang'
}
stages {
stage('Example') {
environment {
DEBUG_FLAGS = '-g'
}
steps {
sh 'printenv'
}
}
}
}

已定义的环境变量,可以通过env来访问,其中有:

  • BUILD_ID: 当前build id.
  • JOB_NAME:项目名,如:boot或者boot/dev,其中dev为分支名
  • JENKINS_URL

steps {
echo 'Deploying....'
echo "当前BuildId: ${env.BUILD_ID}"
echo "当前Job: ${env.JOB_NAME}"
echo "当前URL: ${env.JENKINS_URL}"
}

参数:可以通过params来访问编译时的参数。如:

pipeline {
agent any
parameters {
string(name: 'Greeting', defaultValue: 'Hello', description: 'How should I greet the world?')
}
stages {
stage('Example') {
steps {
echo "${params.Greeting} World!"
}
}
}
}

清理并通知

清理功能见上面,使用post来定义。

email通知:

post {
failure {
mail to: 'team@example.com',
subject: "Failed Pipeline: ${currentBuild.fullDisplayName}",
body: "Something is wrong with ${env.BUILD_URL}"
}
}

steps里面可以通过input "Does the staging environment look ok?"这种让人工进行确认。

《Jenkins 2.0》 image.png

其具体参数用法-参考文档](https://jenkins.io/doc/book/pipeline/syntax/))

Blue Ocean创建项目

《Jenkins 2.0》 image.png
《Jenkins 2.0》 image.png
《Jenkins 2.0》 image.png

则这时创建成功后,会自动扫描Jenkinsfile
如果需要变更后自动触发,则可以配置其Scan Multibranch Pipeline Triggers

《Jenkins 2.0》 image.png

Jenkinsfile样例文件

pipeline {
agent any
tools {
maven 'Default'
}
parameters {
string(name: 'Greeting', defaultValue: 'Hello', description: 'How should I greet the world?')
}
stages {
stage('Build') {
steps {
echo 'Building..'
sh 'java -version'
sh 'mvn -version'
sh 'mvn clean'
echo 'build over...'
}
}
stage('Test') {
steps {
input "Does the staging environment look ok?"
echo 'Testing..'
}
}
stage('hello') {
steps {
echo 'hello world'
}
}
stage('Deploy') {
steps {
echo 'Deploying....'
echo "当前BuildId: ${env.BUILD_ID}"
echo "当前Job: ${env.JOB_NAME}"
echo "当前URL: ${env.JENKINS_URL}"
echo "${params.Greeting} World!"
}
}
}
}

推荐阅读
  • 利用Jenkins与SonarQube集成实现高效代码质量检测与优化
    本文探讨了通过在 Jenkins 多分支流水线中集成 SonarQube,实现高效且自动化的代码质量检测与优化方法。该方案不仅提高了开发团队的代码审查效率,还确保了软件项目的持续高质量交付。 ... [详细]
  • 在 CentOS 7 上部署和配置 RabbitMQ 消息队列系统时,首先需要安装 Erlang,因为 RabbitMQ 是基于 Erlang 语言开发的。具体步骤包括:安装必要的依赖项,下载 Erlang 源码包(可能需要一些时间,请耐心等待),解压源码包,解决可能出现的错误,验证安装是否成功,并将 Erlang 添加到环境变量中。接下来,下载 RabbitMQ 的 tar.xz 压缩包,并进行解压和安装。确保每一步都按顺序执行,以保证系统的稳定性和可靠性。 ... [详细]
  • 关于ScrumXPDevOps的学习
    最近听了ECUG大会上孙敬云老师的分享感觉受益匪浅,毕竟大学课本上只讲到瀑布模型就没有下文了,工作以后一直贯彻的都是Scrum路线,一直也没有时间好好的去学习整理这部分的知识,直到 ... [详细]
  • 一步一步打造jenkins+docker+nodejs项目的自动部署环境
    一步一步打造jenkins+docker+nodejs项目的自动部署环境介绍jenkins+docker+nodejs自动部署亮点采用shell自定义脚本,控制集成部署环境更加方便 ... [详细]
  • 在Android应用开发中,当在MenuItem中通过app:actionLayout属性使用Switch控件时,可能会遇到空指针异常的问题。本文将探讨该问题的原因及解决方案。 ... [详细]
  • 本文介绍了进程的基本概念及其在操作系统中的重要性,探讨了进程与程序的区别,以及如何通过多进程实现并发和并行。文章还详细讲解了Python中的multiprocessing模块,包括Process类的使用方法、进程间的同步与异步调用、阻塞与非阻塞操作,并通过实例演示了进程池的应用。 ... [详细]
  • 微服务自动化.dockercompose
    目录一、docker-compose二、docker-compose安装与配置1、修改docker.service2、下载文件3、将刚才下载的docker-compose文 ... [详细]
  • 本文探讨了如何在Docker构建过程中使用动态环境变量,特别是针对Docker v1.9及以上版本的用户。我们将介绍如何声明和使用构建参数,以及这些参数对构建缓存的影响。 ... [详细]
  • Docker安全策略与管理
    本文探讨了Docker的安全挑战、核心安全特性及其管理策略,旨在帮助读者深入理解Docker安全机制,并提供实用的安全管理建议。 ... [详细]
  • 本文详细介绍如何在华为鲲鹏平台上构建和使用适配ARM架构的Redis Docker镜像,解决常见错误并提供优化建议。 ... [详细]
  • 无论你是刚毕业的大学生,还是想在职业中寻求进步的经验丰富的IT专家,这些提示都可以帮你成为DevOps工程师。DevOps工程是一个备受称赞的热门职业。不管你是刚毕业正在找第一份工 ... [详细]
  • Jenkins实例 Maven项目
    目录一.准备二.创建项目创建maven项目源码管理部分构建编译PostSteps打包构建后操作三.测试一.准备先看初始化设置,如果做完初始化,则跳过安装如下插件MavenInteg ... [详细]
  • 智能家居巨头 Aqara 基于 KubeSphere 打造物联网微服务平台
    智能家居巨头 Aqara 基于 KubeSphere 打造物联网微服务平台 ... [详细]
  • 1、安装插件即可在源码管理中看见svn的选项subversion2、源码管理中配置svn的工程地址  3、点击Credentials的【添加】配置svn的用户名密码,完成后选取即可 ... [详细]
  • 解决方案选择插件管理-高级-升级站点-更改URL为[http:mirror.xmission.comjenkinsupdatesupdate-center.js ... [详细]
author-avatar
刘刘刘刘刘志锋_506
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有