你的第一个 Jenkins 项目,从这里开始

简介: 你的第一个 Jenkins 项目,从这里开始

前言


  • Jenkins 是一个基于 Java 开发的持续集成工具,能够很简单地作为一个可扩展的自动化服务器,为项目提供持续集成(Continuous Integration)的能力;
  • 这篇文章里,我将手把手带你搭建 Jenkins 局域网服务,并实现一个简单的 Jenkins 项目。希望让你对 Jenkins 有一个基本的印象,知道搭建一个 Jenkins 项目大概的模型是怎么样的,就够了。如果能帮上忙,请务必点赞加关注,这真的对我非常重要。


1. 部署 Jenkins 局域网服务


我们先过一遍部署 Jenkins 服务的步骤,因为网上讲这块内容的资料很多,所以我只说一些重点步骤和需要出错的点。我的需求是实现一个局域网内可用的 Jenkins 服务,部署步骤会相对简单,首先需要一台长时间开机的服务主机,这里以 Window 为例。


  • 1、下载 Jenkins 安装程序,并执行程序:官方网站
  • 2、安装过程-选择登录权限分配类型: 这里选择 “Run server as LocalSystem” 选项(不推荐,但够用):

image.png


  • 3、安装过程-选择端口号: 选择一个闲置的端口即可,如果将来需要修改端口号,可以参考这篇文章修改:Jenkins教程:修改Jenkins端口号 —— .NET开发菜鸟 著

image.png


  • 4、解锁 Jenkins: 在浏览器输入 localhost:7777,首次启动 Jenkins 需要解锁,根据提示操作即可:


image.png

  • 5、创建管理员账户: 额外创建一个管理员账户,可以共享给小组的同学来登录 Jenkins 服务:

image.png


  • 6、在其他主机访问 Jenkins 服务: 本机访问 Jenkins 服务可以访问 localhost:7777。需要在其他局域网主机访问时,先使用 ipconfig 查看本机 ip,再使用 ip:7777 访问,然后用 第 5 步 的管理员账号登录。即可进入 Jenkins Web 界面:

image.png

完成以上步骤后,一个简单的 Jenkins 服务就部署好了。


2. 管理 Jenkins 环境


在真正开始你的 Jenkins 任务时,你还需要先做一些额外的配置工作,顺便你可以了解一下 Jenkins 的操作界面和相关概念。


2.1 下载 Jenkins 插件


Jenkins 可以通过插件进行扩展,你可以直接使用 Jenkins 插件中心现有的插件,搭建属于你的持续集成流程。


image.png

image.png


进入插件中间可以看到 “可更新 - 可选插件 - 已安装” 这几项,“可更新” 的列表习惯性保持更新即可。小彭的项目和下面的示例会用到 GitLab、Qy Wechat Notification 这两个插件,那你顺便在 “可选插件” 中下载安装 GitLab 的插件吧,勾选插件后点击底部的 Install 按钮执行安装。


image.png


安装过程中可以勾选 “安装完成后重启 Jenkins(空闲时)”,因为有些插件需要重启 Jenkins 服务才会生效,我们索性保持重启的习惯。需要手动重启可以,直接访问:ip:7777/reload


image.png

2.2 添加凭证(Credentials)


Jenkins 可以与第三方应用平台(Github / GitLab)进行交互,这些应用通常都会做权限控制,因此你需要在 Jenkins 上配置身份凭证(credentials)。目前,Jenkins 可以存储下面几种类型的凭证:


凭证 描述
1、Secret text API Token(例如:GitHub 的个人 access token)
2、Username with password username:password 格式的字符串(例如:GitHub的用户名和密码)
3、Secret file 文件形式的加密内容
4、SSH Username with private key SSH 私钥(例如:在 GitHub 上配置 SSH 公钥,在 Jenkins 上配置 SSH 私钥)
5、Certificate PKCS#12 证书文件和可选的密码
6、Docker Host Certificate Authentication Docker 主机证书身份验证凭证


具体添加凭证的操作步骤参考这篇文章,非常详细清晰:Jenkins:添加 SSH 全局凭证 —— .NET开发菜鸟 著


2.3 全局工具配置(Global Tool Configuration)


Global Tool Configuration 用于配置构建工具的安装路径,或自动安装程序,比如这里配置自动安装 Gradle 工具:


image.png


2.4 系统配置(Configure System)


Configure System 用于配置全局可用的构建配置,例如 Jenkins URL、全局环境变量等:


image.png


这里我们需要配置 ANDROID_SDK_ROOT 和 GRADLE_USER_HOME 两个环境变量,否则后面在执行构建任务时会出错:


