广告
返回顶部
首页 > 资讯 > 精选 >Jenkins中怎么实现Pipeline自动化部署
  • 546
分享到

Jenkins中怎么实现Pipeline自动化部署

2023-06-19 10:06:09 546人浏览 安东尼
摘要

本篇文章给大家分享的是有关jenkins中怎么实现Pipeline自动化部署,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。使用Jenkins前的一些设置为了快速搭建Jenkin

本篇文章给大家分享的是有关jenkins中怎么实现Pipeline自动化部署,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。

使用Jenkins前的一些设置

为了快速搭建Jenkins,我这里使用Docker安装运行Jenkins:

$ sudo docker run -it -d \  --rm \  -u root \  -p 8080:8080 \  -v jenkins-data:/var/jenkins_home \  -v /var/run/docker.sock:/var/run/docker.sock \  -v "$HOME":/home \  --name jenkins jenkinsci/blueocean

初次使用jenkins,进入Jenkins页面前,需要密码验证,我们需要进入docker容器查看密码:

$ sudo docker exec -it jenkins /bin/bash$ vi /var/jenkins_home/secrets/initialAdminPassWord

Docker安装的Jenkins稍微有那么一点缺陷,shell版本跟CenOS宿主机的版本不兼容,这时我们需要进入Jenkins容器手动设置shell:

$ sudo docker exec -it jenkins /bin/bash$ ln -sf /bin/bash /bin/sh

由于我们的Pipeline还需要在远程服务器执行任务,需要通过ssh连接,那么我们就需要在Jenkins里面生成ssh的公钥密钥:

$ sudo docker exec -it jenkins /bin/bash$ ssh-keygen -C "root@jenkins"

在远程节点的~/.ssh/authorized_keys中添加jenkins的公钥(id_rsa.pub)

还需要安装一些必要的插件

  1. Pipeline Maven Integration

  2. SSH Pipeline Steps

安装完插件后,还需要去全局工具那里添加maven:

Jenkins中怎么实现Pipeline自动化部署

这里后面Jenkinsfile有用到。

mutiBranch多分支构建

由于我们的开发是基于多分支开发,每个开发环境都对应有一条分支,所以普通的Pipeline自动化构建并不能满足现有的开发部署需求,所以我们需要使用Jenkins的mutiBranch Pipeline。

首先当然是新建一个mutiBranch多分支构建job:

Jenkins中怎么实现Pipeline自动化部署

接着设置分支源,分支源就是你项目git地址,选择Jenkinsfile在项目的路径

Jenkins中怎么实现Pipeline自动化部署

接下来Jenkins会在分支源中扫描每个分支下的Jenkinsfile,如果该分支下有Jenkinsfile,那么就会创建一个分支Job

Jenkins中怎么实现Pipeline自动化部署

该job下的分支job如下:

Jenkins中怎么实现Pipeline自动化部署

这里需要注意的是,只有需要部署的分支,才加上Jenkinsfile,不然Jenkins会将其余分支也创建一个分支job。

通用化Pipeline脚本

到这里之前,基本就可以基于Pipeline脚本自动化部署了,但如果你是一个追求极致,不甘于平庸的程序员,你一定会想,随着项目的增多,Pipeline脚本不断增多,这会造成越来越大的维护成本,随着业务的增长,难免会在脚本中修改东西,这就会牵扯太多Pipeline脚本了,而且这些脚本基本都相同,那么对于我这么优秀的程序员,怎么会想不到这个问题呢,我第一时间就想到通用化pipeline脚本。所幸,Jenkins已经看出了我不断骚动的心了,Jenkins甩手就给我一个Shared Libraries。

Shared Libraries是什么呢?顾名思义,它就是一个共享库,它的主要作用是用于将通用的Pipeline脚本放在一个地方,其它项目可以从它那里获取到一个全局通用化的Pipeline脚本,项目之间通过不通的变量参数传递,达到通用化的目的。

接下来我们先创建一个用于存储通用Pipeline脚本的git仓库:

Jenkins中怎么实现Pipeline自动化部署

仓库目录不是随便乱添加了,Jenkins有一个严格的规范,下面是官方说明:

Jenkins中怎么实现Pipeline自动化部署

官方已经讲得很清楚了,大概意思就是vars目录用于存储通用Pipeline脚本,resources用于存储非Groovy文件。所以我这里就把Pipeline需要的构建脚本以及编排文件都集中放在这里,完全对业务工程师隐蔽,这样做的目的就是为了避免业务工程师不懂瞎几把乱改,导致出bug。

创建完git仓库后,我们还需要在jenkins的Manage Jenkins » Configure System » Global Pipeline Libraries中定义全局库:

Jenkins中怎么实现Pipeline自动化部署

这里的name,可以在jenkinsfile中通过以下命令引用:

@Library 'objcoding-pipeline-library'

下面我们来看通用Pipeline脚本的编写规则:

