jenkins流水线及常用插件介绍

发布于:2023-01-08 ⋅ 阅读:(639) ⋅ 点赞:(0)

一、 简介

本文主要介绍jenkins的声明式pipeline,及一些常用插件。个人学习的分享,如有问题,朋友们可以指出。

二、声明式pipeline语法结构

只有简单的结构组成,具体的细节可以查看以下官网地址
pipeline语法官网

pipeline {
    agent any #整体默认执行环境

    stages {
        stage('Hello') {
        	agent any  #本阶段的执行环境
            steps {
                echo 'Hello World'
            }
        }
    }
}

pipeline
声明式pipeline必须以 pipeline{开始
agent:
agent部分指定整个pipeline或特定stage将在 Jenkins 环境中执行的位置,具体取决于代理部分放置的位置
agent支持的参数,以及用法

#any 可以在任何agent上运行pipeline 
agent any
#none 不在任何agent上运行pipeline 
agent none
#label匹配在jenkins上指定对应标签的环境运行pipeline  
agent { label 'my-label1 && my-label2' } or agent { label 'my-label1 || my-label2' }
#创建docker环境运行pipeline 
agent { docker 'image:tag' }
#指定dockerfile目录创建环境运行pipeline
agent { dockerfile { dir 'someSubDir' } }
#在k8s集群的pod环境内运行pipeline
agent {
    kubernetes {
        defaultContainer 'kaniko'
        yaml '''
kind: Pod
spec:
  containers:
  - name: kaniko
    image: gcr.io/kaniko-project/executor:debug
    imagePullPolicy: Always
    command:
    - sleep
    args:
    - 99d
    volumeMounts:
      - name: aws-secret
        mountPath: /root/.aws/
      - name: docker-registry-config
        mountPath: /kaniko/.docker
  volumes:
    - name: aws-secret
      secret:
        secretName: aws-secret
    - name: docker-registry-config
      configMap:
        name: docker-registry-config
'''
   }

steps
对应阶段执行的命令

三、常用插件及用法

3.1 ssh功能插件

安装插件名称:publish-over-ssh
官网地址
详细介绍可看官网,这里只做简单介绍,介绍配置和用法。

3.1.1 sshserver的系统配置

在 Jenkins 主页上,单击“ 系统管理”,然后单击“ 系统配置”,找到 SSH 部分。也可输URL
在这里插入图片描述
在SSH server下配置信息远程主机的信息,具体配置不概述

3.1.2 生成ssh的流水线脚本

在新建流水线下,单击“流水线语法”,可通过片段生成器,选择“sshPublish”,填写对应信息(填写的参数信息在3.1.3中有介绍),生成流水线脚本。
在这里插入图片描述

3.1.3 pipeline配置

以下steps中的内容为我生成的脚本内容

stage('SSH-BUild') {
            steps {
                sshPublisher(publishers: [sshPublisherDesc(configName: 'test1', #configureName:SSH-server配置时自定义的name名称
                transfers: [sshTransfer(cleanRemote: false, excludes: '', execCommand:#远程执行命令,在家目录下
                '''
                echo 123 >> 1.txt
                echo 'the files will be transfered before the Exec command is executed'
                ''',
                execTimeout: 120000, flatten: false, makeEmptyDirs: false, noDefaultExcludes: false, patternSeparator: '[, ]+', remoteDirectory: 'test', #传送文件到远程主机的对应目录,test为相对路径,绝对路径为SSH-server配置的远程路径+test
                remoteDirectorySDF: false, removePrefix: '', sourceFiles: 'Dockerfile' #jenkins本地的文件的项目根目录下
                )], usePromotionTimestamp: false, useWorkspaceInPromotion: false, verbose: false)])
            }
        }

有两点要注意:
1.如果配置了源文件,那么将在执行 Exec 命令之前传输这些文件
2.配置源文件和Exec至少一个,如果既没有配置源文件也没有配置 Exec 命令,则发布将失败

问题:Exec执行的命令,jenkins终端不会有日志产生,执行结果需到远程主机查看,以下为上面流水线脚本执行的日志。
在这里插入图片描述

3.2 git功能插件

基础环境:jenkins的服务器上安装git
安装插件名称:git-plugin
[git插件官网介绍]https://plugins.jenkins.io/git/

3.2.1 配置凭证信息

在 Jenkins 主页上,单击“ 系统管理”,然后单击“ Manage credentials”,配置代码库的访问凭证
在这里插入图片描述

3.2.2 生成git的流水线脚本

在新建流水线下,单击“流水线语法”,可通过片段生成器,选择“git”,填写对应信息,生成流水线脚本。
在这里插入图片描述

3.2.3 pipeline配置

以下steps中的内容为我上一步生成的脚本内容

pipeline {
    agent any

    stages {
        stage('gitClone') {
            steps {
                git branch: 'main', credentialsId: 'gitlab-a', url: 'http://43.140.210.110/chenl1/cc.git'
            }
        }
    }
}

以上配置是通过HTTP克隆,密码认证的方式(下面说的几种方式,自行研究)
git 源码库的认证方式一般以下到4种方式:
1.HTTP克隆,user和password认证方式
2.HTTP克隆,源码库生成TOKEN认证
3.SSH克隆,user和password认证方式
4.SSH克隆,生成秘钥对,gitlab上放公钥,jenkins上放私钥

3.3 kubectl功能插件

基础环境:安装kubectl客户端
插件名称: Kubernetes CLI Plugin
[插件官网地址]:https://plugins.jenkins.io/kubernetes-cli/

3.3.1 配置凭证信息

在 Jenkins 主页上,单击“ 系统管理”,然后单击“ Manage credentials”,配置代码库的访问凭证
在这里插入图片描述
凭证选择secret file,上传kubeconfig文件

3.3.2 生成kubectl流水线脚本

在新建流水线下,单击“流水线语法”,可通过片段生成器,选择“WithKubeConfig”,填写对应信息,生成流水线脚本。
在这里插入图片描述
选择认证信息,生成流水线脚本

3.3.3 pipeline配置

以下steps中的内容为我上一步生成的脚本内容

pipeline {
    agent any

    stages {
        stage('Hello') {
            steps {
               withKubeConfig(caCertificate: '', clusterName: '', contextName: '', credentialsId: 'kubectl-cred', namespace: '', serverUrl: '') {
                sh 'kubectl get pod'
                }
            }
        }
    }
}

jenkins支持下列几种类型的凭据,可用于对 Kubernetes 集群进行身份验证,可自行实验:
1.Token
2.普通 KubeConfig 文件
3.用户名和密码
4.证书
5.OpenShift OAuth Token

本文含有隐藏内容,请 开通VIP 后查看

网站公告

今日签到

点亮在社区的每一天
去签到