* What went wrong:
Could not determine the dependencies of task ':app:compileDebugJavaWithJavac'.
> SDK location not found. Define location with an ANDROID_SDK_ROOT environment variable or by setting the sdk.dir path in your project's local properties file at 'C:\ProgramData\Jenkins\.jenkins\workspace\JenkinsTest2\local.properties'.
复制代码
> Could not resolve all files for configuration ':app:debugRuntimeClasspath'.
   > Failed to transform appcompat-1.2.0.aar (androidx.appcompat:appcompat:1.2.0) to match attributes {artifactType=android-compiled-dependencies-resources, org.gradle.category=library, org.gradle.dependency.bundling=external, org.gradle.libraryelements=aar, org.gradle.status=release, org.gradle.usage=java-runtime}.
      > Execution failed for AarResourcesCompilerTransform: C:\Windows\System32\config\systemprofile\.gradle\caches\transforms-2\files-2.1\b9972f23873aac7b9a345e4f8f7b8547\appcompat-1.2.0.
         > Android resource compilation failed
           ERROR:: AAPT: C:\Windows\System32\config\systemprofile\.gradle\caches\transforms-2\files-2.1\f05998388cdecf8820753332a73f5edf\androidx.appcompat: error: 系统找不到指定的文件。 (2)
复制代码


image.png


3. 第一个 Jenkins 项目


准备工作做好后,现在我们可以开始搭建自己的构建项目了。从首页 “New Items” 可以进入创建项目页面,其中 FreestylePipeline 这两种项目类型最常用多,我们先从简单的 Freestyle 自由风格的项目开始。其实 Jenkins 可以玩的非常多,我们今天只讲最主要的内容。学习一个新东西要用先整体到局部的策略,避免一开始就陷入到细枝末节中。


image.png


先构想下我们的第一个 Jenkins 项目需要实现的能力:编译构建 Android 项目,并在构建成功后通知到企业微信。 一步步来吧:


  • 1、参数化项目: Jenkins 支持在构建时增加入参(This project is parameterized),这里我们增加了一个 BRANCH 参数(默认值为 develop):


image.png


  • 2、源码管理: 关联源码仓库,这里我们关联的是托管在 Gitlab 上的工程,在 “指定分支” 的地方使用了前面定义的参数 BRANCH。其中 Pengxr Window 是事先加好的 Jenkins 凭证,具体添加步骤可以回顾 2.2 添加凭证(Credentials)。

image.png


  • 3、配置构建触发器: 触发器决定了构建任务触发的时机,允许同时设置多个触发器,只要其中一个触发器满足条件就会执行构建任务。这里先配置了最简单的 手动远程触发,其他触发器我们在 第 4 节 再讲。

image.png


  • 4、定义构建任务: 构建任务定义了真正需要的构建逻辑,这里我们使用 invokeGradle 类型,具体的任务只是简单的 assembleDebug。需要特别注意要使用与工程相同的 Gradle 版本,也可以直接使用 Use Gradle Wrapper 选项,Jenkins 会自动下载项目所需的 Gradle 版本。

image.png

  • 5、定义构建后操作: 构建结束后可以做一些通知,比如向企业微信 / 钉钉发送一条消息。这里我们使用 Qy Wechat Notification 插件来向企业微信群发送消息:

image.png


到这里,一个 Jenkins 的 Demo 项目就搭建好了,在项目面板的 Build with Parameters 中可以看到参数配置界面:

image.png

  • 6、触发构建: 你可以直接点击界面按钮来触发构建,也可以使用 第 3 步 设置的远程触发器,直接在浏览器访问:
  • 不携带参数:


http://ip:7777/job/91160AndroidDaily/build?token=myToken
复制代码
  • 携带参数:


http://ip:7777/job/91160AndroidDaily/buildWithParameters?token=myToken&BRANCH=feature_user
复制代码


进入构建任务详情,还可以在 “控制台输出” 可以查看日志:


image.png

4. 构建触发器(Build Triggers)


Jenkins 可以实现自动化执行构建任务,你可以选择不同的构建触发器来设置触发条件,有些触发器需要安装特别的 Jenkins 插件才有。我将常见的 Jenkins 的构建触发器归纳为 3 类:手动触发 - 周期触发 - 关联触发,并举了一些例子:


类别 触发器举例 描述
手动触发 触发远程构建(例如,使用脚本) 通过访问特定的 URL 链接来触发,URL 中会拼接身份验证令牌(Token)来做身份确认
周期触发 Build periodically 间隔一个周期触发
周期构建 Poll SCM 周期性检查源码仓库变化,如果变化则触发(注意:因为需要对比整个 CVS 工作空间,这是个相对耗时的操作)
关联触发 Build after other projects are built 在其它 projects 构建后触发(例如在构建后触发自动化测试的构建任务)
关联构建 GitHub hook trigger for GITScm polling 向 GitHub 提交代码时触发构建


这里着重总结一下 Build periodically 触发器的日程表语法,其他触发器在实践中用到再讲吧。


