宁波seo网站,有做全棉坯布的网站吗,网站名百度搜不到,交互做的比较好的网站项目打包
在部署项目前需要对源码进行打包#xff0c;一个简单的SpringBoot项目默认是打包为jar包#xff0c;也就是在pom.xml中的packagingjar/packaging方式#xff0c;当然也会有一些打包成war包方式#xff0c;使用外置的Tomcat应用服务器部署war包…项目打包
在部署项目前需要对源码进行打包一个简单的SpringBoot项目默认是打包为jar包也就是在pom.xml中的packagingjar/packaging方式当然也会有一些打包成war包方式使用外置的Tomcat应用服务器部署war包那么就是packagingwar/packaging。
在父子类聚合项目中父工程的pom.xml文件中的打包方式就需要改为pom如下
packagingpom/packaging那么所有的子工程pom.xml中就需要改为jar方式或者war
jar包是默认的打包方式子工程如果是打包成jar包那么不需要改任何配置war包时如下配置
packagingwar/packaging并且所有的子工程中需要导入maven插件配置
buildpluginsplugingroupIdorg.springframework.boot/groupIdartifactIdspring-boot-maven-plugin/artifactIdconfigurationexecutabletrue/executablelayoutJAR/layout/configurationexecutionsexecutiongoalsgoalrepackage/goal/goalsconfigurationattachfalse/attach/configuration/execution/executions/plugin/plugins
/build执行打包 在具有maven环境的情况下到父工程pom.xml文件所在目录下执行
mvn clean package即可将此父工程下所有子工程进行打包假如这里得到了三个jar包为consumer.jar、provider1.jar、provider2.jar
那么就可以手动执行部署了。
命令行部署
使用命令行方式去部署3个jar包可以说非常简单但还要考虑项目中需要的一些环境
服务器需要由java的jdk环境能使用java命令假如项目中用到了nacos那么还需要做好nacos环境的配置及服务的启动
nohup java -jar consumer.jar consumer.logs.log 2 1
nohup java -jar provider1.jar provider1.logs.log 2 1
nohup java -jar provider2.jar provider2.logs.log 2 1 nohup不挂断运行 xxx.logs.log 2 1 将程序日志输出到某个位置并且后台运行。
那么这些都是手动运行目前而言大多都采用了自动化部署。
Jenkins
手动运行需要每次都去上传jar包然后更新jar重启服务。若服务数量较少还比较好一旦遇到微服务多jar包情况下手动就会显得很繁琐而无助。或者说可以采用shell脚本的方式去部署但这都不是最优秀的解决方案。可以使用Jenkins部署运行服务。
介绍
Jenkins的前身是Hudson。Jenkins是一款较为流行的开源持续集成工具地位几乎可以说是CICD软件领导者已经超过了Hudson它拥有超过1000个插件来支持项目的构建和部署。几乎可以适用于所有的项目没有项目编程语言的限制。
CICD
持续集成(Continuous Integration,CI):指的是团队成员每天一次或多次把代码集成到主干。每次集成会自动构建尽快尽早发现错误。持续集成是为了让产品快速迭代同时保证高质量。持续交付(Continuous Delivery):指的是持续将新的功能部署到类生产环境(可理解为测试环境qa、uat)交给质量团队或用户交给它们评审持续部署(Continuous Deployment):指的是通过评审后自动部署到生产环境中
Jenkins的特性
系统平台无关性Jenkins本身是由Java语言编写理论上只要由java的运行环境就能使用Jenkins编程语言无关性支持多种编程语言的项目持续集成、持续部署而非只有java一种安装和配置简单可以通过yum安装或war包、Docker方式等由简洁易用的web界面完成配置插件丰富拥有超过1000个插件几乎可以满足任何项目的需要容易扩展Jenkins可以通过其插件架构进行扩展为用户提供无限可能分布式构建Jenkins能使多台服务器一起构建消息通知构建完成后发送email通知结果
下载和安装
Jenkins的官网地址是https://www.jenkins.io/下载软件包的地址https://www.jenkins.io/download/。推荐下载LTS(长期支持)版本。笔者这里选择Generic Java package(.war)只需要java环境即可。
当然要注意你选择版本要和你本地的jdk环境的兼容关系 笔者是java8的环境选择一款适用的jenkins版本即可。笔者选择2.346.3版本。
提供下下载地址https://get.jenkins.io/war-stable/2.346.3/jenkins.war 运行 war包下载完毕后不需要额外的步骤(前提是有java环境)是可以直接运行的
java -jar jenkins.war --httpPort8085–httpPort是设置程序端口号若要使程序不挂断后台运行可以这样执行
nohup java -jar jenkins.war --httpPort8085 jenkins-logs.log 2 1 服务运行后成功访问UI页面记得需要打开防火墙的端口哦
firewall-cmd --permanent --zonepublic --add-port8085/tcp
firewall-cmd --reload打开jenkins的UI地址(笔者这里是http://192.168.1.41:8085) 我们需要去上面的相应文件中去找到密码然后填写确定即可。
注意第一次启动Jenkins会初始化去下载一些元(metadata)数据打开界面时提示等待大概4分钟等待期间使用F12调试时看到报错503是正常现象。等待日志打印Jenkins is fully up adn running 即可 下一步会让用户安装插件若是新手可以选择Jenkins推荐的插件可以减少很多的步骤。笔者这里也选择推荐的插件了唯一的缺点是下载的东西多稍微会慢点。 完成后创建一个管理员用户 Jenkins配置
Jenkins初始化完成后还需要配置一些全局工具如jdk,maven,git。在Jenkins后台页面点击Manage Jenkins再点击Global Tool Configuration配置全局工具JDK、maven、git 配置maven 找好你的settings.xml文件的路径配置到这里即可。然后再去配置maven的路径 注意如果你的maven的bin目录没有可执行的权限要记得增加可执行权限否则执行命令时会报错Permission denied可以在maven的根目录下使用命令赋权chmod x -R bin 配置jdk 直接输入JAVA_HOME的安装地址即可 最后配置git的目录记得先安装git
yum install -y git使用yum安装的git目录是/usr/bin/git GitLab简介安装
持续集成一般有3个组成的要素
一个自动构建的过程代码检出、编译构建等过程都是自动完成无需人工一个代码存储库(SVN或git)一个持续集成服务器(如Jenkins)
现在还缺少一个代码存储库。在企业中为了掌握代码的所有权一般都会自动搭建代码存储库。可以使用Gitlab。
GitLab使用git作为代码管理工具并且在此基础上开发了Web管理页面来进行项目管理。
与github最大的不同是gitlab部署在自己的服务器上所有权都是掌握在自己手中。 采用yum方式安装GitLab 安装需要的依赖和设置ssh开机自启动开启ssh及配置防火墙
yum install -y curl policycoreutils-python openssh-server
systemctl enable sshd
systemctl start sshd
firewall-cmd --permanent --add-servicehttp
firewall-cmd --permanent --add-servicehttps
systemctl reload firewalld安装Postfix并设置开机自启动、开启Postfix便于邮件通知
yum install -y postfix
systemctl enable postfix
systemctl start postfix添加Gitlab软件包存储库并安装软件包
curl https://packages.gitlab.com/install/repositories/gitlab/gitlab-ee/script.rpm.sh | bash配置Gitlab访问地址并安装Gitlab(http://192.168.1.41是gitlab访问地址)
EXTERNAL_URLhttp://192.168.1.41 yum install -y gitlab-ee打开防火墙端口(或关闭防火墙)
firewall-cmd --permanent --zonepublic --add-port80/tcp
firewall-cmd --reload完成后打开http://192.168.1.41第一次进入时需要去/etc/gitlab/initial_root_password找下初始化密码然后登录即可 Docker方式安装Gitlab 使用Docker方式安装Gitlab是比较快捷的方式如下命令即可
mkdir -p /data/gitlab # 先创建gitlab存储数据、配置、日志的目录docker run -d --hostname 192.168.1.41:80 --publish 443:443 --publish 80:80 --publish 23:22 --name gitlab --restart always --volume /data/gitlab/config:/etc/gitlab --volume /data/gitlab/logs:/var/log/gitlab --volume /data/gitlab/data:/var/opt/gitlab gitlab/gitlab-ee:latest-d : 后台运行
–hostname:gitlab服务地址
–publish或-p:宿主机和容器的端口映射
–name 设置容器名称
–volume或-v宿主机和容器的目录映射
–restart always: 开机自启 Gitlab常用命令 gitlab-ctl start:启动gitlab-ctl stop:停止gitlab-ctl status:查看gitlab-ctl restart:重启
JenkinsGitlab部署运行
现在已经有了存储库然后创建git仓库把项目上传到Gitlab上面。
git init
git remote add origin http://192.168.1.41/root/jenkins-demo.git
git add .
git commit -m Initial commit
git push -u origin main这些就比较简单了笔者这里不再赘述了。直接展示下项目的目录 需要注意的是如果普通用户push代码可能会没有权限管理员设置下即可。 Jenkins页面创建任务 在Jenkins页面点击新建项目New Item输入项目名称(名称随便取别重复)。选择自由风格项目。 在General一栏输入描述可以任意填写重要的是源代码管理仓库地址就填写gitlab的项目地址然后添加你的gitlab账号的凭证(账号密码)。完成后下面有一个分支选择选择你要部署的分支即可。 来到构建这一栏点击添加构建步骤选择Invoke toplevel maven targets调用顶层 Maven 目标项maven版本选择配置好的目标Goals填写clean package 这里的maven命令不需要添加mvn请注意
打包完成后就可以运行jar包了再增加一个构建步骤选择Excecute shell执行shell命令在Command输入以下命令考虑到可能出现第二次部署时需要把上一次的jar停止那么命令如下
#!/bin/bash
# 先停止进程
ps -ef |grep consumer |grep -v grep | awk {print $2} | xargs kill -s 15
ps -ef |grep provider-8001 |grep -v grep | awk {print $2} | xargs kill -s 15
ps -ef |grep provider-8002 |grep -v grep | awk {print $2} | xargs kill -s 15
sleep 5s # 5s后再启动
BUILD_IDdontKillMe # 表示别干掉启动的程序
cd consumer/target/
nohup java -jar consumer-1.0-SNAPSHOT.jar consumer.logs.log 2 1
cd ../../provider-8001/target/
nohup java -jar provider-8001-1.0-SNAPSHOT.jar provider1.logs.log 2 1
cd ../../provider-8002/target/
nohup java -jar provider-8002-1.0-SNAPSHOT.jar provider2.logs.log 2 1 完事后保存即可。 点击立即构建即可 同时还可以去看日志信息 我们可以到服务器上看下程序有没有启动成功
ps -ef |grep java成功部署了三个jar包。
Webhook网络钩子
当我们需要每次提交合并代码时自动进行项目部署时可以使用网络钩子Webhook完成我们的需求。
大致流程就是Jenkins提供一个地址当代码有更新时代码存储库(gitlab)主动调用一次这个地址触发Jenkins构建即可。
需要在Jenkins上面安装Generic Webhook Trigger插件 到项目主界面点击配置到构建触发器那里选择Generic Webhook Trigger一项然后添加一个Token随便写但不要重复了 那么构建的URL格式如下
http://JENKINS_URL/generic-webhook-trigger/invoke/invoke?token刚刚自定义的TokenJENKINS_URL:是JENKINS的访问地址。
此项目中就是如下
http://192.168.1.41:8085/generic-webhook-trigger/invoke/invoke?tokennihaowoshichufaqi回到gitlab 因为Gitlab10.6版本后为了安全默认不允许向本地网络发送Webhook请求这里因为笔者是把gitlab和jenkins安装到一台服务器了所以这里先允许发送本地网络webhook。 到gitlab项目中设置webhook即可。这里暂时写所有分支push时触发了实际可以按照项目情况执行。 配置完成 完成后即可提交任意分支的代码看到jenkins已经自动触发构建了并且jar也重新启动了