乐趣区

关于jenkins:你的第一个-Jenkins-项目从这里开始

你的反对对我意义重大!

🔥 Hi,我是小彭。本文已收录到 GitHub · Android-NoteBook 中。这里有 Android 进阶成长路线笔记 & 博客,有气味相投的敌人,欢送跟着我一起成长。(联系方式在 GitHub)

前言

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

1. 部署 Jenkins 局域网服务

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

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

  • 3、装置过程 - 抉择端口号: 抉择一个闲置的端口即可,如果未来须要批改端口号,能够参考这篇文章批改:Jenkins 教程:批改 Jenkins 端口号 —— .NET 开发菜鸟 著

  • 4、解锁 Jenkins: 在浏览器输出 localhost:7777,首次启动 Jenkins 须要解锁,依据提醒操作即可:

  • 5、创立管理员账户: 额定创立一个管理员账户,能够共享给小组的同学来登录 Jenkins 服务:

  • 6、在其余主机拜访 Jenkins 服务: 本机拜访 Jenkins 服务能够拜访 localhost:7777。须要在其余局域网主机拜访时,先应用 ipconfig 查看本机 ip,再应用 ip:7777 拜访,而后用 第 5 步 的管理员账号登录。即可进入 Jenkins Web 界面:

实现以上步骤后,一个简略的 Jenkins 服务就部署好了。

2. 治理 Jenkins 环境

在真正开始你的 Jenkins 工作时,你还须要先做一些额定的配置工作,顺便你能够理解一下 Jenkins 的操作界面和相干概念。

2.1 下载 Jenkins 插件

Jenkins 能够通过插件进行扩大,你能够间接应用 Jenkins 插件核心现有的插件,搭建属于你的继续集成流程。

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

装置过程中能够勾选“装置实现后重启 Jenkins(闲暇时)”,因为有些插件须要重启 Jenkins 服务才会失效,咱们索性放弃重启的习惯。须要手动重启能够,间接拜访:ip:7777/reload

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 工具:

2.4 系统配置(Configure System)

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

这里咱们须要配置 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)

3. 第一个 Jenkins 我的项目

筹备工作做好后,当初咱们能够开始搭建本人的构建我的项目了。从首页“New Items”能够进入创立我的项目页面,其中 FreestylePipeline 这两种我的项目类型最罕用多,咱们先从简略的 Freestyle 自在格调的我的项目开始。其实 Jenkins 能够玩的十分多,咱们明天只讲最次要的内容。学习一个新货色要用先整体到部分的策略,防止一开始就陷入到细枝末节中。

先构想下咱们的第一个 Jenkins 我的项目须要实现的能力:编译构建 Android 我的项目,并在构建胜利后告诉到企业微信。 一步步来吧:

  • 1、参数化我的项目: Jenkins 反对在构建时减少入参(This project is parameterized),这里咱们减少了一个 BRANCH 参数(默认值为 develop):

  • 2、源码治理: 关联源码仓库,这里咱们关联的是托管在 Gitlab 上的工程,在“指定分支”的中央应用了后面定义的参数 BRANCH。其中 Pengxr Window 是当时加好的 Jenkins 凭证,具体增加步骤能够回顾 2.2 增加凭证(Credentials)。

  • 3、配置构建触发器: 触发器决定了构建工作触发的机会,容许同时设置多个触发器,只有其中一个触发器满足条件就会执行构建工作。这里先配置了最简略的 手动近程触发 ,其余触发器咱们在 第 4 节 再讲。

  • 4、定义构建工作: 构建工作定义了真正须要的构建逻辑,这里咱们应用 invokeGradle 类型,具体的工作只是简略的 assembleDebug。须要特地留神要应用与工程雷同的 Gradle 版本,也能够间接应用 Use Gradle Wrapper 选项,Jenkins 会主动下载我的项目所需的 Gradle 版本。

  • 5、定义构建后操作: 构建完结后能够做一些告诉,比方向企业微信 / 钉钉发送一条音讯。这里咱们应用 Qy Wechat Notification 插件来向企业微信群发送音讯:

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

  • 6、触发构建: 你能够间接点击界面按钮来触发构建,也能够应用 第 3 步 设置的近程触发器,间接在浏览器拜访:

    • 不携带参数:
    http://ip:7777/job/91160AndroidDaily/build?token=myToken
    • 携带参数:
    http://ip:7777/job/91160AndroidDaily/buildWithParameters?token=myToken&BRANCH=feature_user

进入构建工作详情,还能够在“控制台输入”能够查看日志:

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 的主线工作,接下来再去做干线工作就熟能生巧了。期待下续集,咱们下次见。

参考资料

  • 开始应用 Jenkins —— 官网文档
  • Jenkins:增加 SSH 全局凭证 —— .NET 开发菜鸟 著
  • Jenkins 教程:批改 Jenkins 端口号 —— .NET 开发菜鸟 著

你的点赞对我意义重大!微信搜寻公众号 [彭旭锐],心愿大家能够一起探讨技术,找到气味相投的敌人,咱们下次见!

退出移动版