0


jenkins pipline 拉取git历史版本

声明,本文是基于:jenkins流水线(jenkinsfile)详解,保姆式教程_我认不到你的博客-CSDN博客,以下内容介绍通过 Commit ID 拉取 git 历史版本

Commit ID (节点号)是什么?(下图是gitee的信息)

我的理解是:我们每次提交git的时候,除了保存我们修改的代码外,也缓存了之前提交的代码,可以用于我们查看更新的内容,而Commit ID 就是为了识别这些历史的提交版本

在这里插入图片描述

一、设置字符参数

我这里只展示了一个关于 git 版本的字符信息,也是本文最重要的一个,其他都不是必要的

其他的我设置了

name

tag

来规定docker制作镜像的名字和版本

在这里插入图片描述

二、编写流水线代码

1、点击流水线语法

在这里插入图片描述

2、选择

checkout:Check out from version control

再选择git,后面填写自己 git 项目的 url 这个指的不是 网页的那个 url , 是你拉取项目

git clone url

的这个 url ,再添加凭证

在这里插入图片描述

3、其他不用管,点击生成流水线脚本就行,后面我会讲具体有什么用

在这里插入图片描述

4、我的

Jenkins pipline

脚本

pipeline {// 指定任务在哪个集群节点中执行,any表示任意节点
    agent any
    
        // 声明全局变量,方便后面修改使用
    environment {// 源jar名称,mvn打包之后,target目录下的jar包名称
        JAR_NAME='main*'// jenkins下的目录
        JENKINS_HOME='/var/jenkins_home/workspace/graduationProject'}// 工具,这是我在 jenkins 的全局配置配的,之前的博客有讲过
    tools{
        maven 'maven-3.8.4'}
    
    
    stages {stage('拉取代码'){
            steps {// 清除工作空间deleteDir()// 拉取代码 gitTag 是 之前自定义的 字符串参数checkout([$class:'GitSCM', branches:[[name:'${gitTag}']], extensions:[], userRemoteConfigs:[[credentialsId:'生成的', url:'git的url']]])
                echo '拉取成功'}}stage('执行构建'){
            steps {//    sh "mvn --version"
              sh "mvn clean package"
                echo '构建完成'}}stage('把jar包构建为docker镜像并运行'){
            steps {
                sh '''#!/bin/bash
                        
                        // 进入 jar 包所在目录 , 好配合 Dockerfile 生成 Docker 镜像
                        cd $JENKINS_HOME/admin/target
                        
                        // 把Dockerfile 复制到 jar 包所在目录 ,好配合 Dockerfile 生成 Docker 镜像
                        cp $JENKINS_HOME/Dockerfile $JENKINS_HOME/admin/target
                        
                        # 修改文件权限  JAR_NAME
                        chmod 755 $JAR_NAME.jar
                        
                        # name 和 tag 是我 又设置的 一个字符参数 ,步骤和 gitTag 是一样的
                        echo "停止容器"
                        docker stop $name
                        
                        echo "删除容器"
                        docker rm $name
                        
                        echo "删除镜像"
                        docker rmi $name
                        
                        # 这个点(.)就是指的本目录下的 Dockerfile 文件,而
                        echo "打包镜像"
                        docker build -t $name:$tag .
                        
                        echo "运行镜像"
                        docker run -d -p 9999:9600 --name $name $name:$tag
                '''
                echo '运行成功'}}}}

三、2.2中生成参数的讲解

checkout: Check out from version control 文档:Pipeline: SCM Step (jenkins.io)

GitSCM详细参数的可以看官网的教程:scmGit (jenkins.io),虽然官网叫scmGit,但使用的时候要用GitSCM,不然会报错哈

