侧边栏壁纸
博主头像
Z同学博主等级

工作磨平激情前,坚持技术的热忱。 欢迎光临Z同学的技术小站。 分享最新的互联网知识。

  • 累计撰写 274 篇文章
  • 累计创建 55 个标签
  • 累计收到 74 条评论

JenKins 实战-首次从Git上获取代码并编译打包Android apk

Z同学
2021-12-23 / 0 评论 / 2 点赞 / 720 阅读 / 3,340 字
温馨提示:
本文最后更新于 2021-12-24,若内容或图片失效,请留言反馈。部分素材来自网络,若不小心影响到您的利益,请联系我们删除。

介绍

Jenkins的很多功能如果直接按照界面菜单的简单介绍,可能会让人很迷茫无从下手。

所以,我打算根据实际情况。一点点的丰富对于JenKins的了解。

而本篇就是介绍:如果有一个Android 项目。是通过gitlab进行代码管理。

那么如何采用Jenkins将项目从GitLab上拉取。并进行构造打包成apk。

先从最基本简单的方法来实现。

1.准备工作

我们都知道如果要打包Android 。那么肯定是需要AndroidSDK的。

所以,我们要先配置AndroidSDK 到JenKins之中。

Manage JenKins -> Configure System 进入到系统全局配置界面

image-20211223104844376

然后滑动列表,在全局属性项目上,勾选:Environment variables(环境变量配置)。

会自动弹出键值对列表。让我们填写

image-20211223105026724

效果图如上,键: ANDROID_HOME 。然后值就是填写我们SDK的根目录即可。

例如我们的D盘AndroidSDK 路径下的截图所示。

image-20211223105123650

扩展一下知识:我们如果其他编译插件等也可以在这里配置路径。这样jenkins就能够找到相关的sdk库了。在构造的时候也能使用得上

2.创建Jenkins 项目

我们先创建一个任务 Freestyle Project。

image-20211223105829459

这个任务名称是可以随意定义的。根据你这个项目的实际情况出发。

不止是字母和下划线。我们还可以输入中文任务名称。

我们创建完任务之后,将会自动进入配置界面

这个界面,我们之后可以随时进行访问操作。而JenKins之中每个任务的脚本和执行规则,构造规则等全部是在这个界面中进行配置的。

2.1 配置General信息

在General中我们配置的是通用信息,所有任务都有的配置项。

image-20211223110237143

描述: 介绍这个任务的功能任务。让其他人使用的时候了解这个任务的主要作用。

填写个描述就可以了。下面的这些选项我们可以保持默认,并不影响我们的构建任务。

之后深入学习的时候再介绍。

2.2 源码管理

JenKins 默认安装插件的时候就有了Git的插件。所以通常默认情况下有两个选择:无,Git。

我们选择Git,然后在Repository URL 中配置我们的Git仓库地址,这个地址格式可以是HTTPS也可以是SSH的。

我们把路径拷贝上去之后,会提示下面的错误: code 128错误

Failed to connect to repository : Command "git.exe ls-remote -h -- https:我们的git 路径地址 HEAD" returned status code 128:
stdout:
stderr: fatal: Cannot prompt because user interactivity has been disabled.
remote: HTTP Basic: Access denied
fatal: Authentication failed for 'https:我们的git 路径地址'

这个错误很简单,因为Git 访问上面的路径后,没有权限。我们需要在Credentials 下面选择或者添加我们Git的账户密码。

image-20211223113436820

2.2.1 添加Git 账号。方便进行拉取

通常这一步不用我们自己配置。公司环境搭建完毕后。应该给JenKins 分配一个Git超级账户。然后后面大家只需要关注Repository URL。然后这个凭证选择就可以了。

我们需要添加一个Domain:全局凭证(unresricted),类型为 Username with password的凭证。

然后输入我们的git用户名以及密码。

image-20211223114015238

然后点击保存,其他的ID和描述等可以省略掉。

image-20211223114116611

然后Credentials 下拉。选择我们刚才配置的账户。这个时候 code 128错误 就没有了。

2.2.2 Branches to build 管理分支

我们如果Git 上有很多的分支,那么任务肯定是要打不同的分支的。

这个时候我们就要在上面标注我们需要打哪个分支。

