因项目战略原因,要用腾讯云服务器,我们一直在用阿里云的云效,所以尝试搭建一个devops,虽然腾讯云也有coding.net上也有流水线构建,但是要是觉得不方便,因为我们的代码都在阿里云code上,所以不想改git了,所以自己搭建一个jenkins配置阿里云code的git。其中也遇到一些坑,故做下笔记,希望有需求的朋友可参考。
1、windows安装jenkis
下载安装版之间双击安装
中文说明
https://www.jenkins.io/zh/doc/book/using/
官网下载
点击“Install suggested plugins”,即安装推荐的插件:
会出现插件安装失败,这里建议用vpn代理安装。
插件安装完成
安装插件 Publish Over SSH 、Maven Integration
安装完成后 ,新建一个item,我是项目用maven的构建,所以选择maven
配置阿里云code
配置jdk
配置构建环境
部署安装
clean package 就不用了,不然本地配置就清空了target目录,导致项目无法启动
cd C:\ProgramData\Jenkins\.jenkins\workspace\test\-xx\-xx-web\target
java -jar -Dfile.encoding=utf-8 xx-web.jar --spring.profiles.active=test &
要注意 -Dfile.encoding=utf-8 nacos的编码格式,不然会出现parse data from Nacos error
2、docker 安装jenkins
1、部署docker jenkins
docker pull jenkinsci/blueocean
mkdir -p /opt/data/jenkins-data
docker run --name jenkins -u root -d -p 8080:8080 -p 50000:50000 -e TZ=Asia/Shanghai -v /opt/data/jenkins-data:/var/jenkins_home -v /var/run/docker.sock:/var/run/docker.sock --restart=on-failure:10 jenkinsci/blueocean
2、配置流水线
源码配置的时候选择阿里云git仓库
构建项目
构建后需要推送到服务器,我这是本机,如果是远程的后续我在试下
执行命令可参考
cd /data/project
docker stop xx-api-test
docker rm xx-api-test
docker images | grep xx-api-test |awk '{print $3}'|xargs docker rmi -f
docker build -f Dockerfile -t ${JOB_NAME} .
docker run -d -e SPRING_PROFILES_ACTIVE="test" -e PROFILE=test -e CATALINA_OPTS="-Xdebug -Xrunjdwp:transport=dt_socket,address=5005,suspend=n,server=y" -e JAVA_OPTS="-Xss256k -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=256m -Xms512m -Xmx1024m -Duser.timezone=Asia/Shanghai" -e TZ="Asia/Shanghai" -p 5006:5005 -p 36091:8080 -v /etc/localtime:/etc/localtime -v /log:/log -v /home/project-files:/home/project-files --name xx-api-test ${JOB_NAME}
保存即可
这里有个坑需要注意,第一个是流水线用英文别用中文,第二个是执行命令主要检查,不然会出现
SSH: EXEC: completed after 201 ms
SSH: Disconnecting configuration [jenkins] ...
ERROR: Exception when publishing, exception message [Exec exit status not zero. Status [1]]
Build step 'Send build artifacts over SSH' changed build result to UNSTABLE
Finished: UNSTABLE
网上查了很多原因,但是这个问题是中文流水线命名和docker build -f Dockerfile -t ${JOB_NAME} . 少了个点。