跳至主要內容
3.2 访问 API

3.2 访问 API

转载自:访问API | willseecloud | 看云

远程访问API

Jenkins为功能提供了机器消耗的远程访问API。目前,它具有三种风格:

  1. XML
  2. JSON with JSONP support
  3. Python

Clay大约 6 分钟自动化工具Jenkins
4.5 共享库之钉钉消息推送

4.5 共享库之钉钉消息推送

起因:执行完流水线后进行一定程度的消息推送,所以选择钉钉进行jenkins构建结构的消息推送

下载配置相关依赖插件

相关环境:

  • Jenkins 2.277.3,安装文档见上篇
  • DingTalk 插件 2.4.3
  • build user vars plugin 插件 1.7
  1. 在Jenkins中安装钉钉插件DingTalk

    ⚠️ 请确保你的 Jenkins 版本 >= 2.176.4

  2. 钉钉机器人配置,说明文档

    找到 Jenkins 首页 >> 系统管理 >> 钉钉,我的配置如下图

    image-20210426164341273

    ⚠️ ​注意手动输入机器人的id,不要自动生成,否则重启后,robot的id将发生变化

  3. 安装build user vars plugin插件,插件可能有相关版本依赖,需要重启一下 Jenkins 才能继续安装

    在流水线中,使用wrap,获取BUILD_USER变量

    wrap([$class: 'BuildUser']) {
    }
    

Clay大约 3 分钟自动化工具Jenkins
2.4 使用docker安装jenkins

2.4 使用docker安装jenkins

安装配置docker

  1. 更换yum源,如果本来就是国内源,无需更换

    curl -fsSL "https://gitee.com/clay-wangzhi/shell/raw/master/repo_replace.sh" | bash
    
  2. 安装配置Docker

    使用官方脚本安装 Docker

    curl -fsSL "https://get.docker.com/" | bash -s -- --mirror Aliyun
    

    加载br_netfilter

    modprobe br_netfilter
    

    设置下系统内核参数

    cat<<EOF > /etc/sysctl.d/docker.conf
    # 要求iptables不对bridge的数据进行处理
    net.bridge.bridge-nf-call-ip6tables = 1
    net.bridge.bridge-nf-call-iptables = 1
    net.bridge.bridge-nf-call-arptables = 1
    # 开启转发
    net.ipv4.ip_forward = 1
    EOF
    sysctl -p /etc/sysctl.d/docker.conf
    

    ⚠️ 慎用sysctl --system命令,如果参数在不同文件中设置,会有优先级问题,目前看来/etc/sysctl.conf的优先级最高

    配置docker镜像加速器

    curl -sSL https://get.daocloud.io/daotools/set_mirror.sh | sh -s http://f1361db2.m.daocloud.io
    

    启动docker服务并加入开机自启

    systemctl enable docker && systemctl start docker
    

Clay大约 2 分钟自动化工具Jenkins
4.3 Groovy 简明教程

4.3 Groovy 简明教程

转载自:Groovy 简明教程 | 阳明的博客

最近一直有很多同学提到不会写 Jenkins Pipeline 脚本,我都是直接摔一个 Jenkins 官方文档给他们,但是当我自己仔细去查看资料的时候发现并非如此简单,无论是声明式还是脚本式的 Pipeline 都依赖了 Groovy 脚本,所以如果要很好的掌握 Pipeline 脚本的用法,我们非常有必要去了解下 Groovy 语言。


Clay大约 6 分钟自动化工具Jenkins
4.6 流水线开发工具

4.6 流水线开发工具

转载自:流水线开发工具 | 泽阳

您好,本模块主要了解在流水线中常用的方法😀


片段生成器

使用片段生成器可以根据个人需要生成方法,有些方法来源于插件,则需要先安装相关的插件才能使用哦。

images


Clay大约 1 分钟自动化工具Jenkins
4.7 pipeline 生产配置实例

4.7 pipeline 生产配置实例

pipeline配置java项目

