惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Engineering at Meta
Engineering at Meta
博客园_首页
H
Help Net Security
WordPress大学
WordPress大学
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
罗磊的独立博客
博客园 - 三生石上(FineUI控件)
B
Blog
I
InfoQ
SecWiki News
SecWiki News
T
Tailwind CSS Blog
Spread Privacy
Spread Privacy
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
V
Vulnerabilities – Threatpost
N
Netflix TechBlog - Medium
P
Palo Alto Networks Blog
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
Vercel News
Vercel News
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
K
Kaspersky official blog
M
MIT News - Artificial intelligence
S
Schneier on Security
T
Threat Research - Cisco Blogs
F
Fortinet All Blogs
Cyberwarzone
Cyberwarzone
Scott Helme
Scott Helme
aimingoo的专栏
aimingoo的专栏
Martin Fowler
Martin Fowler
MyScale Blog
MyScale Blog
The Cloudflare Blog
Recent Announcements
Recent Announcements
Security Latest
Security Latest
G
GRAHAM CLULEY
IT之家
IT之家
Y
Y Combinator Blog
The Last Watchdog
The Last Watchdog
腾讯CDC
Google DeepMind News
Google DeepMind News
V
V2EX
S
Securelist
TaoSecurity Blog
TaoSecurity Blog
B
Blog RSS Feed
S
SegmentFault 最新的问题
博客园 - 叶小钗
P
Proofpoint News Feed
云风的 BLOG
云风的 BLOG
Project Zero
Project Zero
G
Google Developers Blog
Google DeepMind News
Google DeepMind News
F
Full Disclosure

博客园 - timseng

ai辅助升级前端安全更新(贼快!hh openclaw的token又耗完了,先不冲了,记录下折腾踩坑过程 (如果需要协助安装500,帮忙卸载250[doge]) VS Code我的配置(持续更新) 推广:flowable工作流引擎就是高级版本的数据库而已(一) springboot升级3x导致邮件发送失败:错误1 jakarta.mail.NoSuchProviderException: smtp nice du更好的du分析文件占用工具ncdu 使用MITMProxy转发https请求到本地、保存鉴权给本地请求(二) virtualBox环境Ubuntu升级后太卡,转debian很丝滑 收藏:加不加「/」?Nginx location 路径与 proxy_pass 的规律 使用visjs分析flowable流程数据 浏览器标签页多行显示:使用Floorp浏览器 最先进的跨平台 Firefox 衍生品 开源之光 开源WAF:ModSecurity探究与部署 动态条件实现java mysql备份恢复云端之核心:更新扫描MySQL库里的所有表的UPDATE_TIME,若发生变动就mysqldump 使用MITMProxy转发请求到本地、保存鉴权给本地请求 这款Ubuntu的默认壁纸水母是真漂亮啊 笑死!'m not going to tell you who, but I know someone who recently locked himself out of the system he was using for an article covering iptables by forgetting the SSH rule. itext的PdfPCell中设置行间距失败的问题 Java递归函数计算递归次数出错
前端发布shell脚本
timseng · 2024-10-22 · via 博客园 - timseng

将“切换目录、npm构建、tar打包、scp传输到服务器、服务器端解压、服务器端文件解压替换、服务器端服务重启”流程,整合成一个shell脚本

#!/bin/bash  
###  
 # @Description: 前端自动发布脚本  
 # @FilePath: publish.sh  
###  
  
# 获取脚本所在目录  
SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"  
  
# 获取脚本所在目录的上一级目录  
PARENT_DIR="$(dirname "$SCRIPT_DIR")"  
  
# 本地 tar 文件名称  
LOCAL_TAR_FILE="dist.tar"  
  
# 远程服务器信息  
REMOTE_USER="root"                  # 远程服务器用户  
REMOTE_HOST=""                      # 远程服务器 IP
REMOTE_PORT="22"                    # 远程服务器 ssh 端口  
REMOTE_PASSWORD="$1"                # 远程服务器密码  
REMOTE_DIR="/usr/frontend/"         # 远程服务器文件传输目录  
  
# todo 添加执行参数检查于确认
# 检查打包命令是否成功的函数 check_success() {
if [ $? -ne 0 ]; then echo "错误: $1" exit 1 fi } # 检查 sshpass 是否存在 USE_SSHPASS=false if command -v sshpass > /dev/null 2>&1; then if [ -z "$REMOTE_PASSWORD" ]; then echo "警告: 检测到 sshpass,但未提供密码。将使用常规方式登录。" else USE_SSHPASS=true fi else echo "未检测到 sshpass,使用常规的密码提示方式。" fi # 开始打包 echo "开始打包..." npm run build > /dev/null 2>&1 check_success "前端打包失败" # 删除旧的 tar 文件 rm -f $LOCAL_TAR_FILE > /dev/null 2>&1 # 生成新的 tar 文件 tar -cvf $LOCAL_TAR_FILE dist > /dev/null 2>&1 check_success "打包 dist 目录失败" # 传输文件到服务器 echo "正在将文件传输到服务器..." if [ "$USE_SSHPASS" = true ]; then sshpass -p "$REMOTE_PASSWORD" scp -P $REMOTE_PORT $LOCAL_TAR_FILE $REMOTE_USER@$REMOTE_HOST:$REMOTE_DIR else scp -P $REMOTE_PORT $LOCAL_TAR_FILE $REMOTE_USER@$REMOTE_HOST:$REMOTE_DIR fi check_success "SCP 文件传输失败" # 定义在远程服务器上执行的脚本内容 REMOTE_SCRIPT=$(cat << EOF #!/bin/bash cd $REMOTE_DIR if [ ! -e "$LOCAL_TAR_FILE" ]; then echo "$LOCAL_TAR_FILE 不存在" exit 1 fi tar -xvf $LOCAL_TAR_FILE > /dev/null 2>&1 if [ $? -ne 0 ]; then echo "错误: $LOCAL_TAR_FILE 解压失败" exit 1 fi rm -rf html mv dist html # docker restart frontend_web EOF ) # 登录服务器并执行脚本 echo "文件传输完成,正在登录服务器并执行脚本..." if [ "$USE_SSHPASS" = true ]; then sshpass -p "$REMOTE_PASSWORD" ssh -p "$REMOTE_PORT" "$REMOTE_USER@$REMOTE_HOST" "bash -s" <<EOF $REMOTE_SCRIPT EOF else ssh -p "$REMOTE_PORT" "$REMOTE_USER@$REMOTE_HOST" "bash -s" <<EOF $REMOTE_SCRIPT EOF fi check_success "远程脚本执行失败" cd - > /dev/null 2>&1 || exit echo "脚本执行完毕!"

命令行使用方式:

sh publish.sh ssh-password