// doGenerateSubmoduleConfigurations 可要可不要// submoduleCfg 可要可不要// extensions 也可不要checkout([$class:'GitSCM', 
     doGenerateSubmoduleConfigurations:false, 
     submoduleCfg:[], 
     extensions:[[$class:'CloneOption', depth:1, noTags:false, reference:'', shallow:true]],
     branches:[[name:'${gitTag}']],
     userRemoteConfigs:[[url:"git的url", credentialsId:"生成的"]]])// 简化checkout([$class:'GitSCM', 
     branches:[[name:'${gitTag}']],
     userRemoteConfigs:[[url:"git的url", credentialsId:"生成的"]]])
  • GitSCM:指定拉取git的源码(必填)
  • doGenerateSubmoduleConfigurations : boolean(可选)- 删除了用于测试 git 子模块版本组合的工具。在 git 插件 4.6.0 中删除。忽略用户提供的值,并始终用作其值。false
  • submoduleCfg(可选)删除了用于测试 git 子模块版本组合的工具。在 git 插件 4.6.0 中删除。忽略用户提供的值,并始终使用空值。
  • extensions:扩展为不同用途添加新行为或修改现有插件行为,帮助用户更精确地调整插件行为以满足使用需求。参数项比较多,挑一些常用的说明一下。(可选)- $class: ‘CloneOption’:用于定义clone时的一些参数配置。 - depth:int类型,设置浅克隆深度,通常设置为1用于加快拉取,如果想要常规clone,则删除此配置项。- noTags:bool类型,取消选择此选项可在没有标签的情况下执行克隆,从而在您只想访问 refspec 指定的内容时节省时间和磁盘空间。- reference:String类型,指定包含存储库的文件夹,Git 将在克隆操作期间将其用作参考。如果文件夹在执行克隆的控制器或代理上不可用,则将忽略此选项。- shallow:bool类型,执行浅克隆,这样 git 就不会下载项目的历史记录,可以节省时间和磁盘空间。- timeout:int类型,指定克隆和获取操作的超时时间(以分钟为单位,默认值:10)。
  • branches:指定要构建的分支相关的标识信息。(必填)- name:String类型,如果您想跟踪存储库中的特定分支,请指定分支。例如master,一般配合参数传递过来。不过里边不仅仅支持分支名字的定义,还支持如下类型:- **<branchName>**:指定要检出的分支,例如master。- **<tagName>**:指定要检出的tag,例如v0.0.1。- **<commitId>**:检出指定的提交,例如:5062ac843f2b947733e6a3b105977056821bd3525062ac84需要注意的是:如果使用commitID进行构建,而且是一个过去的ID,那么depth: 1需要去掉,否则总是会报错。
  • userRemoteConfigs:指定git仓库相关的信息(必填)- url:String类型,指定 git 存储库的 URL 或路径。以下是有效 git URL 的示例:- ssh://git@github.com/github/git.git- git@github.com:github/git.git (short notation for ssh protocol)- ssh://user@other.host.com/~/repos/R.git (to access the repos/R.git repository in the user’s home directory)- https://github.com/github/git.git建议统一使用https风格,这样日常使用时便于跳转。- credentialsId:String类型,用于检查源的凭据,通常只需要写明凭据的name即可。- name:String类型,存储库的 ID,一般情况下用不到。
  • gitTool:String类型,指定git命令的路径,通常情况下,git都是系统全局可用的,因此此参数可忽略。(可选)

四、测试

1、复制 commit id

在这里插入图片描述

2、测试使用分支启动

2.1、master分支

name 和 tag 是生产 Docker 镜像需要的不影响

在这里插入图片描述

2.2、结果

在这里插入图片描述

3、测试 commit id 启动

3.1、commit id

在这里插入图片描述

3.2、结果

在这里插入图片描述

之前的教程

CICD与DevOps

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

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

本文参考

Jenkins的pipeline实践之GitSCM参数配置项详解原创 - 码农教程 (manongjc.com)

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

标签: jenkins git 运维

本文转载自: https://blog.csdn.net/qq_57581439/article/details/130810392
版权归原作者 我认不到你 所有, 如有侵权,请联系我们删除。

“jenkins pipline 拉取git历史版本”的评论:

还没有评论