搭建maven、java、git环境
Jenkins(网址是 https://jenkins.io/) 是一个开源项目,它是一个基于 Java 的持续集成系统。我们可以在 Jenkins 上配置持续集成的任务,让机器自动完成构建(build),集中展示集成中存在的错误,提供详细的日志文件,提醒功能,以及用图表的形式展示项目构建的趋势和稳定性。
Linux安装Jenkins
wget -q -O - https://pkg.jenkins.io/debian/jenkins.io.key | sudo apt-key add - sudo sh -c 'echo deb http://pkg.jenkins.io/debian-stable binary/ > /etc/apt/sources.list.d/jenkins.list' //这里是Ubuntu进行安装 sudo apt-get update sudo apt-get install jenkins //CentOS进行安装默认使用yum进行安装 sudo yum update sudo yum install jenkins
安装完成后,它会自动启动 Jenkins 服务。我们看一下它的状态,从屏幕输出可以看到,它当前正常运行。
[root@iZ2vc1e3nnjpo1cayr4utfZ ~]# sudo systemctl status jenkins ● jenkins.service - LSB: Jenkins Automation Server Loaded: loaded (/etc/rc.d/init.d/jenkins; generated) Active: active (running) since Fri 2021-06-25 21:37:28 CST; 21h ago Docs: man:systemd-sysv-generator(8) Process: 1712 ExecStart=/etc/rc.d/init.d/jenkins start (code=exited, status=0/SUCCESS) Tasks: 86 (limit: 10995) Memory: 1.0G CGroup: /system.slice/jenkins.service ├─1669 java -jar /www/wwwroot/myblog/myblog.jar --server.port=443 └─2661 /etc/alternatives/java -Dcom.sun.akuma.Daemon=daemonized -Djava.awt.headless=tru> Jun 25 21:37:25 iZ2vc1e3nnjpo1cayr4utfZ systemd[1]: Starting LSB: Jenkins Automation Server... Jun 25 21:37:25 iZ2vc1e3nnjpo1cayr4utfZ runuser[1742]: pam_unix(runuser:session): session opened f> Jun 25 21:37:28 iZ2vc1e3nnjpo1cayr4utfZ runuser[1742]: pam_unix(runuser:session): session closed f> Jun 25 21:37:28 iZ2vc1e3nnjpo1cayr4utfZ jenkins[1712]: Starting Jenkins [ OK ] Jun 25 21:37:28 iZ2vc1e3nnjpo1cayr4utfZ systemd[1]: Started LSB: Jenkins Automation Server.
Jenkins 默认的侦听端口是8080,通过浏览器输入 ubuntuvm1 虚拟服务器地址和8080端口即可访问。首次访问需要解锁,请按屏幕提示操作。例如,从虚拟机里面查到密码是 “2bcb508f031743d5ada3fefb93e3167d”,将它填写在 “Administrator password” 输入框里,再按 “Continue” 按钮提交。
选择让 Jenkins 加载常用的插件。
默认端口是8080,该端口经常被使用,因此换一个不常用端口用来访问Jenkins,通过vim编辑器修改Jenkins默认访问端口
vim /etc/sysconfig/jenkins
为了方式权限出现Permission Denied
这个问题,可将JENKINS_USER
设置为root用户
前往 Manage Jenkins -> Manage Plugins -> Available,在 Filter 中搜索 Gitee:
下方可选列表中勾选 Gitee(如列表中不存在 Gitee,则点击 Check now 更新插件列表),然后点击“Download now and install after restart”。
在安装页面勾选“Restart Jenkins when installation is complete and no jobs are running”
安装完之后,可以在 “installed” 页面看到 Gitee 插件
Domain 选择 全局凭据
Kind 选择 Gitee API 令牌
Scope 选择你需要的范围
Gitee API Token 输入你的码云私人令牌,获取地址:https://gitee.com/profile/personal_access_tokens
ID, Descripiton 中输入你想要的 ID 和描述即可。
项目创建成功:
远程仓库配置完毕,自动刷新(配置完了不会报错的,如果报错,请参考文章末尾的遇到问题)
编写项目构建命令:
#echo "输出PATH变量" #echo $PATH # 重新打包 echo "开始重新打包" mvn clean install echo "打包完毕" whoami echo "准备重启" # 找到之前项目jar包进程ID并杀死 pid=`ps -ef | grep myblog.jar | grep -v grep | awk '{print $2}'` if [ -n "$pid" ] then kill -9 $pid fi echo "停止运行" #转移到tomcat webapps目录下 cp target/myblog.jar /www/wwwroot/myblog # 后台运行项目jar包 nohup java -jar /www/wwwroot/myblog/myblog.jar --server.port=443 >myblog.log 2>&1 &
项目配置完毕。
项目配置完了,接下来就开始构建项目
构建成功啦,因为是个博客项目,接下来可以访问一下:https://caifl.top
如果遇到问题,参考下面的遇到问题!
问题描述:
cp: cannot create regular file '/usr/local/tomcat/tomcat-9.0.41/webapps/myblog.war': Permission denied
# 尝试通过chmod命令进行授权 chmod 777 /usr/local/tomcat
如果不行,则修改Jenkins用户
vim /etc/sysconfig/jenkins
问题描述:
Non-resolvable parent POM for com.cfl:MyBlog:1.0.0: Could not transfer artifact org.springframework.
问题原因:
pom文件有两个org.springframework.boot
包的依赖
解决:
删除重复的那个依赖
问题描述:
tomcat启动之后一闪而过,直接停止运行
查看logs目录下的日志:
Error: Could not find or load main class org.apache.catalina.startup.Bootstrap Error: Could not find or load main class org.apache.catalina.startup.Bootstrap Error: Could not find or load main class org.apache.catalina.startup.Bootstrap Error: Could not find or load main class org.apache.catalina.startup.Bootstrap Error: Could not find or load main class org.apache.catalina.startup.Bootstrap Error: Could not find or load main class org.apache.catalina.startup.Bootstrap Error: Could not find or load main class org.apache.catalina.startup.Bootstrap
问题原因:原因不明,可能是tomcat压缩包是src版本而非bin版本,亦或者是其它环境问题
解决办法:重新下载tomcat-9.0.48-bin.tar.gz安装包
问题描述:Jenkins - mvn: command not found,Jenkins部署构建项目时,console output显示mvn 命令无法找到
问题原因:
Linux对于java或maven的路径的环境变量是放在/etc/profile中的, 而/etc/profile只有在用户登录的时候才会被load,Jenkins在运行命令时,使用的是Non-login的方式,而这种方式在运行命令时,/etc/profile是不会被load进来的,所以jenkins只能在当前路径下寻找可执行文件.
解决办法:
在Jenkins的设置中可以设置全局变量, jenkins主页面->Manage Jenkins->Configure System->Global Properties 中, 将Environment variables复选框选中,会出来List of variables, 填入以下内容:
PATH+EXTRA
value: $M2_HOME/bin注意最后标红的 PATH+EXTRA
, 这表示PATH=EXTRA:$PATH, 即扩展当前的PATH变量.
设置之后build成功.