温馨提示

写博客是为了记录在开发过程中所涉及到的技术以及遇到的问题的解决,如果该博客对您有所帮助,希望可以点个关注;如果您对文章中的内容有什么不同的见解,欢迎留言进行讨论。谢谢!

前言

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

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

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

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

  • (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

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

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

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

  1. Jenkins +maven+tomcat自动构建部署(学习笔记三十六)

    https://my.oschina.net/denglz/blog/524154 摘要: jenkins + maven + svn + tomcat 自动部署 jenkins  是做什么用的,如果 ...

  2. Jenkins自动化部署-配置项目(下)

    一.新建项目,设置Git地址,账号密码. 多种方式,ssh方式,需要配置私钥. 第1个错误:Git没安装 Linux机器上,先安装Git软件. CentOs系统,yum install git git ...

  3. Jenkins自动化部署前端Vue项目

    Jenkins自动化部署前端Vue项目 前言 安装NodeJs 下载NodeJs 安装NodeJs npm配置 Jenkins配置NodeJs 安装NodeJs插件 配置NodeJs 新建及配置任务 ...

  4. Jenkins自动化部署Vue项目

    Jenkins自动化部署Vue项目 jenkins介绍 Jenkins是开源的,使用Java编写的持续集成的工具,在Centos上可以通过yum命令行直接安装.Jenkins只是一个平台,真正运作的都 ...

  5. 基于Jenkins自动化部署spring boot项目

    1. 使用Jenkins来实现微服务架构下的自动化部署! 在微服务架构中,随着项目拆分越来越细,导致服务越来越多,服务的打包部署就会成为一个相当麻烦的事情.在我之前工作的公司都是本地打包好,上传到服务 ...

  6. 前端项目jenkins自动化部署

    项目打包和自动化部署 一. 项目部署和DevOps 1.1. 传统的开发模式 在传统的开发模式中,开发的整个过程是按部就班就行: 但是这种模式存在很大的弊端: 工作的不协调:开发人员在开发阶段,测试和 ...

  7. 利用Jenkins自动化部署springboot项目到阿里云服务器(centos8)

    背景: 最近想部署一个springboot项目到阿里云服务器里面.捣鼓了很久,构建了很多次,都失败了!实在是一脸辛酸,有点气馁~ 在此想记录一下构建的过程. 不了解Jenkins之前,觉得Jenkin ...

  8. Jenkins 自动化部署上线 ​

    Jenkins 自动化部署上线 Jenkins 自动化部署上线 由于51cto格式问题,可以直接访问https://www.abcdocker.com/abcdocker/3174 查看原文 [TOC ...

  9. Jenkins 设置镜像_我常用的SpringBoot+Jenkins自动化部署技巧,贼好用,推荐给大家...

    SpringBoot+Jenkins自动化部署技巧,远程部署同样适用,附通用自动化脚本!本文将从半自动化部署讲起,到自动化部署,讲解一套生产环境切实可用的自动化部署方案! 半自动化部署 之前写过的Sp ...

  10. jenkins 手动执行_我常用的SpringBoot+Jenkins自动化部署技巧,贼好用,推荐给大家...

    项目源码地址 项目源码:麻烦转发后关注@JAVA发量告急私信回复[自动化]即可获取! SpringBoot+Jenkins自动化部署技巧,远程部署同样适用,附通用自动化脚本!本文将从半自动化部署讲起, ...

最新文章

  1. 分治、贪心、动态规划的简单理解
  2. 使用Log Explorer恢复数据
  3. 清华大学计算机系毕业季博论 | 预荐未来的自己
  4. 【CCNA】思科PPP身份验证(PAP单向认证与CHAP单向认证)
  5. short 用equals_Java Short类equals()方法的示例
  6. Android View滚动、拉伸到顶/底部弹性回弹复位
  7. 国防科技大学计算机学院教员,我国最好的四所科技大学,第一名排名世界前列,还有一所是铁饭碗...
  8. docker容器内漏洞_如何在2020年发现和修复Docker容器漏洞
  9. 颜色模型和颜色应用---小结
  10. LintCode 13. Implement strStr()
  11. SAP Client Copy
  12. 传智播客 C/C++学习笔记 内存四区模型
  13. Python 高阶函数,匿名函数 思维导图
  14. cmd中文乱码解决方案
  15. Monster: half man, half beast and very scary.
  16. 最佳运动类APP-Keep原型设计与欣赏
  17. 学会保护自己的眼睛!
  18. 部署 docker 容器虚拟化平台
  19. 如何使用抽象类和抽象方法
  20. 【转】美国50州气候及学校推荐

热门文章

  1. excel不使用科学计数法
  2. html中自定义快捷键,电脑怎样自定义快捷键简单实现
  3. 什么是冲激函数、时域卷积、冲激响应以及频响曲线
  4. SQL练习:查询各科成绩前三名的记录
  5. 特征工程之特征选择(4)----嵌入法(Embed)
  6. 获取微信公众号用户的openid
  7. LAMMPS学习系列(7)
  8. C语言--函数-统计单词个数
  9. 【数据分析|面试】如何介绍你的项目经历
  10. 贴片钽电容的封装、尺寸和标…