维护Jenkins job

在我之前的工作工程中, 每次感觉头大的都是新项目的部署, 这个过程中就会涉及到Jenkins Job的创建。 在文章运维平台化一定是你的追求吗?中我们有提到Jenkins是实现Gitops的重要组成部分, 他是要干很多活的。 基于这样的情况我们就要对Jenkins job相关的东西首先代码化。

PS: 本文所有东西使用Jenkins Pipeline实现, 如果没有相关基础请先学习了解

第一步 - 安装Job DSL插件

我们使用Jenkins Job DSL来实现job的管理, Jenkins Job DSL 支持使用 Groovy 代码以编程方式创建 Jenkins Job。 我们需要将代码存储到git仓库中,从而使更改可追溯并自动完成 Jenkins Job的创建。

https://jenkinsci.github.io/job-dsl-plugin/

首先,浏览器输入your_jenkins_url/pluginManager/available. 在搜索框中,输入Job DSL。接下来,在生成的插件列表中,选中Job DSL旁边的框,然后单击Install without restart

image.png

注意:如果搜索Job DSL没有返回结果,则表示已经安装了 Job DSL 插件,或者您的 Jenkins 服务器的插件列表未更新。您可以通过浏览器访问your_jenkins_url/pluginManager/installed并搜索Job DSL.还可以访问your_jenkins_url/pluginManager/available并单击插件列表底部的“check now”按钮来更新 Jenkins 服务器的插件列表。

启动安装以后,我们会进入安装进度的页面,当看到Job DSLLoading plugin extensions旁边看到“success”,然后再继续下一步。

image.png

安装完成job dsl插件后, 我们就可以使用job DSL将配置代码化。

第二部 - 创建seed job

要创建seed job, 访问you_jenkins_url并且登陆以后, 点击左侧的New Item选项。 会出现如下图所示的页面,输入job名称,并选择类型为Freestyle project, 点击OK保存

image.png

保存成功后进入job配置页面, 向下滚动到Source Code Management部分, 点击选择git, 在文本框内输入git地址以及选择对应的deloy key, 输入文件的分支

image.png

Repository URL: git@git.example.com:devops/jenkins-job-dsl.git
Credentials: Deploy Key For Gitlab
Branches to build: master

注意: Deploy Key 最好使用单独的key, 并且只分配可以clone代码的权限。

保存成功后进入job配置页面, 向下滚动到Build部分,并单击Add Build步骤下拉菜单。接下来选择Process Job DSLs

image.png

然后,单击Use the provided DSL脚本旁边的单选按钮,并将编写的Job DSL脚本路径粘贴到DSL script文本区域。

image.png

文本内容为

jenkins-job-dsl/jobs/*.groovy
jenkins-job-dsl/jobs/demo/*/*.groovy
jenkins-job-dsl/jobs/example/*/*.groovy```

## 第三部 - Running Seed job 

点击刚创建好的job, 进行构建

## 第四部 - 配置gitlab webhook

1) `Settings` > `Webhooks` > `Add webhook`
2) URL - https://jenkins.example.com/project/prod-yunwei-jenkins-seed-all
3) Triggers - Whatever you want them to be (most likely at least **push**)

**注意:** 需要gitlab当前项目的master权限   


## 第五部 - 维护git仓库

首先在git中创建好`jenkins-job-dsl`名称的仓库, 按照如下的目录维护好仓库基础内容

http://git.example.com/devops/jenkins-job-dsl.git

**仓库目录结构**

$ tree -L 3
.
├── CONTRIBUTING.md
├── README.md
├── jobs
│ ├── example # 维护业务相关的job目录
│ │ ├── java # 维护java程序相关的job目录
│ │ ├── mobile # 维护app程序相关的job, 包括安卓和ios
│ │ ├── node # 维护前端相关的job
│ │ └── php # 维护php相关的job
│ ├── devops # 维护运维相关的job
│ │ ├── argocd_app.groovy
│ │ ├── docker_image
│ │ ├── dockerhub_to_aliyun.groovy
│ │ ├── kube_core_prod.groovy
│ │ ├── mother_imager_build.groovy
│ │ └── terraform_prod.groovy
│ ├── dashboard.groovy #维护jenkins view的脚本
│ ├── folders.groovy #维护全局目录的脚本
│ └── seed_all.groovy #seed job的入口文件
└── scripts # 维护其它需要的groovy脚本
├── argocd.groovy
├── dockerhub-to-aliyun.groovy
├── image_build.groovy
└── mother_image_build.groovy

14 directories, 14 files


### Example: 添加一个java程序

编辑/jobs/java/config_prod.json`文件,  按照下面的格式添加项目

{
"PLEASE_READ": "Always add the following properties: 'name', 'owner', and 'description' for your multi-branch pipeline. Keep objects sorted by 'name'. Contact @devops in Slack with any questions.",
"pipelines": [
{
"name": "yunwei-demo",
"repository": "git@git.example.com:middle/yunwei-demo.git",
"git_address": "git@git.example.com",
"git_group": "middle",
"git_project": "yunwei-demo",
"module": "",
"job_folder": "match",
"env" : "pre",
"branch": "pre",
"language": "java",
"jenkinsfile_path": "Jenkinsfile",
"clone_option_timeout": 30,
"owner": "match"
}
]
}


编辑完成后push到gitlab,会触发`seed job`的构建
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,590评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 86,808评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,151评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,779评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,773评论 5 367
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,656评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,022评论 3 398
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,678评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 41,038评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,659评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,756评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,411评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,005评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,973评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,203评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,053评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,495评论 2 343

推荐阅读更多精彩内容