日程表其实就是配置构建周期 / 频率,语法上分为 5 个参数,每个参数中间由一个空格分隔:


  • 分钟: 取值 0~59,特殊值 H 表示随机
  • 小时: 取值 0~23
  • 日: 取值 1~31
  • 月: 取值 1~12
  • 星期: 取值 0~7(0 和 7 是周日)


例如:


  • H 9 * * * 表示每天 9 点随机分钟执行
  • 0 1 1 * * 表示每月 1 号的 1 点执行
  • 0 1 * * 1-5 表示每周 1 到周五 1点执行
  • 0 1-12/3 * * * 表示每天 1 点到 12点,间隔 3 小时执行一次


其中 * 表示 “全部”,比如月参数 * 号,则表示从 1 月到 12 月

其中 - 表示区间,比如星期参数 1-5,则表示周 1 到周 5

其中 / 表示间隔,比如日参数 1-12/3,则表示 1 点到 12 点每间隔 3 小时


5. 总结


到这里,Jenkins 的入门教程就讲完了,你学会了吗?有少部分比较聪明的小伙伴就会问了:你这讲的东西太少了,什么 Pipeline 流水线、多渠道打包这些东西都没讲到。是的,首先我认为 Jenkins 说到底只是一个效率工具,工具能够掌握到解决问题的程度即可,不要本末倒置。其次,我们完成了 Jenkins 的主线任务,接下来再去做支线任务就游刃有余了。期待下续集,我们下次见。

目录
相关文章
|
4天前
|
jenkins Java 持续交付
【项目集成工具】Jenkins
【项目集成工具】Jenkins
|
4天前
|
jenkins 网络安全 持续交付
新的centos7.9安装docker版本的jenkins2.436.1最新版本-后端项目发布(四)
新的centos7.9安装docker版本的jenkins2.436.1最新版本-后端项目发布(四)
17 3
|
4天前
|
Java 开发工具 git
新的centos7.9安装docker版本的jenkins2.436.1最新版本-项目发布(三)
新的centos7.9安装docker版本的jenkins2.436.1最新版本-项目发布(三)
12 4
|
4天前
|
监控 前端开发 jenkins
Jenkins在前端项目持续部署中的应用,介绍了Jenkins作为自动化部署工具的基本概念和流程
【4月更文挑战第29天】本文探讨了Jenkins在前端项目持续部署中的应用,介绍了Jenkins作为自动化部署工具的基本概念和流程。前端持续部署涉及代码提交、构建、测试和部署四个步骤。实现过程中需配置代码仓库、构建、测试和部署任务,安装相关插件并确保环境一致性。注意事项包括代码质量控制、环境一致性、监控预警和安全管理。通过Jenkins,可提升前端开发效率和质量,但需不断学习以应对技术发展。
|
4天前
|
jenkins Java 持续交付
实战指南:运用Jenkins实现Java项目的持续集成与自动化部署
【4月更文挑战第17天】Jenkins是一款强大的开源CI/CD工具,广泛用于Java项目的自动化构建、测试和部署。通过配置Jenkins环境、创建Job、设定构建触发器和步骤,实现持续集成和部署。集成Maven、Git等工具,确保代码质量并加速上线。持续部署阶段,Jenkins可将工件发布至远程服务器或云环境,实现高效、稳定的自动化流程。实践过程中,关注工作流优化、配置备份和服务器状态监控,以提升整体开发效率和软件质量。
|
4天前
|
JavaScript Java jenkins
如何利用CentOS7+docker+jenkins+gitee部署springboot+vue前后端项目(保姆教程)
如何利用CentOS7+docker+jenkins+gitee部署springboot+vue前后端项目(保姆教程)
109 0
|
4天前
|
jenkins Java 持续交付
详解如何使用Jenkins一键打包部署SpringBoot项目
详解如何使用Jenkins一键打包部署SpringBoot项目
138 0
|
4天前
|
前端开发 jenkins 持续交付
前后端分离项目知识汇总(GateWay,Nacos配置中心,Jenkins自动化部署,项目总结)-3
前后端分离项目知识汇总(GateWay,Nacos配置中心,Jenkins自动化部署,项目总结)
73 0
|
4天前
|
jenkins Java 持续交付
前后端分离项目知识汇总(GateWay,Nacos配置中心,Jenkins自动化部署,项目总结)-2
前后端分离项目知识汇总(GateWay,Nacos配置中心,Jenkins自动化部署,项目总结)
59 0
|
4天前
|
前端开发 Java jenkins
前后端分离项目知识汇总(GateWay,Nacos配置中心,Jenkins自动化部署,项目总结)-1
前后端分离项目知识汇总(GateWay,Nacos配置中心,Jenkins自动化部署,项目总结)
56 0

热门文章

最新文章