jenkins自动化构建流程篇章四 :利用jenkins构建一个利用python自动处理图片的流程

目录

1、博客介绍

2、内容

. 准备git仓库

. 准备预处理的资源

. 准备python脚本

. 准备shell脚本

. jenkins任务的创建

. jenkins任务的执行

.  一些坑点和注意事项

3、推送

4、结语


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所创,推荐一下!我也在群里!

       本文属于原创文章,转载请著名作者出处并置顶!!!!

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值