一篇文章让你会用Jenkins DSL

背景介绍:小红有个python文件,需要每天定时运行,放在linux服务器上又怕失败了没有及时发现,因此想创建了一个jenkins job来运行,正常在Jenkins页面上创建job就可以了,现在小红想试试jenkins DSL的用法,所以功能就是写个Groovy脚本,用来设置Jenkins job的一些参数,然后在这个Groovy脚本中调用shell脚本,shell脚本里调用python脚本,也可以直接在Groovy脚本中调用python脚本。

一,Jenkins DSL是什么

DSL(Domain Specific Language) 是用Groovy语言编写的脚本,用来描述Jenkins 任务应该是什么样的。官方介绍自己找,大致了解就行

简单来说之前是通过Jenkins页面操作来新建job,现在运行你写得Groovy脚本就能出来一个新job,这个Groovy脚本还能被放在代码仓库里,如果job没有,直接跑一下就能出来新的。

写得groovy脚本如下

freeStyleJob("your-job-name") {
    logRotator(30, -1, 14, -1) //可以删掉,这里是保留日志30天
    triggers {
        cron('0 8 * * *') //这里设置每天早上8点跑
    }

    scm {//这里告诉jenkins去哪里找到你的shell,python 脚本
        git {
            remote {
                url('ssh://gerrit.ext.net.com:/your-repository) //这个库里存放your-shell 和your-python
                credentials('your-ssh')
            }
            branch('your-branch(master)')
        }
    }
    wrappers {
        preBuildCleanup() //运行前清理工作区
        timestamps() //日志输出显示时间戳
        colorizeOutput() //输出带颜色高亮
    }

    steps {
        shell("bash jobs/your_shell.sh")
    }
}

然后在your_shell.sh里调用你的python代码就可以了,也可以直接写在shell里,比如shell('echo "Hello World"')

这个是your_shell.sh的内容举例

#!/usr/bin/env bash
set -e

echo "Current Date: $(date)"

pip3 install requests || echo "Dependencies might already be installed."
python3 scripts/your-python.py
echo "Process finished successfully."

好了,到这就准备好了groove文件了。

二,怎么运行Groove

将你写好的各个文件提交到远端仓库,比如master

这里需要注意给your-shell.sh文件执行权限后再提交 

chmod +x your-shell.sh 

接着在你jenkins页面搜索seed,找到seed job,运行这个job,注意看它运行的分支是不是包含你的提交

如果seed job运行成功在jenkins首页就可以看到名字为“your-job-name”的job了。

如果你们项目里有也是使用这种方式来创建job的,你就可以看看别人是怎么定义的。或者先在jenkins上找到你想建的类似的job,然后抄写它的groove文件。

三, 进阶知识

刚开始用groove新建job可能想测试,测试分两个,一个是groove新建的job本身,一个是groove里面调用的python文件。先说想测试groove新建的job本身,这个可以把groove文件推到自己的远端分支,然后找到seed job,把里面的master分支换成自己的远端分支,就可以了

现在说第二个,想测试groove里面调用的python文件。这个也一样需要让python文件放在远端测试分支上,然后在新建出来的job里输入你的测试分支就可以了,如果job可以支持输入branch作为参数,那就不用每次修改config了,所以这里插入给job设置传参的功能。要传的参数就是一个branch, 默认为master。

可以这样修改

freeStyleJob("SCM-Jira-To-Milvus-Sync") {
   
    // 1. 添加参数配置
    parameters {
        // 定义一个字符串参数,名字叫 SCRIPTS_BRANCH,默认值是 master
        stringParam('SCRIPTS_BRANCH', 'master')
    }
    logRotator(30, -1, 14, -1)
    triggers {
        cron('0 8 * * *')
    }
    scm {
        git {
            remote {
                url('ssh://gerrit.ext.netxxx')
                credentials('xxx')
            }
            branch('$SCRIPTS_BRANCH')
        }
    }
    wrappers {
        preBuildCleanup()
        timestamps()
        colorizeOutput()
    }
    steps {
        shell("bash jobs/xxx.sh")
    }
}

还有各种各样的用法,比如想在python 脚本里调用jenkins job里的环境变量等,灵活的很高,感兴趣可以尝试。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值