配置项目构建完成后文件移动---- Jenkins自动化部署学习笔记(三)

  在前两篇文章中,跟大家分享了在 Windows 系统上安装 Jenkins 和使用 Jenkins 进行 Android 项目的编译打包;相信可能会有人疑问,打包完成之后,我需要将 apk 文件放入指定位置怎么办。

  其实,Jenkins 功能很强大,它可以配置在打包完成之后将你所需的文件拷贝至目标路径,亦可配置在打包完成后(成功/失败),邮件通知相关人员。下面详细介绍:

一、将打好的包移动至指定目录

  1. 我在自己的电脑上安装 Jenkins ,进行项目构建,并且想要将每次构建的包存入到E盘的AndroidApk目录下:
    在上篇文章中,我们说到了,在配置构建任务时,有一个构建的选项,我们可以增加相应的操作来实现;
  • (1)、在构建选项区域下方,点击 增加构建步骤 ,选择Execete Windows batch commond
    添加一个构建任务(务必在Invoke Gradle script 任务下方)

    image.png

  • (2)、在增加的 Windows 命令框中,需要配置相应的操作命令来实现移动的功能

其实移动的功能,我们可以看作是将源文件复制到目标目录,然后将源文件删除。
在打包时我们可以根据不同的环境配置不同的包,比如debug.apk ,release.apk;
我们也可以使用命令,将不同环境的包,移动至不同的目录下:

复制文件,我们需要源文件目录和目标文件目录:
此项目中:
源文件目录:D:\jenkinsSpace\example\app\build\outputs\apk\
目标文件目录:E:\AndroidApk
在AndroidApk下,我们再创建不同的文件夹,如:devApk 和 releaseApk
故,命令如下:

移动文件命令
copy D:\jenkinsSpace\example\app\build\outputs\apk\*debug*.apk E:\AndroidApk\devApk
copy D:\jenkinsSpace\example\app\build\outputs\apk\*release*.apk E:\AndroidApk\releaseApk
rmdir /s /q D:\jenkinsSpace\example\

可以看到,这个总共有三条命令

第一条命令:是将源文件目录下的名称包含 debug ,后缀名为 .apk 的文件复制到 E:\AndroidApk\devApk 目录下

第二条命令:是将源文件目录下的名称包含 release ,后缀名为 .apk 的文件复制到 E:\AndroidApk\releaseApk 目录下

第三条命令:是将 Jenkins 构建该项目的工作空间进行清空(删除工作空间目录及子文件)

  • (3)、配置好之后,我们点击保存, 进行立即构建,构建结果如下:
构建结果

我们可以看到,在位置 1 处:项目构建成功,耗时 1分56秒

位置 2 处 :执行了复制名称包含 debug ,后缀名为 .apk 的文件的命令,成功

位置 3 处 :执行了复制名称包含 release ,后缀名为 .apk 的文件的命令,失败

位置 4 处:执行了删除工作空间的命令,成功

位置 5 处:退出执行命令,exit

位置 3 出执行失败的原因是,我们再配置项目构建任务的时候,只是写了 clean assembleDebug 这两个命令,进行项目clean 和debug构建,我们将这个命令更改为clean build,就会构建所有配置的渠道包。

  1. 我们有时候需要将打好的apk 移动至共享文件夹,方便大家使用获取安装,这时候,我们只需要在执行复制命令前增加一行命令,将共享文件夹目录映射到本地盘符:

命令如下:
net use [盘符] \[ip][共享文件夹] "[password]" /user:"[userName]"

% 将共享文件夹映射为盘符 Y:%
net use Y: \\192.168.22.156\tech  "!qaz2wsx3edc" /user:"tech"

在此命令下,我们更改上面的命令中的盘符为共享文件夹盘符,就可将apk移动至共享文件夹了

copy D:\jenkinsSpace\example\app\build\outputs\apk\*debug*.apk Y:\AndroidApk\devApk
copy D:\jenkinsSpace\example\app\build\outputs\apk\*release*.apk Y:\AndroidApk\releaseApk
rmdir /s /q D:\jenkinsSpace\example\
  1. 我们也可以定义一个bat文件,放在主机上,让Jenkins任务去调用执行这个bat文件,来复制/移动文件
    bat文件内容如下:
% 将共享文件夹映射为盘符 Y:%
net use Y: \\192.168.22.156\tech  "!qaz2wsx3edc" /user:"tech"

% 配置工作空间目录变量%
set "spaceDir=D:\jenkinsSpace\example"

% 配置目标文件夹目录变量%
set "targetDir=Y:\AndroidApk\jekinsBuildApks"

% 定义当前日期字符串的变量如 20180505%
set "dateStr=%date:~0,4%%date:~5,2%%date:~8,2%"

% 定义Apk源文件目录%
set "resourceDir=%spaceDir%\app\build\outputs\apk"

% 根据日期分别定义在dev,test , release 下需要创建的文件夹目录%
set "devPath=%targetDir%\dev\%dateStr%"
set "testPath=%targetDir%\test\%dateStr%"
set "releasePath=%targetDir%\release\%dateStr%"

% 创建文件夹%
md %devPath%
md %testPath%
md %releasePath%

% 复制apk到目标文件夹%
copy %resourceDir%\*dev*.apk %devPath%
copy %resourceDir%\*test*.apk %testPath%
copy %resourceDir%\*release*.apk %releasePath%

% 强制删除工作空间目录%
rd/s/q %spaceDir%\

该文件中 %% 之间的内容为注释内容
然后我们将该bat文件命名为copyApp.bat ,放置在D:\bat\目录下,
我们再Jenkins 任务中做如下配置

call D:\bat\copyApp.bat
exit 0
执行bat文件

call D:\bat\copyApp.bat 是调用执行bat文件,
exit 0 是用来处理上面出现的因windows 命令执行错误导致Build FAILURE,
Jenkins 任务根据cmd命令行返回是否为0来判断是否Build 成功,故只要exit 0,每次返回0,无论windows 命令执行成功与否,只要项目Build 成功了,整个任务就是成功的。
至此项目移动至其他目录完成!

上一篇:自动化构建Android项目 ---- Jenkins自动化部署学习笔记(二)
下一篇:配置项目构建完成后邮件通知---- Jenkins自动化部署学习笔记(四)

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

推荐阅读更多精彩内容