目录
目标: 在GitLab提交代码之后,Jenkins会自动构建。
1.在GitLab上新建一个项目test
![](https://i-blog.csdnimg.cn/blog_migrate/63ff39dff568850779e7aecfccb75478.png)
2.在Jenkins上新建一个项目test-jenkins
2.1)点击新建任务
![](https://i-blog.csdnimg.cn/blog_migrate/1e03e5018472ab53b7c8b656fd04e8e0.png)
2.2)输入任务名称,选择构建一个maven项目,确定
![](https://i-blog.csdnimg.cn/blog_migrate/34e9b53ab1add3c658d027efdfe71188.png)
如果Jenkins上有类似任务,可以直接选择“根据一个已经存在的任务创建”
![](https://i-blog.csdnimg.cn/blog_migrate/92b97b9370ec7c1cb869b764d82401dc.png)
2.3)填写任务配置
(1)填写描述。
![](https://i-blog.csdnimg.cn/blog_migrate/ed381d85d43e67f5b5fffe2207bbcc78.png)
(2)填写GitLab链接
(3)添加有权限的GitLab用户
![](https://i-blog.csdnimg.cn/blog_migrate/0069f5f4358bf6bc04f12fb553110f59.png)
(4)构建触发器,勾选“GitLab有push的时候自动构建”选项
![](https://i-blog.csdnimg.cn/blog_migrate/31a6f9185605271bc84a894d5e3426bb.png)
(5)在4的子目录最下面,点击“高级”
![](https://i-blog.csdnimg.cn/blog_migrate/7905dd1f7cdf8fa03e5710a74eabd0f9.png)
(6)点击Generate,生成Secret token,记住这个token
![](https://i-blog.csdnimg.cn/blog_migrate/c5be5d1047f32adb55d09a7d2a837bf7.png)
(7)构建配置,默认填写如下内容:(-P 为pom.xml配置选择,可不选)
clean package -Dmaven.test.skip=true -U -P test -X -e
微服务架构需要填写如下内容:
clean package -U -DskipTests=true -P dev -pl 包名:服务名 -am
![](https://i-blog.csdnimg.cn/blog_migrate/971c4bb22a8cb32b0866c74487791c76.png)
(8)Post Steps,选择“只有在构建成功和不稳定的时候执行”选项,增加“执行Shell”模块,编写执行脚本。
![](https://i-blog.csdnimg.cn/blog_migrate/8afdce6460631af59d16ca69e42ac836.png)
![](https://i-blog.csdnimg.cn/blog_migrate/04d7303f560aa69499c3266e094297a2.png)
执行脚本示例:
echo "post build"
MODULE_NAME="test"
MODULE_FILE_NAME="test"
MAVEN_PROFILE=""
APP_USER=root
DEPLOY_SERVER=192.168.1.190
ssh -t ${APP_USER}@${DEPLOY_SERVER} "\
if [ \
! -e /home/${APP_USER}/myapp/${MODULE_NAME} \
];\
then \
mkdir /home/${APP_USER}/myapp/${MODULE_NAME}/\
;fi"
scp ${WORKSPACE}/${MODULE_NAME}/target/${MODULE_FILE_NAME}.jar \
${APP_USER}@${DEPLOY_SERVER}:/home/${APP_USER}/myapp/${MODULE_NAME}/
sleep 1
ssh -t ${APP_USER}@${DEPLOY_SERVER} "\
if [ \
! -e /home/${APP_USER}/myapp/${MODULE_NAME}/app.sh \
];\
then \
cp /home/${APP_USER}/myscript/app.sh /home/${APP_USER}/myapp/${MODULE_NAME}/ \
;fi \
&& cd /home/${APP_USER}/myapp/${MODULE_NAME} \
&& sh /home/${APP_USER}/myapp/${MODULE_NAME}/app.sh restart "
(9)点击保存。
![](https://i-blog.csdnimg.cn/blog_migrate/dc87a24364a92f5811abffebf7805d5b.png)
3回到GitLab上配置钩子
3.1)选择Settings->Webhooks
![](https://i-blog.csdnimg.cn/blog_migrate/cedc177245f7102ddcb9ccc34a88c64e.png)
3.2)将之间Jenkins上复制的Url和Secret token粘贴上(详见2.3中(4)和(6))
![](https://i-blog.csdnimg.cn/blog_migrate/c9ea6e08fa3a661b07c2335e190d3ab0.png)
3.3)点击添加钩子
![](https://i-blog.csdnimg.cn/blog_migrate/4b223fd88216173e401354915e5020fa.png)
3.4)添加之后可以看到已经添加好的钩子,点击Test可以进行测试
![](https://i-blog.csdnimg.cn/blog_migrate/ed57a29e248bdb5f0bb875f8fb44fa2c.png)
3.5)点击Test,选择Push events,可以模拟Push操作
![](https://i-blog.csdnimg.cn/blog_migrate/c636ff3e86d89065053b4b0ec9585d59.png)
3.6)可以看到test-Jenkins已经在构建了
![](https://i-blog.csdnimg.cn/blog_migrate/77277034cee0b7d5c308ef2da8257af4.png)
整理完毕,完结撒花~