关注JEECG发展历程 关注最新动态和版本, 记录JEECG成长点滴 更新日志 - 技术支持 - 招聘英才

JEECG最新版本下载 JEECG智能开发平台 - 显著提高开发效率 常见问题 - 入门视频 - 参与开源团队

商务QQ: 69893005、3102411850 商务热线(5*8小时): 010-64808099 官方邮箱: jeecgos@163.com

查看: 6171|回复: 3

jenkins部署jeecg-boot3.1(前后端)自动化

[复制链接]
发表于 2022-5-23 00:40:25 | 显示全部楼层 |阅读模式
tip:

我是使用我的腾讯云轻量应用服务器做的本次实战

(操作系统:CentOS 7.6 64bit)

(主机规格:CPU: 4核 内存: 4GB)这个配置起前端有点带不动-_-,建议8G内存,这个问题我反复测试很多次。一跑npm 就开始疯狂占资源,然后操作系统内存不够直接把jenkins的进程都给杀了。所以如果你也是4g或者2g内存,尽量不要有其他多余的应用或者容器在机器上运行。



1. Ready


1.1. jenkins
tip:如果已经成功启动访问jenkins,可以直接跳过1.1

a. getjenkins.war

​ 启动:

  1. nohup java -jar jenkins.war --httpPort=7999 >output 2>&1 &
复制代码

b.docker(不推荐,大佬随意)
  1. docker pull jenkins/jenkins
复制代码
  1. docker run \
  2.   -u root \
  3.   --rm \
  4.   -d \
  5.   -p 7999:8080 \
  6.   -p 50000:50000 \
  7.   -v /jenkins-data:/var/jenkins_home \
  8.   -v /var/run/docker.sock:/var/run/docker.sock \
  9.   jenkinsci/blueocean
复制代码

a与b的结果都是将jenkins启动,也是我们的目标,本篇文章采用war包方式,也建议war包的方式,docker启的话,里面jdk是11,而我机器的jdk是8,同时项目jdk也是8,换11的话,天知道会出什么问题。 启动之后,访问一下,上述例子中我映射了7999端口,同时我的腾讯云防火墙也开放了7999这个端口,下面是访问图例:

根据提示粘贴密码,如果是war包启动的就直接复制页面提示的路径就可以,输入命令,即得密码

  1. cat /var/jenkins_home/secrets/initialAdminPassword
复制代码

如果是docker启动的,上面的-v挂载了一个路径 /jenkins-data 这里面的文件就是容器里jenkins_home里面的文件,故路径就变成了

  1. cat /jenkins-data/secrets/initialAdminPassword
复制代码

随后,输入得到的密码,进入,选择安装推荐的插件

接下来,就等待机器安装,然后创建第一个账户,然后jenkinsURL默认是啥就是啥(反正可以改的),可能会提示重启,如果没有不管。进入jenkins

到这里,先停一下。右上角红色的1不管。


1.2. gitee(github和gitlab都类似的,差别不大)

装插件: (系统管理)Manage System -> (插件管理)Manage Plugins -> (可选的插件)Available,在 Filter 中搜索 Gitee,Jersey2 API这两个插件,然后分别选中,然后点install without restart。

等待安装完毕即可。

之后,就是配置gitee了

系统管理—>系统配置---->gitee配置



在 链接名 中输入 Gitee 或者你想要的名字

Gitee 域名 URL 中输入码云完整 URL地址: https://gitee.com (码云私有化客户输入部署的域名)

证书令牌 中如还未配置码云 APIV5 私人令牌,点击 Add - > Jenkins

Domain 选择 全局凭据

Kind 选择 Gitee API 令牌

Scope 选择你需要的范围

Gitee API Token 输入你的码云私人令牌,获取地址:https://gitee.com/profile/personal_access_tokens 这个令牌建议保存在云笔记之类的东西上,方便自己以后用

ID, Descripiton 中输入你想要的 ID 和描述即可。然后点添加,然后回来选择刚刚添加的令牌,点击测试链接,出现成功即可。

在这里插入图片描述1.3 maven

我是在宿主机安装的maven,这样后面shell命令里面可以直接用mvn

maven的话最好是使用jeecg官方推荐的

  1. yum -y install maven
复制代码

找一下settings文件

  1. mvn -v
复制代码

就可以看到maven home 然后在maven home的conf目录下就有settings文件了。

然后替换一下 settings.xml文件,或者直接改也行(就下面这部分):

  1. <mirrors>
  2.        <mirror>
  3.             <id>nexus-aliyun</id>
  4.             <mirrorOf>*,!jeecg,!jeecg-snapshots,!getui-nexus</mirrorOf>
  5.             <name>Nexus aliyun</name>
  6.             <url>http://maven.aliyun.com/nexus/content/groups/public</url>
  7.         </mirror>
  8. </mirrors>
复制代码

1.4 npm

npm是装在宿主机的。因为我是war包直接起的。所以可以直接在后面shell命令里面用npm,如果是docker启动的,容器里面是没有node的,而且容器里面jdk是11,就…不是很方便,所以我前面建议war包直接起。

  1. npm config set registry https://registry.npmmirror.com
  2. npm config get registry
复制代码

我的版本:




1.5 修改前端Dockerfile文件与env文件

