目标: 在GitLab提交代码之后,Jenkins会自动构建。

1.在GitLab上新建一个项目test

2.在Jenkins上新建一个项目test-jenkins

2.1)点击新建任务

2.2)输入任务名称,选择构建一个maven项目,确定

如果Jenkins上有类似任务,可以直接选择“根据一个已经存在的任务创建”

2.3)填写任务配置

(1)填写描述。

(2)填写GitLab链接

(3)添加有权限的GitLab用户

(4)构建触发器,勾选“GitLab有push的时候自动构建”选项

(5)在4的子目录最下面,点击“高级”

(6)点击Generate,生成Secret token,记住这个token

(7)构建配置,默认填写如下内容:(-P 为pom.xml配置选择,可不选)

clean package -Dmaven.test.skip=true -U -P test -X -e

微服务架构需要填写如下内容:

clean package -U -DskipTests=true -P dev -pl 包名:服务名 -am

(8)Post Steps,选择“只有在构建成功和不稳定的时候执行”选项,增加“执行Shell”模块,编写执行脚本。

执行脚本示例:

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)点击保存。

3回到GitLab上配置钩子

3.1)选择Settings->Webhooks

3.2)将之间Jenkins上复制的Url和Secret token粘贴上(详见2.3中(4)和(6))

3.3)点击添加钩子

3.4)添加之后可以看到已经添加好的钩子,点击Test可以进行测试

3.5)点击Test,选择Push events,可以模拟Push操作

3.6)可以看到test-Jenkins已经在构建了





整理完毕,完结撒花~

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