Jenkins+github配置构建触发器

安装Jenkins

参考地址: https://blog.csdn.net/qq_38661798/article/details/84375765
Jenkins一般要有访问公网的权限,需要能通过url或者ip地址直接访问,才能成功配置webhook


docker安装jenkins

参考: 官方文档安装Jenkins

# jenkinsci/blueocean 是LTS版本
docker run --name jenkins -u root -d -p 8080:8080 -p 50000:50000 -v jenkins-data:/var/jenkins_home -v /var/run/docker.sock:/var/run/docker.sock --restart=always jenkinsci/blueocean

打开http://ip:8080即可访问Jenkins


安装Jenkins常用插件

https://blog.csdn.net/xiangxi1204/article/details/138826269

安装jenkins插件前,先修改Jenkins的插件源国内源.

  • 安装Deploy to container插件;
  • 安装流水线插件workflow-aggregator;
  • 安装Git Parameter;
  • Git 拉取代码
  • Pipeline 流水线
  • kubernetes 连接k8s动态创建Slave代理
  • Config File Provider 存储配置文件
  • Extended Choice Parameter 扩展选择框参数,支持多选

在Jenkins上指定git绝对路径

在Jenkins的全局工具配置中,指定git的绝对路径
在这里插入图片描述


使用Poll SCM定时检查代码库是否有更新-构建触发器

# 每分钟检查一次(5个星)
* * * * *

# 其他时间可以根据提示配置

配置构建指令

构建 ->Execute shell–中添加构建指令

# 添加构建指令
echo "building ......"

配置完成后点击保存.


使用webhook自动构建

必须Jenkins有公网ip地址且可被访问

参考: https://blog.csdn.net/qq_21768483/article/details/80177920

JenkinsGithub插件的配置中,点击高级按钮,启用Hook URL,并将Hook URL复制出来,并保存刚才的设置

在这里插入图片描述

github项目的Settings中点击Webhooks,然后点击Add webhook,在Payload URL中填写Jenkins复制出来的Hook URL

选择事件: 推送事件,只要有comity就会拉取代码
在这里插入图片描述


触发远程构建器

在这里插入图片描述

http://Jenkins的url地址/job/项目名称/build?token=自定义token

访问这个url地址即可远程触发构建。
将这个地址粘贴在github的webhook中,就可以自动触发远程构建


在Jenkins内关闭“防止跨站点请求伪造”

Github访问Jenkins的时候,没有携带请求头,不关闭防止跨站点请求伪造将无法正常访问Jenkins。
在这里插入图片描述

在Jenkins的系统管理-》全局安全配置-》CSRF Protection中,取消勾选防止跨站点请求伪造,然后点击保存
在这里插入图片描述


不关闭“防止跨站点请求伪造”访问Jenkins,需要获取crumb值

在这里插入图片描述
在这里插入图片描述
这时候的webhook需携带验证信息和请求头

# curl模拟访问
curl -X post -v -u admin:admin -H "Jenkins-Crumb:88a12946e078"  http://192.168.70.131:8080/jenkins/job/ProOne/build?token=自定义token

# 携带token访问时的完整的url地址
http://用户名:密码@192.168.70.131:8080/jenkins/crumblssuer/api/xml

pipeline语法

参考 https://www.jenkins.io/zh/doc/book/pipeline/syntax/#declarative-sections

在这里插入图片描述


pipeline基本语法示例

// def 定义变量
def registry = "192.168.0.100"  

pipeline{
    // 节点选择
    agent any
    // stages-阶段集--分为下面3个步骤
    stages {
        // Build阶段
        stage(Build){
            // Build的具体步骤
            steps{
                // 调用的命令都是shell命令
                echo 'build......'
            }
        }
        // Test阶段
        stage("Test"){
            // Test的具体步骤
            steps{
                echo 'test......'
            }
        }
        // Deploy阶段
        stage(Deploy){
            // Deploy的实际步骤
            steps{
                echo 'deploy......'
            }
        }
    }
}

script示例

script{} 可以执行指定语言的脚本(如 PythonJavaScriptShell 脚本等)

//  导入 Groovy 的 JSON 包
import grovy.json.*
// 导入 Groovy 的 IO 包
import grovy.io.*
// 导入 Groovy 的文件包
// import com.cwcttravel.hudson.Plugins.extended_choice.ExtendedChoiceParameterDefinition

// 定义一个名为 BRANCH 的变量,并将其值设置为 Jenkins 参数中的 BRANCH 参数的值。如果 BRANCH 参数不存在,则将 BRANCH 变量的值设置为默认值 master。
BRANCH = params.getOrDefault('BRANCH', 'master')
// def 定义变量
// def registry = "192.168.0.100"  

// 定义一个流水线
pipeline{
    // 挑选节点运行---any表示在任意节点运行
    agent any
    // 阶段集
    stages{
        // 阶段1:拉取代码
        stage('拉取代码') {
            steps {
                // script 可以执行指定语言的脚本(如 Python、JavaScript、Shell 脚本等)
                script {
                    // 输出日志,表示开始更新代码
                    echo '开始更新代码'

                    // 使用 Git SCM 插件检出代码
                    checkout([
                        $class: 'GitSCM', // 指定 Git SCM 插件
                        branches: [[name: "${BRANCH}"]], // 指定检出分支
                        // ... 其他 Git 配置 ...
                    ])
                }
            }
        }
         // 构建Docker镜像阶段
        stage('Build Docker Image') {
            // 构建Docker镜像阶段的具体步骤
            steps {
                script {
                    // 进入指定目录
                    sh '/tmp/my-build'
                    // 执行Docker构建命令,根据Dockerfile构建镜像
                    sh 'docker build -f Dockerfile.x86 -t go-run-server-amd64:alpine3.20.3 .' 
                    // 打印镜像构建完成
                    echo 'Docker镜像构建完成'
                }
            }           
        }
        // 阶段3:推送到Docker仓库
        stage('推送镜像到Docker仓库') {
            steps {
                script {
                    // 输出日志,表示开始推送镜像
                    echo '开始推送镜像'

                    // 使用 Docker Registry 插件推送镜像
                    docker.withRegistry('https://registry.cn-hangzhou.cr.volces.com', 'my-docker-credentials') {
                    }
                }
            }
        }
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

识途老码

赞赏是第一生产力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值