云计算百科
云计算领域专业知识百科平台

GitLab CI/CD 中通过 .gitlab-ci.yml 文件将 Angular 前端代码更新并部署到 CentOS 服务器

要在 GitLab CI/CD 中通过 .gitlab-ci.yml 文件将 Angular 前端代码更新并部署到 CentOS 服务器上,可以按照以下步骤进行配置。

1. 步骤概述

  • 配置 GitLab CI/CD 流水线来自动化构建和部署 Angular 项目。
  • 将构建后的前端文件上传到 CentOS 服务器。
  • 在 CentOS 上更新前端应用并重启 Web 服务器(如 Nginx)。
  • 1. 创建 GitLab CI/CD 配置文件(.gitlab-ci.yml)

    基本的 .gitlab-ci.yml 配置示例 在你的 Angular 项目根目录下创建或更新 .gitlab-ci.yml 文件:

    stages:
    build
    deploy

    # Build stage: 用于构建 Angular 项目
    build:
    stage: build
    image: node:16 # 使用 Node.js 镜像
    script:
    npm install # 安装依赖
    npm run build prod # 打包 Angular 项目
    artifacts:
    paths:
    dist/ # 保存打包后的文件供部署使用
    only:
    main # 只在主分支上执行构建

    # Deploy stage: 部署到 CentOS 服务器
    deploy:
    stage: deploy
    image: ruby:2.7 # 使用 Ruby 镜像(可以使用其他轻量镜像)
    script:
    aptget update && aptget install y sshpass # 安装 sshpass(如果需要)
    sshpass p $SERVER_PASSWORD scp r dist/complyhub/* $SERVER_USER@$SERVER_IP:/usr/share/nginx/html/ # 上传构建文件
    – sshpass -p $SERVER_PASSWORD ssh $SERVER_USER@$SERVER_IP 'sudo systemctl restart nginx' # 重启 Nginx
    only:
    – main # 只在主分支上部署
    environment:
    name: production
    url: http://$SERVER_IP

    解释:

    • stages: 定义流水线的阶段,build 和 deploy 阶段。
    • build: 在此阶段,CI/CD 运行 Angular 项目的构建命令,生成 dist/ 目录。
    • deploy: 在此阶段,将构建好的文件上传到 CentOS 服务器,并重启 Nginx。

    2. 配置 GitLab CI/CD 变量

    为了保证安全,避免直接暴露服务器的密码或 SSH 密钥,你可以通过 GitLab 的 CI/CD Variables 配置一些环境变量。

    配置的环境变量:

    • SERVER_USER: 服务器用户名(例如:root 或其他具有权限的用户)。
    • SERVER_PASSWORD: 服务器用户的密码(如果使用 sshpass)。
    • SERVER_IP: CentOS 服务器的 IP 地址。
    • 你可以在 GitLab 项目的 Settings > CI / CD > Variables 下添加这些变量。

    如果使用 SSH 密钥(推荐),可以配置 SSH_PRIVATE_KEY 和在 .gitlab-ci.yml 中使用 ssh-agent。

    3. 部署流程解析

  • 构建 Angular 应用: 在 GitLab CI 流水线的 build 阶段,执行 npm run build –prod 命令构建 Angular 应用。构建后的文件会生成在 dist/ 目录下。

  • 上传构建文件到 CentOS 服务器:

  • 使用 scp 命令将 dist/complyhub 文件夹(Angular 构建后的文件)上传到服务器的 /usr/share/nginx/html/ 目录(假设你使用 Nginx)。 sshpass -p $SERVER_PASSWORD 用于自动化 SSH 登录,避免手动输入密码。 3. 重启 Nginx:

    在服务器上,使用 sudo systemctl restart nginx 命令重启 Nginx 服务器,以使新代码生效。

    4. 安全性优化:使用 SSH 密钥

    如果你不希望暴露密码,可以使用 SSH 密钥 代替密码登录:

    步骤:

    1. 生成 SSH 密钥对(如果尚未生成): 在本地运行:

    sshkeygen t rsa b 4096 C "your_email@example.com"

    2. 将公钥复制到服务器:

    sshcopyid user@server_ip

    这样就可以免密登录服务器了。

    3.在 GitLab 中添加 SSH 私钥:

    将私钥(id_rsa)作为 GitLab CI/CD Variable 添加(命名为 SSH_PRIVATE_KEY)。

    4. 更新 .gitlab-ci.yml 使用 SSH 密钥: 在 deploy 阶段的脚本部分,修改为使用 ssh-agent 来加载私钥:

    deploy:
    stage: deploy
    image: ruby:2.7
    script:
    aptget update && aptget install y sshagent
    eval $(sshagent s)
    echo "$SSH_PRIVATE_KEY" | sshadd
    scp r dist/complyhub/* $SERVER_USER@$SERVER_IP:/usr/share/nginx/html/
    – ssh $SERVER_USER@$SERVER_IP 'sudo systemctl restart nginx'
    only:
    – main

    5. 最终效果

    每次你 推送代码到 main 分支 时,GitLab CI/CD 会自动执行:

    • 构建 Angular 项目。
    • 将构建后的文件上传到 CentOS 服务器。
    • 重启 Nginx 使新代码生效。

    6. 其他补充

    如果服务器上没有安装 Nginx 或其他 Web 服务器,你需要先在 CentOS 上安装并配置 Nginx。

    安装 Nginx:

    sudo yum install epelrelease y
    sudo yum install nginx y
    sudo systemctl start nginx
    sudo systemctl enable nginx

    然后根据前面提到的步骤上传和配置 Nginx。

    总结:

    • .gitlab-ci.yml 配置了构建和部署 Angular 前端应用的流水线。
    • 使用 scp 命令上传文件,使用 systemctl restart nginx 重启 Nginx。
    • 配置 GitLab CI/CD 环境变量,保持服务器安全。
    赞(0)
    未经允许不得转载:网硕互联帮助中心 » GitLab CI/CD 中通过 .gitlab-ci.yml 文件将 Angular 前端代码更新并部署到 CentOS 服务器
    分享到: 更多 (0)

    评论 抢沙发

    评论前必须登录!