jenkins的pipeline实现指定节点项目构建并部署代码至后端服务器

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了jenkins的pipeline实现指定节点项目构建并部署代码至后端服务器相关的知识,希望对你有一定的参考价值。

技术图片

1.pipeline功能特点

1)是帮助jenkins实现持续集成CI(Continue Integration)转变为持续部署CD(Continue Deploy)的重要功能插件;

2)将多个节点的单个任务连接起来,实现单个任务难以实现的复杂发布流程;

3)Pipeline 的实现方式是一套 Groovy DSL,所有的发布流程都可以表述为一段 Groovy 脚本;

4)是jenkins上的一套工作流框架.

2.pipeline语法

1)stage:pipeline可以划分为多个stage阶段,每个是stage为执行的一个操作,每个阶段可以跨节点;

2)node:jenkins的节点,是执行操作的具体服务器;

3)step:是jenkins pipeline执行操作的最小单元.

3.查看jenkins添加的节点,node1节点同步成功并建立连接

技术图片

4.pineline项目的创建、代码部署

1)创建一个pipeline-job项目,选择流水线

技术图片

2)pipeline-job修改配置文件、设置丢弃旧的构建之间保存的最小和最大时间,此项根据需要可设置可不设置

技术图片

3)再点击Pipeline Syntax(流水线语法),填写gitlab仓库源地址、选择认证方式、点击Generate生成拉取代码的pipeline脚本

技术图片
技术图片

4)在复制上面生成的拉取代码的pipeline脚本,编写pipeline构建脚本,保存配置

技术图片

#以上构建的pipeline脚本:
node("node1")
            stage("clone code")
                 sh ‘rm -rf /var/lib/jenkins/workspace/pipeline-job/*‘
                 git branch: ‘develop‘, credentialsId: ‘1f60339e-fbb3-41e6-88a7-ae80834823b4‘, url: ‘git@192.168.1.30:jie/web-page.git‘
            
             stage("compress code")
                 sh ‘cd /var/lib/jenkins/workspace/pipeline-job/ && tar cvf index_code.tar.gz *‘
             
             stage("send code")
                 sh ‘ssh 192.168.1.23 "/usr/sbin/nginx -s stop"‘
                 sh ‘ssh 192.168.1.23 "rm -rf /apps/nginx/html/*"‘
                 sh ‘scp /var/lib/jenkins/workspace/pipeline-job/index_code.tar.gz 192.168.1.23:/apps/nginx/html‘  
             
             stage("deploy code")
                 sh ‘ssh 192.168.1.23 "cd /apps/nginx/html/ && tar xvf index_code.tar.gz"‘
                 sh ‘ssh 192.168.1.23 "/usr/sbin/nginx"‘
             
        

5)在node1节点生成秘钥对

[root@node1 workspace]# ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): 
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:YHTsZqXXSRMoV2ZG3gEgGYEzxdHEF4kNYlIc75Qy6JI root@node1
The key‘s randomart image is:
+---[RSA 2048]----+
|      oB%X+OX=.  |
|     .+=*+B**. . |
|      ++o=++.o.  |
|     + .==. o    |
|    E .oS..      |
|     .           |
|                 |
|                 |
|                 |
+----[SHA256]-----+

6)再将node1的公钥认证authorized_keys复制到nginx后端服务.ssh目录下,实现免秘钥登录nginx后端服务

[root@node1 ~]# ssh-copy-id 192.168.1.23

7)点击立即构建

技术图片

8)查看控制台信息构建成功

技术图片

9)验证node1节点的工作目录是否构建

root@node1 ~]# ll /var/lib/jenkins/workspace/pipeline-job
total 16
-rw-r--r-- 1 root root 10240 Jul 26 16:42 index_code.tar.gz
-rw-r--r-- 1 root root 42 Jul 26 16:42 index.html

10)浏览器访问nginx服务,实现pipeline脚本代码部署

技术图片

以上是关于jenkins的pipeline实现指定节点项目构建并部署代码至后端服务器的主要内容,如果未能解决你的问题,请参考以下文章

采用jenkins pipeline实现自动构建并部署至k8s

Jenkins 训练营 | 带你玩转 Pipeline

Jenkins-05-Pipeline使用 Docker构建项目并构建进行推送到私有仓库 harbor

Jenkins pipeline:pipeline 语法详解

Jenkins pipeline概念理解

Jenkins pipeline 语法详解