维护Jenkins job

作者: 一瓶多先生 | 来源:发表于2021-10-05 09:19 被阅读0次

在我之前的工作工程中, 每次感觉头大的都是新项目的部署, 这个过程中就会涉及到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
jenkins-job-dsl/jobs/devops/*.groovy
jenkins-job-dsl/jobs/devops/docker_image/*.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/53zaixian/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的构建

相关文章

网友评论

    本文标题:维护Jenkins job

    本文链接:https://www.haomeiwen.com/subject/mcwoultx.html