#!groovydef getServer() {    def remote = [:]    remote.name = 'manager node'    remote.user = 'dev'    remote.host = "${REMOTE_HOST}"    remote.port = 22    remote.identityFile = '/root/.ssh/id_rsa'    remote.allowAnyHosts = true    return remote}def call(Map map) {    pipeline {        agent any        environment {            REMOTE_HOST = "${map.REMOTE_HOST}"            REPO_URL = "${map.REPO_URL}"            BRANCH_NAME = "${map.BRANCH_NAME}"            STACK_NAME = "${map.STACK_NAME}"            COMPOSE_FILE_NAME = "docker-compose-" + "${map.STACK_NAME}" + "-" + "${map.BRANCH_NAME}" + ".yml"        }        stages {            stage('获取代码') {                steps {                    git([url: "${REPO_URL}", branch: "${BRANCH_NAME}"])                }            }            stage('编译代码') {                steps {                    withMaven(maven: 'maven 3.6') {                        sh "mvn -U -am clean package -DskipTests"                    }                }            }            stage('构建镜像') {                steps {                    sh "wget -O build.sh https://git.x-vipay.com/docker/jenkins-pipeline-library/raw/master/resources/shell/build.sh"                    sh "sh build.sh ${BRANCH_NAME} "                }            }            stage('init-server') {                steps {                    script {                        server = getServer()                    }                }            }            stage('执行发版') {                steps {                    writeFile file: 'deploy.sh', text: "wget -O ${COMPOSE_FILE_NAME} " +                        " Https://git.x-vipay.com/docker/jenkins-pipeline-library/raw/master/resources/docker-compose/${COMPOSE_FILE_NAME} \n" +                        "sudo docker stack deploy -c ${COMPOSE_FILE_NAME} ${STACK_NAME}"                    sshScript remote: server, script: "deploy.sh"                }            }        }    }}
  1. 由于我们需要在远程服务器执行任务,所以定义一个远程服务器的信息其中remote.identityFile就是我们上面在容器生成的密钥的地址;

  2. 定义一个call()方法,这个方法用于在各个项目的Jenkinsfile中调用,注意一定得叫call;

  3. 在call()方法中定义一个pipeline;

  4. environment参数即是可变通用参数,通过传递参数Map来给定值,该Map是从各个项目中定义的传参;

  5. 接下来就是一顿步骤操作啦,“编译代码”这步骤需要填写上面我们在全局工具类设置的maven,“构建镜像”的构建脚本巧妙地利用wget从本远程仓库中拉取下来,”执行发版“的编排文件也是这么做,“init-server”步骤主要是初始化一个server对象,供“执行发版使用”。

从脚本看出来Jenkins将来要推崇的一种思维:配置即代码。

写完通用Pipeline脚本后,接下来我们就需要在各个项目的需要自动化部署的分支的根目录下新建一个Jenkinsfile脚本了:

Jenkins中怎么实现Pipeline自动化部署

接下来我来解释一下Jenkinsfile内容:

#!groovy// 在多分支构建下,严格规定Jenkinsfile只存在可以发版的分支上// 引用在jenkins已经全局定义好的librarylibrary 'objcoding-pipeline-library'def map = [:]// 远程管理节点地址(用于执行发版)map.put('REMOTE_HOST','xxx.xx.xx.xxx')// 项目gitlab代码地址map.put('REPO_URL','https://GitHub.com/objcoding/docker-jenkins-pipeline-sample.git')// 分支名称map.put('BRANCH_NAME','master')// 服务栈名称map.put('STACK_NAME','vipay')// 调用library中var目录下的build.groovy脚本build(map)
  1. 通过library 'objcoding-pipeline-library'引用我们在Jenkins定义的全局库,定义一个map参数;

  2. 接下来就是将项目具体的参数保存到map中,调用build()方法传递给通用Pipeline脚本。

以上就是Jenkins中怎么实现Pipeline自动化部署,小编相信有部分知识点可能是我们日常工作会见到或用到的。希望你能通过这篇文章学到更多知识。更多详情敬请关注编程网精选频道。

--结束END--

本文标题: Jenkins中怎么实现Pipeline自动化部署

本文链接: https://www.lsjlt.com/news/295264.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

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

