使用 TeamCity 项目自动部署到不同环境

1.NVM 相关

--------------------------linux下安装NVM-------------------------
#从官网下载安装
官网地址:https://github.com/nvm-sh/nvm/archive/refs/tags/v0.39.1.tar.gz

#将压缩包上传至服务器,如我当前位置/nvm

#新建服务器nvm地址
mkdir /root/.nvm

#将压缩包解压至/root/.nvm
tar -zxvf nvm-0.39.1.tar.gz --strip-components 1  -C /root/.nvm

--------------------------在bashrc里面写下相关配置-------------------------
#编辑文件
vim ~/.bashrc

#写入配置
export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && . "$NVM_DIR/nvm.sh" # This loads nvm

#刷新配置
source ~/.bashrc
#判断nvm是否安装
nvm -v
nvm install 14.13.2
--------------------------使用nvm下载相关node版本-------------------------
#nvm常用命令
nvm uninstall 14.13.2     // 移除 node 14.13.2
nvm use 14.13.2           // 使用 node 14.13.2
nvm ls                   // 查看目前已安装的 node 及当前所使用的 node
nvm ls-remote            // 查看目前线上所能安装的所有 node 版本
nvm alias default 14.13.2 // 使用 14.13.2 作为预设使用的 node 版本

2.TeamCity项目配置

General Settings
Name: build_vue_admin
ID: buildVueAdmin
Description: none
Build configuration type: regular
Build number format: %build.counter%, next build number: #144
Publish artifacts: Even if build fails
Artifact paths:
none specified
Build options:
Enable hanging builds detection: ON
Allow triggering personal builds: ON
Enable status widget: OFF
Running builds limit:
per build configuration: unlimited
per branch: *:0
Version Control Settings (1)
VCS checkout mode: Prefer to checkout files on agent (recommended)
Checkout directory: default
Delete all files in the checkout directory before the build: OFF
Attached VCS roots:
VCS Root	Checkout Rules
(git) https://www.gitea.com/vue_admin.git#refs/heads/master belongs to 888999
Commit hook is inactive 
Changes checking interval: 1m
not specified
Show changes from snapshot dependencies: OFF
Exclude default branch changes: OFF
Branch filter: +:*

3.构建Setup

Step 1: npm

export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"  # This loads nvm
#nvm install 16
nvm use 16
npm install -g yarn
yarn --version
npm config set strict-ssl false
npm config set registry https://registry.npmmirror.com
npm cache clean --force
rm -rf node_modules package-lock.json dist
npm install --force

npm run build
tar -czvf vue_admin.tar.gz -C dist .

Step 2: ssh_backup

Runner type: SSH Exec (Runner able to execute commands over SSH)
Execute:  If all previous steps finished successfully
Target host: 172.10.10.126
Target port: default
Use pty: none
Username: root
Commands: sh /data/sh/vue_admin_backup.sh

Step 3: ssh_upload

Runner type: SSH Upload (Deploys files/directories via SSH)
Execute:  If all previous steps finished successfully
Target host: 172.10.10.126:/data/wwwroot/
Target port: default
Username: root
Transport: SCP
Source: %system.teamcity.build.workingDir%/vue_admin.tar.gz

Step 4: ssh_replace

Runner type: SSH Exec (Runner able to execute commands over SSH)
Execute:  If all previous steps finished successfully
Target host: 172.10.10.126
Target port: default
Use pty: none
Username: root
Commands: rm -rf /data/wwwroot/vue_admin/* && cd /data/wwwroot/ && tar -zxvf vue_admin.tar.gz -C /data/wwwroot/vue_admin/ && rm -rf /data/wwwroot/vue_admin.tar.gz

4.备份脚本:vue_admin_backup.sh

#!/bin/bash
# 定义变量
SOURCE_DIR="/home/wwwroot/vue_html/vue_admin"
BACKUP_PARENT_DIR="/home/wwwroot/vue_html/backups/vue_admin"
ARCHIVE_NAME="vue_admin.tar.gz"
DATE=$(date +%Y%m%d%H%M%S)
DEST_DIR="$BACKUP_PARENT_DIR"
T_FILENAME="vue_admin-$DATE.tar.gz"
# 创建目标目录(如果不存在)
mkdir -p "$DEST_DIR"
cd /home/wwwroot/vue_html/
# 打包并压缩目录
tar -zcvf "$ARCHIVE_NAME" vue_admin

# 移动压缩文件到目标目录
mv "$ARCHIVE_NAME" "$DEST_DIR/$T_FILENAME"

# 检查操作是否成功
if [ $? -eq 0 ]; then
    echo "Backup successful: $SOURCE_DIR to $DEST_DIR/$ARCHIVE_NAME"
else
    echo "Backup failed"
fi
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Web项目开发

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值