摘要:本章用于講解如何在下構(gòu)建和運(yùn)行。編譯發(fā)版都是基于的容器,下完成的。
本章用于講解如何在walle下構(gòu)建和運(yùn)行JavaWeb。主要包含SpringBoot,ScalaAkkaWeb應(yīng)用,以Java -jar和Docker運(yùn)行兩種方式(Tomcat方式不講,大家自行研究)新建項(xiàng)目
項(xiàng)目中心 > 項(xiàng)目管理 > 新建項(xiàng)目
以下是一份配置好的項(xiàng)目表
分組 | 項(xiàng)目 | 參考 | 備注 |
---|---|---|---|
基本配置 | 項(xiàng)目名稱 | dev-我的JavaDemo項(xiàng)目 | 隨便填寫,名稱不要太長(不好看),最好把環(huán)境卸載最前,例如dev(開發(fā)環(huán)境) |
基本配置 | 環(huán)境 | 開發(fā)環(huán)境 | 提前在環(huán)境管理配置好即可 |
基本配置 | Git Repo | git@gitlab.xxx.com:xxx/java-demo.git | Git倉庫地址 |
目標(biāo)集群 | 目標(biāo)集群 | 192.168.0.122 | 提前配置服務(wù)器管理 |
目標(biāo)集群 | 目標(biāo)集群部署路徑 | /data/walle-build/java-demo | 實(shí)際運(yùn)行的環(huán)境 |
目標(biāo)集群 | 目標(biāo)集群部署倉庫 | /data/walle-run | 會存放多個(gè)版本編譯后的項(xiàng)目 |
目標(biāo)集群 | 目標(biāo)集群部署倉庫版本保留數(shù) | 5 | 可以回滾的版本數(shù) |
Java生態(tài)下基本腳本大致一致,無細(xì)微差別
基本腳本任務(wù)配置 - 部署包含文件
包含方式
docker-compose.yml target/${SERVER_NAME}.jar
該方式用于描述從源碼包到發(fā)布包中,排除/包含的內(nèi)容。一般java使用target即可
任務(wù)配置 - 自定義全局變量
# 運(yùn)行目錄 JAVA_HOME=/data/walle-java RUN_ROOT=/data/walle-run SERVER_NAME=java-demo MVN_HOME=/usr/local/maven3 PORT=2223【SpringBoot to Docker】
任務(wù)配置 - 高級任務(wù)-Deploy前置任務(wù)
pwd /usr/local/maven3//bin/mvn -v
任務(wù)配置 - 高級任務(wù)-Deploy后置任務(wù)
${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
任務(wù)配置 - 高級任務(wù)-Release前置任務(wù)
docker-compose -p ${SERVER_NAME} -f ${WEBROOT}/docker-compose.yml down || echo "服務(wù)不存在" docker stop ${SERVER_NAME} || echo "服務(wù)不存在" docker rm ${SERVER_NAME} || echo "服務(wù)不存在" rm -rf ${WEBROOT}
任務(wù)配置 - 高級任務(wù)-Release后置任務(wù)
docker-compose -p ${SERVER_NAME} up -d echo "服務(wù)啟動(dòng)完成"
項(xiàng)目 - 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進(jìn)行打包,mainClass設(shè)置執(zhí)行的main方法
項(xiàng)目 - 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"
映射宿主機(jī)./target下的文件${container_name}.jar,到/usr/local/${container_name}.jar
映射宿主機(jī)的時(shí)區(qū)到容器
啟動(dòng)命令設(shè)置時(shí)區(qū)到上海,隨后調(diào)用啟動(dòng)參數(shù)java -jar,此處可以設(shè)置更多的啟動(dòng)參數(shù)
此處的參數(shù)傳遞方式較差(linux變量替換),可以尋求更好的參數(shù)傳遞方式
【ScalaAkka to Docker】任務(wù)配置 - 高級任務(wù)-Deploy前置任務(wù)
pwd /usr/local/maven3//bin/mvn -v
任務(wù)配置 - 高級任務(wù)-Deploy后置任務(wù)
${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
任務(wù)配置 - 高級任務(wù)-Release前置任務(wù)
docker-compose -p ${SERVER_NAME} -f ${WEBROOT}/docker-compose.yml down || echo "服務(wù)不存在" docker stop ${SERVER_NAME} || echo "服務(wù)不存在" docker rm ${SERVER_NAME} || echo "服務(wù)不存在" rm -rf ${WEBROOT}
任務(wù)配置 - 高級任務(wù)-Release后置任務(wù)
docker-compose -p ${SERVER_NAME} up -d echo "服務(wù)啟動(dòng)完成"
項(xiàng)目 - 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進(jìn)行打包,mainClass設(shè)置執(zhí)行的main方法
項(xiàng)目 - 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"
映射宿主機(jī)./target下的文件${container_name}.jar,到/usr/local/${container_name}.jar
映射宿主機(jī)的時(shí)區(qū)到容器
啟動(dòng)命令設(shè)置時(shí)區(qū)到上海,隨后調(diào)用啟動(dòng)參數(shù)java -jar,此處可以設(shè)置更多的啟動(dòng)參數(shù)
此處的參數(shù)傳遞方式較差(linux變量替換),可以尋求更好的參數(shù)傳遞方式
【SpringBoot to Jar】任務(wù)配置 - 高級任務(wù)-Deploy前置任務(wù)
pwd /usr/local/maven3//bin/mvn -v
任務(wù)配置 - 高級任務(wù)-Deploy后置任務(wù)
${MVN_HOME}/bin/mvn clean scala:compile compile package -Dmaven.test.skip=true -DartifactId=${SERVER_NAME} # cp target/${SERVER_NAME}.jar .
任務(wù)配置 - 高級任務(wù)-Release前置任務(wù)
curl -X POST 127.0.0.1:${PORT}/shutdown || echo "服務(wù)不存在" rm -rf ${WEBROOT}
任務(wù)配置 - 高級任務(wù)-Release后置任務(wù)
java -Dserver.port=${PORT} -jar echo "服務(wù)啟動(dòng)完成"其他
上線通知
需要的話開啟
上線單是否開啟審核
需要的話開啟,會在審核后才能實(shí)際發(fā)布構(gòu)建單
環(huán)境準(zhǔn)備 研發(fā)環(huán)境上訴內(nèi)容完成后,是無法進(jìn)行構(gòu)建發(fā)版的。編譯發(fā)版都是基于walle的docker容器,python下完成的。該環(huán)境下無java和maven變量
我們有兩個(gè)方式解決 宿主機(jī)映射 or 重新打包鏡像
此處只講解宿主機(jī)映射的方式(更推薦重新打包鏡像)
我們在宿主機(jī)安裝完成maven,java,node等環(huán)境,然后修改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/
進(jìn)入從宿主機(jī)進(jìn)入python,查看mvn,java,linux是否可用
服務(wù)連接連接git
配置git ssh在宿主機(jī)(docker-compose-python,映射了ssh目錄),保證能免密碼拉去代碼即可
否則在部署時(shí)候,獲取不到git版本,無法拉去代碼
連接服務(wù)器
配置服務(wù)器的 ssh在宿主機(jī),保證能免密碼登錄各服務(wù)器即可
否則在部署時(shí)候,無法連接需要部署的服務(wù)器
部署發(fā)布部署管理 - 新建上線單
選擇環(huán)境和分支即可,回到列表頁,點(diǎn)擊上線查看詳情,再次點(diǎn)擊詳情頁上線即可開始發(fā)布
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/77791.html
摘要:當(dāng)前版本針對于安裝版概要整體流程貫通,基本可以達(dá)到實(shí)用級別。仍舊有很多需要提高的地方發(fā)布構(gòu)建時(shí)部署上線服務(wù)器卡頓嚴(yán)重,基本不可以多項(xiàng)目發(fā)布。 該文章旨在描述從零開始搭建環(huán)境,中間遇到的問題以及最終的經(jīng)驗(yàn)總結(jié)。當(dāng)前版本針對于2.0 docker安裝版 概要 整體流程貫通,基本可以達(dá)到實(shí)用級別。滿足2-5臺服務(wù)器,少量的應(yīng)用部署是完全可以的,但達(dá)到一定規(guī)模之后則Walle和Jenkins...
摘要:該文章用于概述一個(gè)小型持續(xù)集成環(huán)境的搭建的方案什么是持續(xù)集成持續(xù)集成作為當(dāng)今軟件開發(fā)實(shí)踐,可以簡單理解為團(tuán)隊(duì)開發(fā)相對頻繁的集成他們的工作,一般讓每個(gè)成員每天至少集成一次,而這回造成每天會有多次的版本發(fā)布。 該文章用于概述一個(gè)小型持續(xù)集成環(huán)境的搭建的方案 什么是持續(xù)集成? 持續(xù)集成作為當(dāng)今軟件開發(fā)實(shí)踐,可以簡單理解為團(tuán)隊(duì)開發(fā)相對頻繁的集成他們的工作,一般讓每個(gè)成員每天至少集成一次,而這回...
摘要:以便對整個(gè)持續(xù)集成印象加深。配置完各環(huán)境發(fā)布腳本后,則可以使用構(gòu)建發(fā)起進(jìn)行觸發(fā)環(huán)境準(zhǔn)備。并會在遠(yuǎn)程環(huán)境上存放多次發(fā)布的版本,用于回退和切換服務(wù)停用。進(jìn)行等操作,停止原本運(yùn)行的服務(wù)切換啟用。 該文章用于建立一個(gè)小型的基于Walle的持續(xù)集成工具。解決java,react,angular項(xiàng)目的編譯發(fā)布。以便對整個(gè)持續(xù)集成印象加深。官方網(wǎng)站:https://walle-web.io/ 適用...
摘要:本章用于講解如何在下構(gòu)建和運(yùn)行前端應(yīng)用。項(xiàng)目配置服務(wù)名稱鏡像版本映射容器端口到本地端口數(shù)據(jù)卷映射本地文件到容器映射文件到容器的目錄并覆蓋文件映射文件夾到容器的文件夾覆蓋容器啟動(dòng)后默認(rèn)執(zhí)行的命令。環(huán)境準(zhǔn)備參考文檔 本章用于講解如何在walle下構(gòu)建和運(yùn)行前端應(yīng)用。主要包含React,Angular應(yīng)用,以Nginx+Docker運(yùn)行(Vue方式不講,大家自行研究) 新建項(xiàng)目 項(xiàng)目中心 >...
摘要:自動(dòng)化測試和持續(xù)集成發(fā)布。在服務(wù)型環(huán)境中部署和調(diào)整數(shù)據(jù)庫或其他的后臺應(yīng)用。容器與鏡像的關(guān)系類似于面向?qū)ο缶幊讨械膶ο笈c類。容器容器是獨(dú)立運(yùn)行的一個(gè)或一組應(yīng)用。提供了龐大的鏡像集合供使用。 還在按照mysql安裝教程一步一步配置服務(wù)配置賬戶嗎?還在為每開一個(gè)新環(huán)境重新配置這些服務(wù)感到苦惱嗎?使用Docker,服務(wù)快速構(gòu)建部署。解決你的研發(fā)時(shí)間,早點(diǎn)下班~現(xiàn)代技術(shù),還不會docker你就落...
閱讀 2184·2021-11-24 09:39
閱讀 2805·2021-07-29 13:49
閱讀 2329·2019-08-29 14:15
閱讀 2244·2019-08-29 12:40
閱讀 3325·2019-08-26 13:42
閱讀 644·2019-08-26 12:13
閱讀 2077·2019-08-26 11:41
閱讀 3356·2019-08-23 18:32