pipeline {
    agent { label 'slave' }
    options {
        timestamps()
        disableConcurrentBuilds()
        buildDiscarder(
            logRotator(
                numToKeepStr: '20',
                daysToKeepStr: '30',
            )
        )
    }
    parameters {
        choice(
           name: "DEPLOY_FLAG",
           choices: ['deploy', 'rollback'],
           description: "发布/回滚"
        )
    }
    /*=======================================常修改变量-start=======================================*/
    environment {
        gitUrl = "git地址"
        branchName = "分支名称"
        gitlabCredentialsId = "认证凭证"
        projectRunDir = "项目运行目录"
        jobName = "${env.JOB_NAME}"
        serviceName = "服务名称"
        serviceType = "jar"
        runHosts = "192.168.167.xx,192.168.167.xx"
        rollbackVersion = ""
    }
    stages {
        stage('Deploy'){
            when {
                expression { return params.DEPLOY_FLAG == 'deploy' }
            }
            stages {
                stage('Pre Env') {
                    steps {
                        echo "======================================项目名称 = ${env.JOB_NAME}"
                        echo "======================================项目 URL = ${gitUrl}"
                        echo "======================================项目分支 = ${branchName}"
                        echo "======================================当前编译版本号 = ${env.BUILD_NUMBER}"
                    }
                }
                stage('Git Clone') {
                    steps {
                        git branch: "${branchName}",
                        credentialsId: "${gitlabCredentialsId}",
                        url: "${gitUrl}"
                    }
                }
                stage('Mvn Build') {
                    steps {
                        withMaven(jdk: 'jdk1.8', maven: 'maven') {
                            sh "mvn clean package -Dmaven.test.skip=true -U -f ${serviceName}/pom.xml"
                        }
                    }
                }
                stage('Ansible Deploy') {
                    steps{
                        script {
                            sleep 5
                            ansiColor('xterm') {
                                ansiblePlaybook colorized: true, extras: '-e "directory=${projectRunDir}" -e "job=${jobName}" -e "service=${serviceName}" -e "type=${serviceType}"', installation: 'ansible', inventory: '/etc/ansible/hosts.yml', limit: "${runHosts}", playbook: '/etc/ansible/playbook/deploy-jenkins.yml'                            
                            }
                        }
                    }
                }
            }   
        }
        stage('Rollback') {
            when {
                expression { return params.DEPLOY_FLAG == 'rollback' }
            }
            steps{
                script {
                    rollbackVersion = input(
                        message: "请填写要回滚的版本",
                        parameters: [
                            string(name:'last_number')
                        ]
                    )
                    sh """
                        echo "正在回滚至就近第${rollbackVersion}个版本"
                        ansible ${runHosts} -m shell -a "sh ${projectRunDir}/rollback.sh ${rollbackVersion} ${serviceName}"
                    """
                }
            }
        }
    }
    post {
        always {
            deleteDir()
        }
        success {
            echo 'This task is successful!'
        }
    }
}

Clay大约 3 分钟自动化工具Jenkins
4.2 Jenkins流水线语法

4.2 Jenkins流水线语法

您好,本模块主要学习声明式流水线的核心语法,掌握核心语法便于编写Jenkinsfile 😀


声明式流水线

声明式Pipleine是官方推荐的语法,声明式语法更加简洁。所有的声明式Pipeline都必须包含一个 pipeline块中,比如:

pipeline {
    //run
}

Clay大约 8 分钟自动化工具Jenkins
4.1 开始编写Jenkinsfile

4.1 开始编写Jenkinsfile

本文转自:开始编写 Jenkinsfile | 泽阳

您好,还在疑惑什么是流水线吗? 本章我们将告诉您如何运行一条流水线 赶快学习吧! 😀


为什么使用pipeline?

本质上,jenkins是一个自动化引擎,它支持许多自动模式。流水线向Jenkins添加了一组强大的工具,支持用例、简单的持续集成到全面的持续交付流水线。 通过对一系列的发布任务建立标准的模板,用户可以利用更多流水线的特性,比如:


Clay大约 3 分钟自动化工具Jenkins
2
3