RUN,第一个Jenkins构建

图片

我们之前聊了,Jenkins的部署和管理。那么我们下一步,就要开始来配置一个构建。

比如:我们有一个项目,首先需要从git上面将项目下载到本地,然后,打包发送的目标服务,到达目标服务器后解压缩。

那我们就来实现这样一个流程。

首先我们要新建一个自由风格的项目(Freestyle project)

图片

进入项目后,我们可以配置分支,这样,在部署的时候你可以选择分支

配置后,当部署的时候,效果如下

图片

注意:如果,刚装完的git没有GitBucket这个模块的话,可以系统设置,插件管理里面,安装GitBucket Plugin插件

如果规划的工作空间(workspace)的地址,想为每个项目配置特定的工作空间(workspace)的话,可以点击高级

图片

勾选使用自定义命名空间,这里的命名空间要和下面脚本生成代码的位置相对应。这里后面还会提到。

图片

然后我们开始进行源码管理

图片

这里一定要注意,指定分支,要用我们前面配置参数的时候,设置的$GIT_TAG$GIT。这样,我们在构建的时候选的参数才能够正确的传入。

配置完成后,可以配置构建,我们可以在这里写一个脚本。传入一个变量$GIT_TAG$GIT_TAG是git的内部变量,内部变量会在后面的文章详细说明。

这个脚本的作用就是进入工作目录(workspace),然后进行打包,传入的$GIT_TAG可以拼接成打包的后的名称,来区分是由哪个分支打成的包。这样的好处是,如果,你的项目下有多个api的版本,每个api的版本打成了一个分支,那么我们就可以用这样方式来进行一个api的升级。

比如,你有一个如下的thinkphp项目,如果在有多个api的版本,每个api可以是一个git分支,也可以是一个仓库。这样我们传入$GIT_TAG的时候,就可以根据这个值的不同来发布到不同的路径中。

thinkphp
├─Application 项目逻辑目录
│  ├─Common 公共模块
│  │  ├─Conf  公共配置文件目录
│  │  ├─Controller  公共控制器目录  
│  │  ├─Model  公共模型目录
│  │  ├─Tag  公共标签目录
│  ├─Home  Home模块
│  ├─Admin  结构同Home
│  ├─User  结构同Home
├─Public 资源文件目录
│  ├─install      安装引导目录
│  ├─statics      静态资源目录
├─Template 视图文件目录
│  ├─Public  公共目录
│  ├─Home  前台Home视图目录   
│  ├─Admin  同Home
│  ├─User   同Home
├─Upload  公共上传目录
│  ├─images   上传的图片目录
│  │  ├─avatar  头像目录
│  │  ├─ueditor ueditor编辑器上传的图片目录
│  │  │ ...
│  │ ...
├─Api_v1.0
├─Api_v2.0
├─Runtime 运行时目录
├─ThinkPHP 框架系统目录

下面是是一个简单的压缩打包脚本,来演示这个过程。

#!/bin/bash
#
# 环境变量
# 项目主目录
PROJECT_HOME=/var/lib/jenkins/workspace/
# 打包环境参数
ENV=dev
# 引入分支版本
RELEASE=$1
# 引入格式为origin/v1.0.1替换成v1.0.1
PROJECT_VERSION=${RELEASE#*/}
# 项目目录
PROJECT_PATH=jenkins-test-build01
# 打包名称
PACKAGE_NAME=${PROJECT_PATH}-${PROJECT_VERSION}
# 解压后的文件名
DEPLOY_NAME=${PROJECT_VERSION}

# 切换到项目所在目录
cd ${PROJECT_HOME}
# 检查target目录是否存在 不存在则创建
[ ! -e target ] && [ ! -d target ] && mkdir target

rm -rf target/*

# 打压缩包
tar -czf target/${PACKAGE_NAME}.tar.gz ${PROJECT_PATH}

echo "显示打包文件信息:"
ls -lh target/${PACKAGE_NAME}.tar.gz

之后我们进行构建后的操作,将打完包的项目发送到目标机器上面,这里我们需要使用SSH Publishers 功能,你需要提前安装Publish Over SSH插件。如果你已经安装,点击配置Jenkins,系统配置。

首先我们要配置一个SSH KEY

图片

这里一般我都用密码的方式,当然也可以使用Key的方式。key的方式验证slave

然后,配置ssh server

我们首先可以取一个名字,然后配置hostname,配置用户名,登录的密码或者key就是上面我们配置的SSH KEY。最后我们再配置一个Remote Directory,这个Remote Directory有什么用,接下来我会介绍

配置好SSH,我们就可以回到构建后的操作,来配置构建后拷贝的远程目录

图片

Source files:这里配置了一个相对路径,其实他就是工作目录(workspace)+配置的相对路径,也就是打好包的压缩文件的路径。这里我们配置了target/jenkins-test-build01*.tar.gz,它的全路径应该是你之前配置的workspace + target/jenkins-test-build01*.tar.gz,也就是/var/lib/jenkins/workspace/target/jenkins-test-build01*.tar.gz这个路径,写脚本的时候,路径也要和这个路径相对应。

Remove prefix:移除前缀,是指源文件的前缀,比如现在我们只是传输target文件夹里的所有文件,但是target文件夹本身不需要在远程服务器出现,那么就需要将其移除。这里后面会演示一下

Remote directory:也就是远程的服务器的目录,如果不存在也会创建这个目录。

Exec command:可以配置远程服务器上面的一个脚本。比如我们部署一个vue的项目,在构建的脚本,可以就行npm打包,然后tar命令生产压缩包,

Remote directory:拷贝打nginx的路径,然后用脚本进行打包。

配置完成后,我们可以运行一下试试

图片

是成功的。然后我们进入目标服务器的目录

图片

是成功的。然后我们进入目标服务器的目录

jenkins-test-build01-main.tar.gz
[root@web-01 html]# pwd
/opt/test/html
[root@web-01 html]#

这个文件已经有了,那么/opt/test这个路径是哪里来的呢,这里就是我们前面配饰ssh key的时候配置的Remote Directory。那么,我们尝试一下,去掉Remove prefix的选项,运行后再次查看项目路径。

[root@web-01 target]# ls
jenkins-test-build01-main.tar.gz
[root@web-01 target]# pwd
/opt/test/html/target
[root@web-01 target]#

可以看到,html下面多了target的路径,也就是没有清除Source files里面文件前缀的路径。

好了,我来总结一下。今天主要是聊了一下,我们创建自由式风格构建的一个大体思路,和基本的几个功能,git的配置,工作目录的配置,如何运行脚本和如何部署到远程服务器。这里一定要主要,目录的问题,如果配置有误,有些错误不太好排查。比如,你的工作目录配置的有问题,SSH Publishers模块,cp不到源文件。这个时候,它只会连一下目标服务器,但是无法成功拷贝,但是也不会报什么错误。比如下图。

图片

唯一的区别可能就是SSH: Transferred 0 file(s)这里,它没有传输内容。很多时候,我们发现配置没有生效的时候,都是路径问题。如果你还有什么问题,或者建议,可以给我留言,或者关注我的公众号 小圆和他的朋友们,期待与你共同进步。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小圆和他的朋友们

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值