下载Word文档
猜你喜欢
  • Jenkins中怎么实现Pipeline自动化部署
    本篇文章给大家分享的是有关Jenkins中怎么实现Pipeline自动化部署,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。使用Jenkins前的一些设置为了快速搭建Jenkin...
    99+
    2023-06-19
  • jenkins+shell自动化部署怎么实现
    这篇文章主要介绍了jenkins+shell自动化部署怎么实现的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇jenkins+shell自动化部署怎么实现文章都会有所收获,下面我们一起来看看吧。通过jenkins...
    99+
    2023-06-29
  • 怎么搭建jenkins实现自动化部署
    要搭建Jenkins实现自动化部署,您需要按照以下步骤进行操作:1. 安装Jenkins:您可以从Jenkins官方网站下载适用于您...
    99+
    2023-08-12
    jenkins
  • linux中jenkins自动部署怎么实现
    在Linux中,可以通过以下步骤实现Jenkins的自动部署: 安装Jenkins:通过在Linux系统上运行命令来安装Jenk...
    99+
    2023-10-27
    linux jenkins
  • Linux中怎么利用Jenkins实现自动部署
    Linux中怎么利用Jenkins实现自动部署,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。安装JavaJenkins是一个Java应用程序,需要在系统上安装Java 8或更高...
    99+
    2023-06-15
  • 怎么使用Jenkins和Git来实现自动化部署
    这篇文章主要介绍“怎么使用Jenkins和Git来实现自动化部署”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“怎么使用Jenkins和Git来实现自动化部署”文章能帮助大家解决问题。一、为什么需要自...
    99+
    2023-07-05
  • Jenkins自动化部署SpringBoot项目的实现
    目录1、Jenkins介绍1.1、概念1.2、优势1.3、Jenkins目的2、环境准备3、Jenkins下载3.1、下载3.2、运行3.3、问题解决4、Jenkins配置4.1、用...
    99+
    2023-01-13
    Jenkins自动化部署SpringBoot Jenkins部署SpringBoot
  • jenkins+shell自动化部署的实现步骤
    通过jenkins与shell脚本相结合,实现war包自动部署到多台服务器上 环境: 192.168.2.120 jenkins服务器192.168.2.117 tomcat服务器 设置jenkins服务器免密钥登陆to...
    99+
    2022-06-05
    jenkinsshell自动化部署 jenkinsshell自动化
  • Jenkins自动化部署Vue项目的方法实现
    目录jenkins介绍1. 环境准备2. 首先登录服务器更新系统软件3. 安装Java和git4. 安装nginx5. 安装Jenkins6. 用jenkins创建一个构建任务7. ...
    99+
    2022-11-13
  • jenkins怎么配置git自动部署
    要配置Jenkins实现Git自动部署,您可以按照以下步骤进行操作: 安装Jenkins:首先确保您已经安装了Jenkins,并...
    99+
    2023-10-27
    jenkins git
  • CentOS7 上利用 jenkins 实现自动部署
    前端项目打包部署,以前都是手工运行打包命令,打包结束后压缩,然后上传到服务器上解压部署。这种重复性的工作,确实有点让人烦,而且效率也不高。 本文基于 vue 的前端项目、 github 的代码仓库,简述在 CentOS7...
    99+
    2022-06-04
    自动化部署jenkins jenkins部署
  • 怎么搭建docker+jenkins+node.js自动化部署环境
    本篇内容介绍了“怎么搭建docker+jenkins+node.js自动化部署环境”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔...
    99+
    2022-10-19
  • docker+jenkins+node.js自动化部署环境怎么搭建
    本篇内容介绍了“docker+jenkins+node.js自动化部署环境怎么搭建”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!1、dock...
    99+
    2023-06-17
  • 基于Docker、Nginx和Jenkins实现前端自动化部署
    目录前期准备部署目标Dcoker环境的搭建连接云服务器安装Docker环境Docker安装Docker ComposeDocker安装Nginx和Jenkins服务安装Nginx和J...
    99+
    2022-11-12
  • 帮你快速上手Jenkins并实现自动化部署
    目录一、下载与安装二、Jenkins的使用2.1 配置流程2.1.1 如何让jenkins与github通信2.1.2 配置Jenkins2.1.3 一段Django启动的脚本2.1...
    99+
    2022-11-12
  • 阿里SpringBoot应用自动化部署实现IDEA版Jenkins
    目录CloudToolkit简介安装使用自动化部署常用功能总结 之前分享过一些使用Jenkins进行自动化部署的技巧 ,最近发现一款阿里出品的IDEA插件CloudTool...
    99+
    2022-11-13
  • Node中怎么实现自动化部署
    这期内容当中小编将会给大家带来有关Node中怎么实现自动化部署,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。配置脚本这段脚本内容是我们需要服务器自动执行的# a...
    99+
    2022-10-19
  • Jenkins如何实现自动打包部署linux
    需要用到2个插件。 git parameter:用于参数化构建时选择分支。 Publish Over SSH:用于上传jar包和操作tomcat 1.先在系统设置添加要连接的linux服务器,使用用户名和密码验证,不...
    99+
    2022-06-03
    jenkins 打包 部署 linux
  • docker自动化部署怎么实现
    要实现Docker的自动化部署,可以采用以下步骤:1. 编写Dockerfile:根据项目需求编写Dockerfile文件,定义Do...
    99+
    2023-08-12
    docker
  • Gogs+Jenkins+Docker实现自动化部署.NetCore的方法步骤
    本篇内容主要讲解“Gogs+Jenkins+Docker实现自动化部署.NetCore的方法步骤”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Gogs+Jenkins+Docker实现自动化部署...
    99+
    2023-06-20
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作