【Windows, PowerShell,Script,SpringBoot】 部署

2 篇文章 0 订阅
1 篇文章 0 订阅
部署 ps1 script:
# Powershell Version 7.1.3
# param 要写在最上面, 相当于一个脚本是一个函数。参数传递放在最上面
# 默认为 $null
param 
(
    $projectDirectory,
    $targetDirectory
    # [string]$Test=$(throw "Parameter missing: -name Name") 
)

$targetDirectory = Get-Location

# 换行
# Write-Output "`r"
# Write-Output `n

function RemovePoundComments {
    param([string]$file_content)
    # 将 # 号 \ 好等所有的转义字符转成 转成非转义。
    # Refs: Escapes a minimal set of characters (\, *, +, ?, |, {, [, (,), ^, $, ., #, and white space) by replacing them with their escape codes
    $file_content = [Regex]::Escape($file_content)
    # $file_content
    # 匹配 # sign comment
    # 这里有两部分正则:
    # \\#.*?\\r\\n: 用来非最后一行的 # comment 和每行后面的 # comment
    # \\#.*: 匹配最后一行是 # comment
    # 注意这里要匹配一定要 \\#.*?\\r\\n 在 \\#.* 前面,这是匹配优先度的问题。位置调换回导致出错。
    $file_content = $file_content -replace "(\\#.*?\\r\\n|\\#.*)", ""
    # $file_content
    # [Environment]::NewLine 是 powershell 的换行符号
    # 匹配换行
    $file_content = $file_content -replace "(\\r)?\\n", [Environment]::NewLine
    # $file_content
    # 匹配转移后的 (\ ) 的空格
    # 如果上面的 $file_content -replace "(\\#.*?\\r\\n|\\#.*)" 替换成的是 "" 而不是 [Environment]::NewLine 则需要下面这个
    $file_content = $file_content -replace "\\\s{1,}", [Environment]::NewLine

    return $file_content
}

$file_content = Get-Content "./.env" -raw
$file_content = RemovePoundComments $file_content 
$configuration = ConvertFrom-StringData($file_content)
echo $configuration `r
# ({false}, {true})[condition]
# powershell boolean type: $true or $false
$projectDirectory = $projectDirectory ?? $configuration.projectDirectory
$targetDirectory = $targetDirectory ?? $configuration.targetDirectory
# $projectDirectory | Write-Host
# $targetDirectory | echo
Set-Location -Path $projectDirectory

Get-Location | Write-Host
echo `r
# mybatis-plus 版本的原因,只能用 maven 3.6.1 版本打包
mvn clean && mvn package -DskipTests

$result=$?
if (!$result) {
    echo "打包失败" 2>&1 
    pause
}

$targetFile = -join($projectDirectory, "\target\*.jar")
echo ({targetFile not found}, {targetFile found})[(Test-Path $targetFile)]
echo ({targetDirectory not found}, {targetDirectory found})[(Test-Path $targetDirectory)]
# 实际上就是 copy-item 命令
cp -Path $targetFile -Destination $targetDirectory -Recurse

cd -

dir
ls

pm2 start ./start_app.json

# Read-Host -Prompt "Press Enter to exit"
PM2 管理 springboot:
{
    "apps": {										//json结构,数组类型,可以是多个,每个对应pm2中运行的应用
        "name": "项目名称",							//pm2管理列表中显示的程序名称
        "script": "java",							//使用语言指定为java
        "exec_mode": "fork",						//fork单例多进程模式,cluster多实例多进程模式只支持node
        "error_file": "./log/err.log",				//错误日志存放位置
        "out_file": "./log/spring-boot.log",				//全部日志存放位置
        "merge_logs": true,							//追加日志
        // "log_date_format": "YYYY/MM/DD HH:mm:ss",	//日志文件输出的日期格式
        "min_uptime": "60s",						//最小运行时间(范围内应用终止会触发异常退出而重启)
        "max_restarts": 30,							//异常退出重启的次数
        "autorestart": true,						//发生异常情况自动重启
        "restart_delay": "60",						//异常重启的延时重启时间
        "watch": true,
        "args": [									//传递给脚本的java参数,有顺序限制
            "-XX:+UseG1GC",							//执行参数之jvm参数
            "-jar",									//执行参数之执行命令
            "<目标 jar 包名称>",						//执行参数之执行文件名, 例如:app.jar
	        "--spring.profiles.active=local_test"		//指定程序参数之环境名
	        // "--server.port=944"						//指定程序参数之端口
        ]
    }
}
# 加上注释,测试 powershell 是否创建对象成功
#只能分行注释
projectDirectory=<项目所在路径> # test
    targetDirectory="复制到的目标目录"
# test=aaa #test
目录结构:
│   .env
│   deploy.ps1 	 
│   start_app.json
│
└───log
        err.log
        spring-boot.log
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值