摘要:本章用于讲解如何在下构建和运行。编译发版都是基于的容器,下完成的。
本章用于讲解如何在walle下构建和运行JavaWeb。主要包含SpringBoot,ScalaAkkaWeb应用,以Java -jar和Docker运行两种方式(Tomcat方式不讲,大家自行研究)新建项目
项目中心 > 项目管理 > 新建项目
以下是一份配置好的项目表
分组 | 项目 | 参考 | 备注 |
---|---|---|---|
基本配置 | 项目名称 | dev-我的JavaDemo项目 | 随便填写,名称不要太长(不好看),最好把环境卸载最前,例如dev(开发环境) |
基本配置 | 环境 | 开发环境 | 提前在环境管理配置好即可 |
基本配置 | Git Repo | git@gitlab.xxx.com:xxx/java-demo.git | Git仓库地址 |
目标集群 | 目标集群 | 192.168.0.122 | 提前配置服务器管理 |
目标集群 | 目标集群部署路径 | /data/walle-build/java-demo | 实际运行的环境 |
目标集群 | 目标集群部署仓库 | /data/walle-run | 会存放多个版本编译后的项目 |
目标集群 | 目标集群部署仓库版本保留数 | 5 | 可以回滚的版本数 |
Java生态下基本脚本大致一致,无细微差别
基本脚本任务配置 - 部署包含文件
包含方式
docker-compose.yml target/${SERVER_NAME}.jar
该方式用于描述从源码包到发布包中,排除/包含的内容。一般java使用target即可
任务配置 - 自定义全局变量
# 运行目录 JAVA_HOME=/data/walle-java RUN_ROOT=/data/walle-run SERVER_NAME=java-demo MVN_HOME=/usr/local/maven3 PORT=2223【SpringBoot to Docker】
任务配置 - 高级任务-Deploy前置任务
pwd /usr/local/maven3//bin/mvn -v
任务配置 - 高级任务-Deploy后置任务
${MVN_HOME}/bin/mvn clean compile package -Dmaven.test.skip=true -DartifactId=${SERVER_NAME} # cp target/${SERVER_NAME}.jar . sed -i "s/${container_port}/"${PORT}"/g" docker-compose.yml sed -i "s/${container_name}/"${SERVER_NAME}"/g" docker-compose.yml
任务配置 - 高级任务-Release前置任务
docker-compose -p ${SERVER_NAME} -f ${WEBROOT}/docker-compose.yml down || echo "服务不存在" docker stop ${SERVER_NAME} || echo "服务不存在" docker rm ${SERVER_NAME} || echo "服务不存在" rm -rf ${WEBROOT}
任务配置 - 高级任务-Release后置任务
docker-compose -p ${SERVER_NAME} up -d echo "服务启动完成"
项目 - Maven pom.xml配置
${artifactId} org.springframework.boot spring-boot-maven-plugin com.walle.main.DevelopToolApplication repackage org.apache.maven.plugins maven-dependency-plugin package copy-dependencies system
此处配置了finalName=${artifactId},用于可自定义生成的包名称
此处使用了org.springframework.boot进行打包,mainClass设置执行的main方法
项目 - docker-compose.yml配置
version: "2" services: web: # 镜像:版本 image: openjdk:8-jdk container_name: ${container_name} ports: - "${container_port}:${container_port}" volumes: - ./target/${container_name}.jar:/usr/local/${container_name}.jar - /etc/localtime:/etc/localtime command: /bin/bash -c "echo "Asia/Shanghai" > /etc/timezone && java -Dserver.port=${container_port} -jar /usr/local/${container_name}.jar"
映射宿主机./target下的文件${container_name}.jar,到/usr/local/${container_name}.jar
映射宿主机的时区到容器
启动命令设置时区到上海,随后调用启动参数java -jar,此处可以设置更多的启动参数
此处的参数传递方式较差(linux变量替换),可以寻求更好的参数传递方式
【ScalaAkka to Docker】任务配置 - 高级任务-Deploy前置任务
pwd /usr/local/maven3//bin/mvn -v
任务配置 - 高级任务-Deploy后置任务
${MVN_HOME}/bin/mvn clean scala:compile compile package -Dmaven.test.skip=true -DartifactId=${SERVER_NAME} # cp target/${SERVER_NAME}.jar . sed -i "s/${container_host}/"${HOST}"/g" docker-compose.yml sed -i "s/${container_port}/"${PORT}"/g" docker-compose.yml sed -i "s/${container_name}/"${SERVER_NAME}"/g" docker-compose.yml
任务配置 - 高级任务-Release前置任务
docker-compose -p ${SERVER_NAME} -f ${WEBROOT}/docker-compose.yml down || echo "服务不存在" docker stop ${SERVER_NAME} || echo "服务不存在" docker rm ${SERVER_NAME} || echo "服务不存在" rm -rf ${WEBROOT}
任务配置 - 高级任务-Release后置任务
docker-compose -p ${SERVER_NAME} up -d echo "服务启动完成"
项目 - Maven pom.xml配置
${artifactId} org.springframework.boot spring-boot-maven-plugin com.walle.main.DevelopToolApplication repackage maven-shade-plugin 2.3 package shade true allinone *:* reference.conf com.main.Boot *:* META-INF/*.SF META-INF/*.DSA META-INF/*.RSA org.apache.maven.plugins maven-dependency-plugin package copy-dependencies system
如为SpringBoot混合编译,则多带带加上scala编译即可
org.scala-tools maven-scala-plugin 2.15.2 compile testCompile
此处配置了finalName=${artifactId},用于可自定义生成的包名称
此处使用了org.springframework.boot进行打包,mainClass设置执行的main方法
项目 - docker-compose.yml配置
version: "2" services: web: # 镜像:版本 image: openjdk:8-jdk container_name: ${container_name} ports: - "${container_port}:${container_port}" volumes: - ./target/${container_name}.jar:/usr/local/${container_name}.jar - /etc/localtime:/etc/localtime command: /bin/bash -c "echo "Asia/Shanghai" > /etc/timezone && java -Dserver.port=${container_port} -jar /usr/local/${container_name}.jar"
映射宿主机./target下的文件${container_name}.jar,到/usr/local/${container_name}.jar
映射宿主机的时区到容器
启动命令设置时区到上海,随后调用启动参数java -jar,此处可以设置更多的启动参数
此处的参数传递方式较差(linux变量替换),可以寻求更好的参数传递方式
【SpringBoot to Jar】任务配置 - 高级任务-Deploy前置任务
pwd /usr/local/maven3//bin/mvn -v
任务配置 - 高级任务-Deploy后置任务
${MVN_HOME}/bin/mvn clean scala:compile compile package -Dmaven.test.skip=true -DartifactId=${SERVER_NAME} # cp target/${SERVER_NAME}.jar .
任务配置 - 高级任务-Release前置任务
curl -X POST 127.0.0.1:${PORT}/shutdown || echo "服务不存在" rm -rf ${WEBROOT}
任务配置 - 高级任务-Release后置任务
java -Dserver.port=${PORT} -jar echo "服务启动完成"其他
上线通知
需要的话开启
上线单是否开启审核
需要的话开启,会在审核后才能实际发布构建单
环境准备 研发环境上诉内容完成后,是无法进行构建发版的。编译发版都是基于walle的docker容器,python下完成的。该环境下无java和maven变量
我们有两个方式解决 宿主机映射 or 重新打包镜像
此处只讲解宿主机映射的方式(更推荐重新打包镜像)
我们在宿主机安装完成maven,java,node等环境,然后修改walle的docker-compose即可
# docker version: 18.06.0+ # docker-compose version: 1.23.2+ # OpenSSL version: OpenSSL 1.1.0h version: "3.7" services: python: image: alenx/walle-python:2.1 container_name: walle-python hostname: walle-python env_file: # walle.env需和docker-compose在同级目录 - ./walle.env command: bash -c "ln -sf /data/walle-tool/node-v10.5.0-linux-x64/bin/node /usr/bin/node && ln -sf /data/walle-tool/node-v10.5.0-linux-x64/bin/npm /usr/bin/npm && cd /opt/walle_home/ && /bin/bash admin.sh migration && python waller.py " expose: - "5000" volumes: - /opt/walle_home/plugins/:/opt/walle_home/plugins/ - /opt/walle_home/codebase/:/opt/walle_home/codebase/ - /opt/walle_home/logs/:/opt/walle_home/logs/ - /data/walle-build/:/walle/walle-build/ - /data/walle-java/:/walle/walle-java/ - /usr/local/maven3/:/usr/local/maven3/ - /data/walle-run/:/data/walle-run/ - /usr/bin/netstat:/usr/bin/netstat/ - /root/.ssh:/root/.ssh/ - /data/walle-tool/node-v10.5.0-linux-x64/:/data/walle-tool/node-v10.5.0-linux-x64/
进入从宿主机进入python,查看mvn,java,linux是否可用
服务连接连接git
配置git ssh在宿主机(docker-compose-python,映射了ssh目录),保证能免密码拉去代码即可
否则在部署时候,获取不到git版本,无法拉去代码
连接服务器
配置服务器的 ssh在宿主机,保证能免密码登录各服务器即可
否则在部署时候,无法连接需要部署的服务器
部署发布部署管理 - 新建上线单
选择环境和分支即可,回到列表页,点击上线查看详情,再次点击详情页上线即可开始发布
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/77791.html
摘要:当前版本针对于安装版概要整体流程贯通,基本可以达到实用级别。仍旧有很多需要提高的地方发布构建时部署上线服务器卡顿严重,基本不可以多项目发布。 该文章旨在描述从零开始搭建环境,中间遇到的问题以及最终的经验总结。当前版本针对于2.0 docker安装版 概要 整体流程贯通,基本可以达到实用级别。满足2-5台服务器,少量的应用部署是完全可以的,但达到一定规模之后则Walle和Jenkins...
摘要:该文章用于概述一个小型持续集成环境的搭建的方案什么是持续集成持续集成作为当今软件开发实践,可以简单理解为团队开发相对频繁的集成他们的工作,一般让每个成员每天至少集成一次,而这回造成每天会有多次的版本发布。 该文章用于概述一个小型持续集成环境的搭建的方案 什么是持续集成? 持续集成作为当今软件开发实践,可以简单理解为团队开发相对频繁的集成他们的工作,一般让每个成员每天至少集成一次,而这回...
摘要:以便对整个持续集成印象加深。配置完各环境发布脚本后,则可以使用构建发起进行触发环境准备。并会在远程环境上存放多次发布的版本,用于回退和切换服务停用。进行等操作,停止原本运行的服务切换启用。 该文章用于建立一个小型的基于Walle的持续集成工具。解决java,react,angular项目的编译发布。以便对整个持续集成印象加深。官方网站:https://walle-web.io/ 适用...
摘要:本章用于讲解如何在下构建和运行前端应用。项目配置服务名称镜像版本映射容器端口到本地端口数据卷映射本地文件到容器映射文件到容器的目录并覆盖文件映射文件夹到容器的文件夹覆盖容器启动后默认执行的命令。环境准备参考文档 本章用于讲解如何在walle下构建和运行前端应用。主要包含React,Angular应用,以Nginx+Docker运行(Vue方式不讲,大家自行研究) 新建项目 项目中心 >...
摘要:自动化测试和持续集成发布。在服务型环境中部署和调整数据库或其他的后台应用。容器与镜像的关系类似于面向对象编程中的对象与类。容器容器是独立运行的一个或一组应用。提供了庞大的镜像集合供使用。 还在按照mysql安装教程一步一步配置服务配置账户吗?还在为每开一个新环境重新配置这些服务感到苦恼吗?使用Docker,服务快速构建部署。解决你的研发时间,早点下班~现代技术,还不会docker你就落...
阅读 2166·2021-11-24 09:39
阅读 2780·2021-07-29 13:49
阅读 2320·2019-08-29 14:15
阅读 2232·2019-08-29 12:40
阅读 3311·2019-08-26 13:42
阅读 631·2019-08-26 12:13
阅读 2064·2019-08-26 11:41
阅读 3344·2019-08-23 18:32