我的编程空间,编程开发者的网络收藏夹
学习永远不晚

jenkins流水线(jenkinsfile)详解,保姆式教程

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

jenkins流水线(jenkinsfile)详解,保姆式教程

jenkins流水线(jenkinsfile)详解

在学习本篇文章的时候,可以去看看jenkins官网的文档,jenkins官网支持中文,观看十分便捷

此教程使用的是gitee+docker+jenkins的部署方式,gitlab与github异曲同工,还有就是我目前写jenkins的教程已经更新了两期,关于插件啥的安装都不多详细的讲解了,但用到的旧知识点我也会简单讲解一下,新的知识点我也都会讲到,只是需要pipeline代码的小伙伴,直接拉到教程的最后

jenkins使用docker安装保姆级教程(面向小白教程,最新最全,全图文)2022-8-1,不会docker也没关系

使用jenkins+gitee创建docker镜像并运行

在这里插入图片描述

新建一个任务,选择流水线

在这里插入图片描述

可以看见啊,比起自由风格的软件项目,这个项目是非常的简单

webhook钩子(使用git工具时执行相应步骤,比如说拉取,推送,会触发钩子函数,jenkins接收到钩子然后开始执行打包部署等工作,这里不配置也是可以的,如果是新手,可以看看我之前的教程,从基础学起)

我在之前的教程中已经详细的讲解了,这里都不多加赘述了

在这里插入图片描述

配置一个密码

在这里插入图片描述

在gitee中连接

写pipeline

在这里插入图片描述

然后我从最基础的讲起

首先选择wello world,不是说只能选这个,就是我需要一步一步讲所以选个最原始的

在这里插入图片描述

讲解一下这个hello world

