利用Jenkins打包ISO和QCOW2镜像文件
现在的云虚拟化环境越来越多,经常会碰到需要修改并重新打包新的ISO或QCOW2镜像文件。通过手工的方式会比较麻烦,所以在镜像发布的生产环境中可以利用Jenkins来进行定期打包发布,以下介绍Jenkins环境中打包ISO/QCOW2镜像时的一些步骤和注意事项。(本处仅描述已经有QCOW2镜像的情况,如果没有QCOW2镜像的话需要新创建镜像,后续再添加从零创建镜像的过程)
配置打包ISO镜像
打包ISO镜像的过程比较简单,将命令写成一个脚本执行即可:
[root@localhost vfw]$ cat build_iso.sh
#!/bin/sh mkisofs -J -l -b boot/grub/stage2_eltorito -no-emul-boot -boot-load-size -boot-info-table -z -iso-level -o ./image/vfw.iso -joliet-long vfw_iso/
#vfw_iso路径下存放的是要打包的grub文件、内核文件以及其他一些需要的文件,具体视打包需要而定
配置打包QCOW2镜像
依赖,如果没有安装qemu通过apt-get install qemu安装最新版本即可:
nbd
qemu-nbd
qemu-img
1、给Jenkins用户取消执行shell需要控制终端;
修改/etc/sudoers配置文件(先执行chmod u+w sudoers增加写权限):
# Disable "ssh hostname sudo <cmd>", because it will show the password in clear.
# You have to run "ssh -t hostname sudo <cmd>".
#
Defaults:jenkins !requiretty #指定用户jenkins不需要控制终端
Defaults visiblepw #避免出现"no askpass program specified"报错
2、给Jenkins用户添加执行shell的权限;
修改/etc/sudoers配置文件,给jenkins增加所有需要执行的命令权限,且执行时不需要输入密码:
## The COMMANDS section may have other options added to it.
##
## Allow root to run any commands anywhere
root ALL=(ALL) ALL
jenkins ALL=NOPASSWD: /usr/bin/qemu-nbd,/usr/bin/mount,/usr/bin/umount,/usr/sbin/modprobe,/usr/bin/cp,/usr/bin/sudo,/usr/bin/srm,/home/builder1/vfw/build_qcow2.sh,/usr/bin/qemu-img
执行chmod u-w sudoers关闭写权限
添加构建脚本
Jenkins构建中添加打包执行的shell,例如;
export LC_CTYPE="zh_CN.UTF-8"
export PATH=$PATH:/usr/local/x86_64/bin/
day=`date +%Y%m%d` #加载nbd模块
sudo modprobe nbd max_part=16 #注意如果不添加max_part=16参数,在挂载镜像分区时可能会无法看到磁盘里面的实际分区,例如/dev/nbd0p1 #打包ISO镜像
\cp -rf images/*.img /home/builder1/vfw/vfw_iso/
cd /home/builder1/vfw/
./build_iso.sh #打包QCOW2镜像
\cp -rf images/*.img /home/builder1/vfw/vfw_qcow2/
cd /home/builder1/vfw/
sudo ./build_qcow2.sh
umount -fl /mnt10 #强制卸载
sudo qemu-nbd -d /dev/nbd0
sudo qemu-img convert -c -f qcow2 -O qcow2 /home/builder1/vfw/image/vfw.qcow2 /home/builder1/vfw/image/vfw_new.qcow2 #压缩文件
build_qcow2.sh说明:
#!/bin/sh qemu-nbd -c /dev/nbd0 ./image/vfw.qcow2 #将qcow2镜像映射为网络设备
mount /dev/nbd0p1 /mnt10 #挂载分区,如果有多个分区要操作就分别挂载到不同的路径下
\cp ./vfw_qcow2/*.img /mnt10/boot/
cd /mnt10
dd if=/dev/zero of=zero #无用的空间写0,避免多次操作镜像后镜像文件不断变大
srm -rf zero #删除zero文件
利用Jenkins打包ISO和QCOW2镜像文件的更多相关文章
- 利用Jenkins打包并远程部署NodeJS应用
本文Jenkins版本2.190.2,为19年11月最新 1.安装Jenkins.Git和NodeJS Jenkins安装参考:https://www.cnblogs.com/zhi-leaf/p/1 ...
- 利用Jenkins打包并远程部署SpringBoot应用
本文Jenkins版本2.190.2,为19年11月最新 1.安装Jenkins.Git.Maven和JDK Jenkins安装参考:https://www.cnblogs.com/zhi-leaf/ ...
- (.iso)光盘镜像文件的打开与安装
直接解压就可以打开,然后就可以安装.exe文件
- QEMU 使用的镜像文件:qcow2 与 raw
qcow2 的基本原理 qcow2 镜像格式是 QEMU 模拟器支持的一种磁盘镜像.它也是可以用一个文件的形式来表示一块固定大小的块设备磁盘.与普通的 raw 格式的镜像相比,有以下特性: 更小的空间 ...
- Android系统的镜像文件的打包过程
在前面一篇文章中,我们分析了Android模块的编译过程.当Android系统的所有模块都编译好之后,我们就可以对编译出来的模块文件进行打包了.打包结果是获得一系列的镜像文件,例如system.img ...
- (转)QEMU 使用的镜像文件:qcow2 与 raw
原文:https://www.ibm.com/developerworks/cn/linux/1409_qiaoly_qemuimgages/ qcow2 的基本原理 qcow2 镜像格式是 QEMU ...
- [图文] Fedora 28 使用 Virt-Manager 制作并优化QCOW2镜像——Windows 10 1709
实验说明: 云计算的发展使得桌面上云,windows 10就必不可少,这一章就如何制作QCOW2镜像文件并优化进行说明. 实验环境: 宿主机系统 :Fedora 28 WorkStation 虚拟 ...
- 【转载】深入理解OpenStack-手动制作qcow2镜像
深入理解OpenStack-手动制作qcow2镜像 2018-01-18 手动制作镜像 1 官方虽提供qcow2系统镜像,但对于有需求的企业来说,还是定制镜像比较靠谱,下面就手动定制一个镜像 给虚拟机 ...
- 镜像文件挂载及本地yum搭建
环境:centos7.2 背景:企业内网不能上网,需安装软件以及软件之间的依赖问题 解决方案:下载和企业内网服务器相同版本的centos7.2镜像文件完整版(不是最小化的iso) 挂载镜像文件 1.上 ...
随机推荐
- spark运行方式及其常用参数
yarn cluster模式 例行任务一般会采用这种方式运行 指定固定的executor数 作业常用的参数都在其中指定了,后面的运行脚本会省略 spark-submit \ --master yarn ...
- 【NOI 2005】 维修数列
[题目链接] 点击打开链接 [算法] 本题所运用的也是Splay的区间操作,但是实现较为困难 INSERT操作 将pos splay至根节点,pos+1 splay至根节点的右 ...
- iOS copy/retain/assign
1 深复制:内容拷贝,源对象和副本对象指的是两个不同的对象,源对象引用计数器不变,副本对象引用计数器为1 2 浅复制:指针拷贝,源对象和副本对象指的都是同一个对象,对象引用计数器+1,相当于retai ...
- 使用slot分发内容
为了让组件可以组合,我们需要一种方式来混合父组件的内容与子组件的模板.这个过程被称为 内容分发 使用特殊的<slot>元素作为原始内容的插槽 除非子组件模板包含至少一个<slot&g ...
- Linux限制端口
设置防火墙 iptables -a input -p 协议 -s 可以访问ip -dport端口 -j ACCEPT
- Block 与 delegate
代理设计模式对于iOS开发的人来说肯定很熟悉了,代理delegate就是委托另一个对象来帮忙完成一件事情,为什么要委托别人来做呢,这其实是MVC设计模式中的模块分工问题,例如View对象它只负责显示界 ...
- NOIp 2014 解方程 【数学/秦九韶算法/大数取膜】By cellur925
题目传送门 题意:求高次方程的解及其个数.其中 1° 我们知道,高次方程是没有求根公式的.但是利用逆向思维,我们可以进行“试根法”,因为题目中给出了所求根的范围.但是多项式系数过于吓人,达到了sxbk ...
- Luogu P1542包裹快递【实数域二分】 By cellur925
题目传送门 题目中说:最大值最小,显然是一个二分答案嘛qwq. 我们二分的答案显然是速度,但是由于实际中每一段的速度可能不同,所以这里我们把所有段进行的速度都定为二分出的答案. 二分的步骤好说,只是c ...
- <a>标签 href和onclick
先执行onclick函数,如果onclick函数正常,则跳转到href所指明的url,否则什么事情都不做 还是不行,尚未解决
- Ubuntu开机之后报错结局方法
sudo gedit /etc/default/apport 把里面的enabled=1改成enabled=,保存 201. 就是下雨也去.202. 我马上拿来.203. 孙英开飞机.204. 国华来 ...