目录
1、博客介绍
本篇是jenkins自动化流程的第四篇,也是最后一篇了,本编将在前三篇的基础上做一次实战练习,在jenkins构建一个利用python去处理图片的流程
篇章一 :在linux上部署jenkins环境
jenkins自动化构建流程篇章一 :在linux上部署jenkins环境_孙君的空间站-CSDN博客
篇章二 :jenkins任务的创建
jenkins自动化构建流程篇章二 :jenkins任务的创建_孙君的空间站-CSDN博客
篇章三 :shell脚本的语法和调用
jenkins自动化构建流程篇章三 :shell脚本的语法和调用_孙君的空间站-CSDN博客
篇章四 :实战,利用jenkins构建一个python处理图片的流程
jenkins自动化构建流程篇章四 :利用jenkins构建一个利用python自动处理图片的流程_孙君的空间站-CSDN博客
2、内容
. 准备git仓库
linux安装git:yum -y install git
第一步:准备一个git仓库
1、该仓库作用方便我们可以快速的修改在linux上的代码和资源,不用每次都传上去
2、这里直接输在github上创建的一个仓库
3、然后我们将仓库通过pscp命令从windows上移动到我们在linux下的指定目录
4、linux没装git的,记得先装一下,在配一下秘钥,这样就不用输密码了
. 准备预处理的资源
第二步准备好我们需要处理的资源,并上传到git的远端仓库
- 编号好,分别是:
10001:迪丽热巴
10002:金晨
10003:万茜
. 准备python脚本
#!/usr/bin/python
#-- coding:utf8 --
import argparse
import os
import sys
from PIL import Image
RES = "res"
def os_system(cmd):
print "cmd", cmd
os.system(cmd)
def init_option():
parser = argparse.ArgumentParser()
parser.add_argument('-d', '--dst', dest='dst_path', default=False, help='jenkins workspace')
parser.add_argument('-n', '--name', dest='build_id', default=False, help='build task name')
args = parser.parse_args()
return args
def img_to_webp(res_path):
for root, _, files in os.walk(res_path):
for f in files:
if os.path.splitext(f)[1] == '.png' or os.path.splitext(f)[1] == '.jpg':
fullpath = os.path.join(root, f)
if os.path.isfile(fullpath):
out_path = os.path.splitext(fullpath)[0] + '.webp'
print out_path
im = Image.open(fullpath).convert("RGBA")
# im.save(out_path)
os_system("cwebp %s -o %s" % (fullpath,out_path))
os_system("rm -rf" + temp_project)
print fullpath, out_path
os.remove(fullpath)
def init(args):
global dst_path
global build_id
global temp_project
global item_project
global res_project
global tar_project
# 参数
dst_path = args.dst_path
build_id = args.build_id
# 临时文件夹
temp_project = os.path.join(sys.path[0],"temp")
os_system("rm -rf " + temp_project)
os_system("mkdir " + temp_project)
# 拷贝
res_project = os.path.join(sys.path[0],"..",RES,build_id)
os_system("mkdir " + temp_project)
os_system("cp -r %s %s" % (res_project, temp_project))
# 转格式
img_to_webp(temp_project)
# 清理工作空间目录
tar_project = os.path.join(dst_path,build_id)
os_system("rm -rf " + tar_project)
item_project = os.path.join(temp_project,build_id)
# 拷贝到 workspace
os_system("cp -r %s %s" % (item_project, dst_path))
# 清理目录
os_system("rm -rf " + temp_project)
def main():
args = init_option()
print("System action: build start!!!! ")
print(args)
init(args)
if __name__ == "__main__":
main()
第三步:我们准备好处理业务逻辑的python脚本,我们来看看python脚本都干了些什么
1、接收了两个参数
parser.add_argument('-d', '--dst', dest='dst_path', default=False, help='jenkins workspace')
parser.add_argument('-n', '--name', dest='build_id', default=False, help='build task name')dst_path:处理完成的资源放置的目录
build_id:需要处理的资源id
2、创建了一个放置临时文件的文件夹
# 临时文件夹
temp_project = os.path.join(sys.path[0],"temp")temp_project:该目录拷贝需要处理的资源,不在原资源上处理,用完后删除
3、将临时目录内的资源转成webp格式的图片
img_to_webp(temp_project)
4、拷贝资源到目标目录
# 拷贝到 workspace
os_system("cp -r %s %s" % (item_project, dst_path))
. 准备shell脚本
#!/bin/bash
echo "shell build start !"
cd /home/lighthouse/work/jenkins_test_work
git pull
cd tools
python deal_image.py -d ${WORKSPACE} -n ${build_name}
第四步:准备供我们jenkins调用的shell脚本,我们来看看shell脚本都干了什么
1、我们cd到了工作目录
cd /home/lighthouse/work/jenkins_test_work
2、更新了一下当前代码
git pull
3、cd到了python脚本所在的目录
cd tools
4、调用了python脚本,并传递了两个参数
WORKSPACE:jenkins默认的工作空间参数,不用声明也可以直接用
build_name:这个是我们自己传递的参数,根据参数决定转迪丽热巴还是金晨万茜
. jenkins任务的创建
第五步:我们创建一个jenkins的任务
1、我们增加了一个自定义参数的输入 build_id,对应shell脚本里的输入
2、我们调用了之前的order.sh脚本
. jenkins任务的执行
第六步:最后一步,我们运行我们的任务
最终资源以及构建完成,我们可以下载下来
. 一些坑点和注意事项
1、linux的python记得安装pillow
2、博主 最早用的是pil直接转webp,结果一直失败,这个之前在阿里云上是好用的,不知道现在为什么不好使了,可能是跟pillow版本有关系,试了试几个方案不好用,最后转用cwebp命令了
用不了cwebp命令的要安装一下webp的库
centos7:yum install -y libwebp-tools
im.save(out_path) ----------- os_system("cwebp %s -o %s" % (fullpath,out_path))
3、第一次构建的时候失败了,因为参数shell脚本里是build_name,任务栏写的是build_id,俩对不上
3、推送
Github:https://github.com/KingSun5
后续文章传送门:
4、结语
至此博主关于jenkins自动化的文章就到此结束了,希望看到最后的同学有所收获,若是觉得博主的文章写的不错,不妨关注一下博主,点赞一下博文,另博主能力有限,若文中有出现什么错误的地方,欢迎各位评论指摘。
QQ交流群:806091680(Chinar)
该群为CSDN博主Chinar所创,推荐一下!我也在群里!
本文属于原创文章,转载请著名作者出处并置顶!!!!