例如我的Git上有两个分支,一个是默认的master分支,一个是我新开的v2.0分支

那么我们可以如下配置:

image-20211223114407617

其他的配置项,我们可以暂时不用理会。

2.3 构建触发器

顾名思义,就是我们可以配置各种脚本或者触发条件。当条件满足的情况下JenKins自动帮我们进行构建项目。

可以减少我们自己手动点击的过程。

构建触发器暂时用不上。我们可以省略掉,之后等我们熟悉之后或者进阶情况下,我们可以使用构建触发器。

本次我们就省略掉这一步骤。

2.4 构建环境

构建环境,我们其实也可以保持默认的状态即可。

因为构建过程中,JenKins会从本地拉取各种信息和配置数据,如果你的配置数据要进行每次的修改替换。

你可以选择第一项: Delete workspace before build starts : 在开始构建之前删除工作区。

这个工作区就是我们任务下面的:工作空间。

本次我们也省略这一步的配置。

保持默认即可。

image-20211223115708980

2.5 构建-build

现在就进入核心关键点了。我们要进行构建脚本的配置,告诉JenKins 如何进行任务的构建了,也就是所谓的Build。

首先:Invoke Gradle scropt 调用Gradle 脚本。android sdk打包,现在都是使用的Gradle脚本进行打包的。

image-20211223140858004

如果我们本地有安装很多Gradle 插件,那么可以在下拉列表中选择。如果没有的话。

image-20211223141222061

就会显示Default。我们在编译后,就会出现Gradle.bat 文件找不到的错误了。建议进行安装之后,再进行选择

例如:image-20211223152056138

(PS:如果不知道安装可以参考我的这篇文章:Jenkins 构造失败,控制台输出:gradle.bat 不是内部或者外部命令 -解决方法 (zinyan.com)

选择完毕后,我们要配置Tasks。其实脚本命令和我们在Android Studio 中的Gradle 面板中的Task是一样的。

只是原先是在Android Studio中调用。而这次是通过Jenkins调用。

效果如下:

image-20211223153042959

在tasks 中输入:

app:clean
app:assembleRelease

就可以了。

2.6 构建后操作

我们配置完毕后,就要配置构建后的存储路径了。

image-20211223170550420

这个路径,不是说JenKins帮我们存储的路径。而是告诉jenkins 从哪个目录下获取构造结果。

然后jenkins再根据这个路径在网页中提供一个访问链接。

配置方法:示例

image-20211223171148604

全部配置完毕后,我们只要点击构建等待结果即可。

3. 执行构建操作

按照上述操作,配置完毕后。点击右侧这个按钮。

注意:构建页面在你点击之后不会立马有反应。你点击之后等个几秒到十几秒。看看有没有构建状态在执行。

image-20211223142450844

之后就等待构建状态了。你可以在构建状态上看到信息。

在JenKins中你看到的Build Now 功能菜单也是用来构建的。点击也是将指定的任务进行构建操作。

如果成功就是绿色的成功提示符,如果是失败就是红色的警告符。

例如:image-20211223142724064

上面的就是成功了,下面的就是失败了。

然后成功后的效果如下图:

image-20211223171248782

我们上面的最后一次成功的构建结果。

3.1构建错误问题追踪

我们如果构建失败了,在构建历史中,我们点击相应的构建信息,就会看到各种错误的输出日志了。

我们再根据日志的提示,进行修改自己的配置信息就可以了

例如:image-20211223143347582

我的项目构建失败了。我点击这个#3 就能看到错误原因了

image-20211223143453155

例如上面错误提示说是No changes 没有选择。告诉我们已经执行了Git的命令。 后面的步骤失败了。

我们就需要通过控制台输出,看到更具体的错误原因,以及整个脚本是在哪个步骤无法进行了。

看到详细的错误内容和原因,我们再针对该问题进行修复即可。

在整个脚本配置过程中,我也出现了不少的问题。以及编译过程的错误。针对JenKins的各种问题,可以参考

Jenkins (zinyan.com) 链接下的资料。

本网站所有关于JenKins的相关内容和问题,都在JenKins分类下可以查询到。

(ps:最近开始接触JenKins,专业书籍已经买了几本了。准备边学习边配置。同时将自己碰见的问题进行汇总。)

希望能够帮助到大家。

2

评论区