jeecg-boot/ ant-design-vue-jeecg / Dockerfile:

  1. FROM nginx
  2. MAINTAINER jeecgos@163.com
  3. VOLUME /tmp
  4. ENV LANG en_US.UTF-8
  5. RUN echo "server {  \
  6.                       listen       8000; \
  7.                       location ^~ /jeecg-boot { \
  8.                       proxy_pass              http://127.0.0.1:8080/jeecg-boot/; \
  9.                       proxy_set_header        Host jeecg-boot-system; \
  10.                       proxy_set_header        X-Real-IP \$remote_addr; \
  11.                       proxy_set_header        X-Forwarded-For \$proxy_add_x_forwarded_for; \
  12.                   } \
  13.                   #解决Router(mode: 'history')模式下,刷新路由地址不能找到页面的问题 \
  14.                   location / { \
  15.                      root   /var/www/html/; \
  16.                       index  index.html index.htm; \
  17.                       if (!-e \$request_filename) { \
  18.                           rewrite ^(.*)\$ /index.html?s=\$1 last; \
  19.                           break; \
  20.                       } \
  21.                   } \
  22.                   access_log  /var/log/nginx/access.log ; \
  23.               } " > /etc/nginx/conf.d/default.conf \
  24.     &&  mkdir  -p  /var/www \
  25.     &&  mkdir -p /var/www/html

  26. ADD dist/ /var/www/html/
  27. EXPOSE 8000
  28. EXPOSE 443
复制代码

jeecg-boot/ ant-design-vue-jeecg / .env.production

  1. NODE_ENV=production
  2. VUE_APP_API_BASE_URL=http://150.158.39.60:8080/jeecg-boot
  3. VUE_APP_CAS_BASE_URL=http://localhost:8888/cas
  4. VUE_APP_ONLINE_BASE_URL=http://fileview.jeecg.com/onlinePreview
复制代码

2.Begin

新建任务–>构建一个自由风格的软件项目—>源码管理—>点git

输入repository URL:https://gitee.com/xiao_chaowen/jeecg-boot.git(也就是仓库地址)

配置凭证:

gitee的用户名密码

点高级:

Branch Specifier 选项:

对于单仓库工作流输入: origin/g i t e e S o u r c e B r a n c h

对 于 P R 工 作 流 输 入 : p u l l / {giteeSourceBranch}

对于 PR 工作流输入: pull/giteeSourceBranch

对于PR工作流输入:pull/{giteePullRequestIid}/MERGE

Additional Behaviours 选项:

对于单仓库工作流,如果你希望推送的分支构建前合并默认分支(发布的分支),可以做以下操作:

点击 Add 下拉框

选择 Merge before build

设置 Name of repository 为 origin

设置 Branch to merge to 为 ${ReleaseBranch} 即要合并的默认分支(发布分支)

对于 PR 工作流,码云服务端已经将 PR 的原分支和目标分支作了预合并,您可以直接构建,如果目标分支不是默认分支(发布分支),您也可以进行上诉构建前合并。

接着构建触发器:

点击gitee webhook触发构建

点击生成一下gitee webhook密码 同时记录上面一张图的gitee webhook要填的URL。然后去gitee新增webhook进行填写即可。

然后回来配置构建,点击增加构建步骤—>执行shell:


  1. cd jeecg-boot
  2. docker-compose down || true
  3. cd ../ant-design-vue-jeecg
  4. docker stop jeecg-boot-nginx || true
  5. docker rm jeecg-boot-nginx || true
  6. docker rmi nginx:jeecgboot || true
  7. node -v
  8. npm -v
  9. rm -rf node_modules || true
  10. rm -rf dist || true
  11. npm install
  12. npm install webpack --save-dev
  13. rm -rf node_modules/caniuse-lite
  14. rm -rf node_modules/browserslist
  15. npm i --save-dev caniuse-lite browserslist
  16. npm run build
  17. docker build -t nginx:jeecgboot .
  18. docker run --name jeecg-boot-nginx -p 8000:8000 --restart=always -d nginx:jeecgboot
  19. cd ../jeecg-boot
  20. mvn clean install
  21. docker-compose build
  22. docker-compose up -d
复制代码

这堆命令,就是起后台和前台的镜像,可以根据自己情况更改

然后是构建后操作:

完事了保存一下。就可以在gitee webhook那里点击测试,然后回到jenkins查看控制台输出

然后查看服务器,会有四个容器已经启动,如果启动失败的,看一下logs,有可能是配置之类的问题。

现在就可以访问8000





发表于 2022-5-24 15:49:57 | 显示全部楼层
本帖最后由 nicky213 于 2022-5-24 15:52 编辑

请问npm和node环境需要自行安装?提示没有呀,看文章的意思,是说war包启动的话带node和npm环境?node默认是带npm环境的吧,是否是只需要yum node即可
发表于 2022-5-26 10:55:30 | 显示全部楼层
确实需要8g以上内存,忘了楼主第一句话了,build的时候老是把jenkins进程给杀了,后来才反应过来。还有一个问题,build的时候一直报错,vue和vue-template-compiler不匹配,本地都是2.6.10,但是有“^”,所以安装的时候可能一个是2.6.14、一个是2.6.16,结果一直build失败,除了把“^”去掉,请问还有其他方法吗
发表于 2022-7-25 14:34:08 | 显示全部楼层
2022年7168SG 飞艇稳赚技巧月7日,据英国《卫报》消息,英国现任首相鲍里168SG时时彩开奖结果斯·约翰逊已经同意辞职,但希望能168幸运时时彩游戏技巧够留任至今年秋天,待英国保守党选出接替者。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表