最近工作时总是需要用xshell连接Linux服务器手工部署php项目,很是麻烦,于是想通过代码来解决这个头痛的问题,于是开撸,撸之前先整理思路,下面我就从以下几个方面介绍下整个过程。
1.自动化部署需要工具
2.部署脚本shell需要完成的功能
3.遇到的技术问题有哪些
4.这些问题是怎么解决的
少废话,先看最终成果。
Jenkins:
shell:
下面分别详细介绍:
1、自动化部署需要的工具
自动化部署持续继承当然是大名鼎鼎的Jenkins啦,因为要涉及到自动化,优先选择shell,因为可以在Linux上直接操作
2.自动化部署shell脚本需要完成的功能
第一步:登陆目标Linux服务器,这里可以采用Linux的spawn和expect,也可以直接通过Jenkins的ssh插件来解决。
第二步:检查目标项目是否存在,如果存在直接git checkout 目标分支,git pull就可以了,但是如果遇到手动修改过Linux服务器上的代码,一般git过程中都会Aborting,所以为了防止遇到这种问题,想到了强制构建,也就是不管当前项目存在与否,统一删除后,重新git clone,通过shell代码解决
第三步:git 更新或下载目标项目后,需要软链接Nginx配置文件,但是此时可能已经存在,防止配置文件发生更新,所以需要重新复制,并重新加载,通过shell代码解决
第四步:最后需要cp目标项目的service文件到/lib/systemd/system,但是此时可能已经存在,防止配置文件发生更新,所以需要重新复制,并重新启动服务,通过shell代码解决
第五步:重启服务后,检查项目是否已经启动,并打印该项目日志,通过shell代码解决
3.遇到的技术问题有哪些
1.Jenkins迁移,更换workspace如何操作?
2.Jenkins参数化构建,怎么提取目标分支,如何使用布尔参数?
3.Jenkins构建,如何远程执行shell脚本,困难是需要切换用户操作?
4.shell如何等待执行,shell如何自动与Linux交互?
5.Jenkins控制台日志中文乱码?
6.Jenkins系统如何显示中文简体?
未完待续!!!
关注我,持续更新后续内容,后续内容更加精彩,涉及到以上所有问题的讲解。