pipeline {    agent any      stages {        stage('Hello') {            steps {                echo 'Hello World'            }        }        // 这里的hello2 是我加的,就是说明,这是stages下的第二个任务 ,就是在pipeline中加单行注释 用 // 就行        stage('Hello2') {            steps {                echo 'Hello World'            }        }    }}

pipeline 定义一个流水线脚本

agent 指示 Jenkins 为整个流水线分配一个执行器(在 Jenkins 环境中的任何可用代理/节点上)和工作区。

stages 全部的工作都在这里执行

stage 每个工作开始

steps jenkinsfile 声明式脚本往这里面写

echo 写一个简单的字符串到控制台输出。

保存测试一下(保存以后点立即构建)

在这里插入图片描述

我们来看一下日志,以后我都不放图片了,这里只是给新来的朋友说明一下在哪看日志

在这里插入图片描述

在下面我们可以看见执行了两个 hello world ,这就是我们执行脚本得到的结果

在这里插入图片描述

返回项目点击配置

在这里插入图片描述

开始使用pipeline

首先我们要了解一下,我们的项目要经历几个步骤,1、从git中拉取;2、maven打包;3、docker生成镜像并运行,好了,我们了解到普通的项目只需要这几个步骤,我们就来规划一下pipeline代码部分

pipeline {    agent any    stages {        stage('拉取代码') {            steps {                echo '拉取成功'            }        }        stage('执行构建') {            steps {                echo '构建完成'            }        }        stage('把jar包构建为docker镜像并运行') {            steps {                echo '运行成功'            }        }    }}

连接到git

使用jenkins自带的脚本生成器

在这里插入图片描述

到了片段生成器
首先我们需要从git中拉取,就选git

在这里插入图片描述

连接git

在这里插入图片描述

复制粘贴(自己去测试一下有用没有,如果你不是用的docker镜像,并且报错,原因:1、压根没连接上,去看看你账号密码和git链接到底连的通不;2、没用docker安装jenkins,缺少了git环境,使用yum -y install git安装;3、我也想不出来了,自己去搜搜)
pipeline {    agent any    stages {        stage('拉取代码') {            steps {                git credentialsId: '93f024b8-6456-4c98-a131-9a5ee9f42027', url: 'https://gitee.com/i-dont-recognize-you/school-page.git'                echo '拉取成功'            }        }                stage('执行构建') {            steps {                echo '构建完成'            }        }                stage('把jar包构建为docker镜像并运行') {            steps {                echo '运行成功'            }        }    }}

连接maven

全局工具配置里面配置maven,之前教程讲了的,我就不详细讲了

在这里插入图片描述

maven需要引用使用tools就行,注意不要直接cope运行,看看代码中的注解,而且git是我的,你也跑不通

pipeline {    agent any// 看这里,导入maven,名字就是在全局工作配置中配置了的    tools{        maven 'maven_3.8.4'    }    stages {        stage('拉取代码') {            steps {                git credentialsId: '93f024b8-6456-4c98-a131-9a5ee9f42027', url: 'https://gitee.com/i-dont-recognize-you/school-page.git'                echo '拉取成功'            }        }                stage('执行构建') {            steps {            // 看这里哈,先运行一下maven版本,看看maven是否配置好了, sh 是指 执行shell脚本                sh "mvn --version"            // 如果maven可以运行,那么执行以下代码,这里需要注意一下,pom.xml文件是否在你创建的任务目录下            //  sh "mvn clean package"                echo '构建完成'            }        }                stage('把jar包构建为docker镜像并运行') {            steps {                echo '运行成功'            }        }    }}

如果打印了maven的版本信息,但打包报错看看是否pom.xml文件是否在test2(这是我取的任务名,至于名字为啥不是Demo,我爱咋取咋取,管的着吗)的目录下,我这个就是在任务目录下的,所以方向执行sh "mvn clean package"就行如果还有多一层目录才有pom.xml,那你举一反三啊,在使用sh "mvn clean package"命令打包之前执行sh "cd 目录"不就可以了

[root@instance-3806mxkl ~]# cd /data/jenkins_home/workspace/test2[root@instance-3806mxkl test2]# lsDockerfile  LICENSE  pom.xml  class="lazy" data-src  target

使用docker本地打包(完整代码),这里没什么讲事,就是执行了上个教程的shell脚本,之前的教程中我有关于这个shell脚本完整的讲解

pipeline {    agent any    tools{        maven 'maven_3.8.4'    }    stages {        stage('拉取代码') {            steps {                git credentialsId: '93f024b8-6456-4c98-a131-9a5ee9f42027', url: 'https://gitee.com/i-dont-recognize-you/school-page.git'                echo '拉取成功'            }        }                stage('执行构建') {            steps {            //    sh "mvn --version"                sh "mvn clean package"                echo '构建完成'            }        }                stage('把jar包构建为docker镜像并运行') {            steps {                sh '''#!/bin/bash                        # 服务名称                        SERVER_NAME=test2                    # 源jar名称,mvn打包之后,target目录下的jar包名称                        JAR_NAME= "School-0.0.1-SNAPSHOT"                    # jenkins下的目录                        JENKINS_HOME= "/var/jenkins_home/workspace/test2"                    # 等待三秒                        echo sleep 3s                        sleep 1                        echo sleep 2s                        sleep 1                        echo sleep 1s                        sleep 1                          echo "结束进程完成"                    # JENKINS_HOME                        cd /var/jenkins_home/workspace/test2/target                    # JENKINS_HOME                        cp /var/jenkins_home/workspace/test2/Dockerfile /var/jenkins_home/workspace/test2/target                    # 修改文件权限  JAR_NAME                        chmod 755 School-0.0.1-SNAPSHOT.jar                    echo "看看docker能不能用"                        docker -v                    echo "停止容器"                        # 停止容器                        docker stop test2                    echo "删除容器"                        # 删除容器                        docker rm test2                        echo "删除镜像"                        # 删除镜像                        docker rmi test2                        echo "打包镜像"                        # 打包镜像                        docker build -t test2 -f Dockerfile .                        echo "运行镜像"                        # 运行镜像                        docker run -d -p 9999:9600 --name test2 test2                '''                echo '运行成功'            }        }    }}

通过ssh在其他服务器上打包(这里因为小编只需要在本机中运行使用小编没有测试,但流程就是这么个流程)

下载Publish over SSH插件,在体统配置中配置ssh连接,拉到最下面

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

点击保存

在代码生成器上选择这个

在这里插入图片描述

传jar包

在这里插入图片描述

传dockerfile

在这里插入图片描述

传Dockerfile文件,并执行shell脚本

在这里插入图片描述

点击生成脚本,放在之前打包那就行,比如

pipeline {    agent any    tools{        maven 'maven_3.8.4'    }    stages {        stage('拉取代码') {            steps {                git credentialsId: '93f024b8-6456-4c98-a131-9a5ee9f42027', url: 'https://gitee.com/i-dont-recognize-you/school-page.git'                echo '拉取成功'            }        }                stage('执行构建') {            steps {            //    sh "mvn --version"                sh "mvn clean package"                echo '构建完成'            }        }                stage('把jar包构建为docker镜像并运行') {            steps {            sshPublisher(publishers: [sshPublisherDesc(configName: 'test', transfers: [sshTransfer(cleanRemote: false, excludes: '', execCommand: '', execTimeout: 120000, flatten: false, makeEmptyDirs: false, noDefaultExcludes: false, patternSeparator: '[, ]+', remoteDirectory: '/', remoteDirectorySDF: false, removePrefix: '', sourceFiles: '**/*.jar'), sshTransfer(cleanRemote: false, excludes: '', execCommand: '''docker stop test2docker rm test2docker rmi test2docker build -t test2 -f Dockerfile .docker run -d -p 9999:9600 --name test2 test2''', execTimeout: 120000, flatten: false, makeEmptyDirs: false, noDefaultExcludes: false, patternSeparator: '[, ]+', remoteDirectory: '/', remoteDirectorySDF: false, removePrefix: '', sourceFiles: 'test2/Dockerfile')], usePromotionTimestamp: false, useWorkspaceInPromotion: false, verbose: false)])                echo '运行成功'            }        }    }}

下载Blue Ocean插件,会得到这样的图标

在这里插入图片描述

点击这个图标后会得到一个崭新的UI页面,以后的流水线工作就可以在这里面操作

在这里插入图片描述

完整代码(我可能以后要翻着看,所以放在最后)

pipeline {    agent any    tools{        maven 'maven_3.8.4'    }    stages {        stage('拉取代码') {            steps {                git credentialsId: '93f024b8-6456-4c98-a131-9a5ee9f42027', url: 'https://gitee.com/i-dont-recognize-you/school-page.git'                echo '拉取成功'            }        }                stage('执行构建') {            steps {            //    sh "mvn --version"                sh "mvn clean package"                echo '构建完成'            }        }                stage('把jar包构建为docker镜像并运行') {            steps {                sh '''#!/bin/bash                        # 服务名称                        SERVER_NAME=test2                    # 源jar名称,mvn打包之后,target目录下的jar包名称                        JAR_NAME= "School-0.0.1-SNAPSHOT"                    # jenkins下的目录                        JENKINS_HOME= "/var/jenkins_home/workspace/test2"                    # 等待三秒                        echo sleep 3s                        sleep 1                        echo sleep 2s                        sleep 1                        echo sleep 1s                        sleep 1                          echo "结束进程完成"                    # JENKINS_HOME                        cd /var/jenkins_home/workspace/test2/target                    # JENKINS_HOME                        cp /var/jenkins_home/workspace/test2/Dockerfile /var/jenkins_home/workspace/test2/target                    # 修改文件权限  JAR_NAME                        chmod 755 School-0.0.1-SNAPSHOT.jar                    echo "看看docker能不能用"                        docker -v                    echo "停止容器"                        # 停止容器                        docker stop test2                    echo "删除容器"                        # 删除容器                        docker rm test2                        echo "删除镜像"                        # 删除镜像                        docker rmi test2                        echo "打包镜像"                        # 打包镜像                        docker build -t test2 -f Dockerfile .                        echo "运行镜像"                        # 运行镜像                        docker run -d -p 9999:9600 --name test2 test2                '''                echo '运行成功'            }        }    }}

8月12日新增 通过 Pipline script from SCM 执行 Jenkinsfile

配置参数化构建过程(字符参数)

在这里插入图片描述

效果是这样(这样打包镜像的时候可以根据版本号和项目名做变动)

在这里插入图片描述

流水线这里像这样

在这里插入图片描述

在项目中添加Jenkinsfile文件

在这里插入图片描述
这个代码和上面的大同小异,就是我简化了一下,加上了字符参数

pipeline {    agent any    tools{        maven 'maven_3.8.4'    }    stages {        stage('拉取代码') {            steps {              git credentialsId: '93f024b8-6456-4c98-a131-9a5ee9f42027', url: 'https://gitee.com/i-dont-recognize-you/school-page.git'                echo '拉取成功'            }        }                stage('执行构建') {            steps {            //    sh "mvn --version"              sh "mvn clean package"                echo '构建完成'            }        }                stage('把jar包构建为docker镜像并运行') {            steps {                sh '''#!/bin/bash                    # 源jar名称,mvn打包之后,target目录下的jar包名称                        JAR_NAME=School*                    # jenkins下的目录                        JENKINS_HOME=/var/jenkins_home/workspace/test2                cd $JENKINS_HOME/target                    cp $JENKINS_HOME/Dockerfile $JENKINS_HOME/target                    # 修改文件权限  JAR_NAME                        chmod 755 $JAR_NAME.jar                echo "停止容器"                        docker stop $test2                    echo "删除容器"                        docker rm $test2                    echo "删除镜像"                        docker rmi $test2                    echo "打包镜像"                        docker build -t $test2:$tag .                    echo "运行镜像"                        docker run -d -p 9999:9600 --name $test2 $test2:$tag                '''                echo '运行成功'            }        }    }}

之前的教程

CICD与DevOps

jenkins使用docker安装保姆级教程(面向小白教程,最新最全,全图文)2022-8-1,不会docker也没关系

使用jenkins+gitee创建docker镜像并运行

我的学习途径

27-使用pipeline自动打包Docker镜像_哔哩哔哩_bilibili

DevOps最新教程2022版 目前最好的DevOps课程

jenkins中文文档

来源地址:https://blog.csdn.net/qq_57581439/article/details/126281020

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

jenkins流水线(jenkinsfile)详解,保姆式教程

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

详解C语言随机数设置的三种方式(保姆级教程)

本篇文章将为大家介绍在C语言中设置随机数的三大方法的使用,文中的示例代码讲解详细,对我们学习C语言有一定的帮助,需要的可以参考一下
2022-11-13

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录