forked from Gitlink/gitlink_help_center
Compare commits
3 Commits
| Author | SHA1 | Date |
|---|---|---|
|
|
42d6cf4623 | |
|
|
80b758d015 | |
|
|
5e225d6095 |
|
|
@ -1,183 +0,0 @@
|
|||
version: 2
|
||||
name: 流水线zhangyang
|
||||
description: ""
|
||||
global:
|
||||
concurrent: 1
|
||||
trigger:
|
||||
webhook: gitlink@1.0.0
|
||||
event:
|
||||
- ref: push
|
||||
ruleset-operator: AND
|
||||
workflow:
|
||||
- ref: start
|
||||
name: 开始
|
||||
task: start
|
||||
- ref: end
|
||||
name: 结束
|
||||
task: end
|
||||
needs:
|
||||
- shell_0
|
||||
- ref: shell_0
|
||||
name: shell
|
||||
image: docker.jianmuhub.com/library/ubuntu:22.04
|
||||
script:
|
||||
- "#!/bin/bash"
|
||||
- ""
|
||||
- "# 配置信息(已更新为你的服务器信息)"
|
||||
- 'REPO_URL="https://gitlink.org.cn/lirenqiu/gitlink_help_center.git" #
|
||||
替换为你的代码仓库URL'
|
||||
- LOCAL_BUILD_DIR="/tmp/your-project-build"
|
||||
- WEB_ROOT="/var/www/html"
|
||||
- NGINX_CONFIG="/etc/nginx/sites-available/default"
|
||||
- 'REMOTE_SERVER="root@114.55.175.219" # 使用你的服务器IP'
|
||||
- LOG_FILE="/var/log/frontend_deploy.log"
|
||||
- ""
|
||||
- "# 日志函数"
|
||||
- log() {
|
||||
- " local level=$1"
|
||||
- " local message=$2"
|
||||
- " echo \"[$(date '+%Y-%m-%d %H:%M:%S')] [$level] $message\" | tee -a
|
||||
$LOG_FILE"
|
||||
- "}"
|
||||
- ""
|
||||
- "# 错误处理函数"
|
||||
- handle_error() {
|
||||
- ' log "ERROR" "执行命令失败: $BASH_COMMAND"'
|
||||
- ' log "ERROR" "错误代码: $?"'
|
||||
- " exit 1"
|
||||
- "}"
|
||||
- ""
|
||||
- "# 设置错误捕获"
|
||||
- trap 'handle_error' ERR
|
||||
- ""
|
||||
- "# 检查是否以root用户运行"
|
||||
- check_root() {
|
||||
- " if [[ $EUID -ne 0 ]]; then"
|
||||
- ' log "ERROR" "此脚本需要以root用户运行"'
|
||||
- " exit 1"
|
||||
- " fi"
|
||||
- "}"
|
||||
- ""
|
||||
- "# 安装本地依赖"
|
||||
- install_local_dependencies() {
|
||||
- ' log "INFO" "开始安装本地依赖..."'
|
||||
- " "
|
||||
- " # 检测系统类型"
|
||||
- " if [[ -f /etc/debian_version ]]; then"
|
||||
- ' log "INFO" "检测到Debian/Ubuntu系统"'
|
||||
- " apt-get update -y"
|
||||
- " apt-get install -y git curl gnupg sshpass"
|
||||
- " elif [[ -f /etc/redhat-release ]]; then"
|
||||
- ' log "INFO" "检测到CentOS/RHEL系统"'
|
||||
- " yum update -y"
|
||||
- " yum install -y git curl gnupg sshpass"
|
||||
- " else"
|
||||
- ' log "ERROR" "不支持的操作系统"'
|
||||
- " exit 1"
|
||||
- " fi"
|
||||
- " "
|
||||
- " # 安装Node.js和Yarn"
|
||||
- " curl -sL https://deb.nodesource.com/setup_16.x | bash -"
|
||||
- " apt-get install -y nodejs"
|
||||
- " npm install -g yarn"
|
||||
- " "
|
||||
- ' log "INFO" "本地依赖安装完成"'
|
||||
- "}"
|
||||
- ""
|
||||
- "# 克隆代码并构建"
|
||||
- build_project() {
|
||||
- ' log "INFO" "开始克隆代码并构建项目..."'
|
||||
- " "
|
||||
- " # 创建构建目录"
|
||||
- " mkdir -p $LOCAL_BUILD_DIR"
|
||||
- " cd $LOCAL_BUILD_DIR || exit"
|
||||
- " "
|
||||
- " # 克隆代码"
|
||||
- ' if [ -d ".git" ]; then'
|
||||
- ' log "INFO" "目录非空,尝试拉取最新代码"'
|
||||
- " git pull"
|
||||
- " else"
|
||||
- ' log "INFO" "克隆代码仓库"'
|
||||
- " git clone $REPO_URL ."
|
||||
- " fi"
|
||||
- " "
|
||||
- " # 安装项目依赖并构建"
|
||||
- ' log "INFO" "安装项目依赖..."'
|
||||
- " yarn install"
|
||||
- " "
|
||||
- ' log "INFO" "开始项目构建..."'
|
||||
- " yarn build"
|
||||
- " "
|
||||
- ' log "INFO" "项目构建完成"'
|
||||
- "}"
|
||||
- ""
|
||||
- "# 使用密码部署到远程服务器"
|
||||
- deploy_to_remote() {
|
||||
- ' log "INFO" "开始部署到远程服务器..."'
|
||||
- " "
|
||||
- " # 服务器密码(注意:明文存储不安全!)"
|
||||
- " SERVER_PASSWORD='ppuUV7W6UtmVGk01#pd:l' # 你的服务器密码"
|
||||
- " "
|
||||
- " # 复制构建文件到远程服务器"
|
||||
- ' log "INFO" "复制构建文件到远程服务器..."'
|
||||
- ' sshpass -p "$SERVER_PASSWORD" rsync -avz --delete -e ssh
|
||||
"$LOCAL_BUILD_DIR/dist/" "$REMOTE_SERVER:$WEB_ROOT/"'
|
||||
- " "
|
||||
- " # 在远程服务器上配置Nginx"
|
||||
- ' log "INFO" "配置远程服务器Nginx..."'
|
||||
- ' sshpass -p "$SERVER_PASSWORD" ssh -o StrictHostKeyChecking=no
|
||||
$REMOTE_SERVER <<EOF'
|
||||
- sudo bash <<SCRIPT
|
||||
- "# 确保Nginx已安装"
|
||||
- if ! command -v nginx &> /dev/null; then
|
||||
- " if [[ -f /etc/debian_version ]]; then"
|
||||
- " apt-get update -y"
|
||||
- " apt-get install -y nginx"
|
||||
- " elif [[ -f /etc/redhat-release ]]; then"
|
||||
- " yum update -y"
|
||||
- " yum install -y nginx"
|
||||
- " fi"
|
||||
- fi
|
||||
- ""
|
||||
- "# 创建Nginx配置文件"
|
||||
- cat > $NGINX_CONFIG <<NGINXCONF
|
||||
- server {
|
||||
- " listen 80 default_server;"
|
||||
- " listen [::]:80 default_server;"
|
||||
- " "
|
||||
- " root $WEB_ROOT;"
|
||||
- " index index.html index.htm;"
|
||||
- " "
|
||||
- " server_name _;"
|
||||
- " "
|
||||
- " location / {"
|
||||
- " try_files \\$uri \\$uri/ /index.html;"
|
||||
- " }"
|
||||
- "}"
|
||||
- NGINXCONF
|
||||
- ""
|
||||
- "# 测试配置并重启Nginx"
|
||||
- nginx -t
|
||||
- systemctl restart nginx
|
||||
- systemctl enable nginx
|
||||
- SCRIPT
|
||||
- EOF
|
||||
- " "
|
||||
- ' log "INFO" "部署到远程服务器完成"'
|
||||
- "}"
|
||||
- ""
|
||||
- "# 主函数"
|
||||
- main() {
|
||||
- ' log "INFO" "===== 开始前端项目部署脚本 ====="'
|
||||
- " check_root"
|
||||
- " install_local_dependencies"
|
||||
- " build_project"
|
||||
- " deploy_to_remote"
|
||||
- ' log "INFO" "===== 部署完成 ====="'
|
||||
- ' log "INFO" "访问 http://114.55.175.219 查看网站"'
|
||||
- "}"
|
||||
- ""
|
||||
- main
|
||||
needs:
|
||||
- start
|
||||
|
||||
Loading…
Reference in New Issue