coding云原生构建实现自动化部署(前端代码v3+vite)

使用Coding CI/CD

在现代软件开发中,自动化部署是提高效率和降低出错率的关键步骤。本文将详细介绍如何使用 coding-ci.yml 文件配置 CI/CD 流程,实现一个自动化的部署过程。我们将以一个简单的项目为例,讲解如何利用 Coding CI/CD 工具自动化构建和部署。

什么是 CI/CD?

CI/CD(持续集成/持续部署)是一种软件工程实践,通过自动化构建、测试和部署流程,提高开发效率和软件质量。CI(持续集成)旨在频繁地将代码集成到共享仓库中,并运行自动化测试。CD(持续部署)则自动将经过测试的代码部署到生产环境中,确保软件的快速交付。

话不多说我们直接代码进行分析

步骤

1. 创建 coding-ci.yml 文件

coding-ci.yml 是一个配置文件,用于定义 CI/CD 流程中的各个阶段。在本文中,我们将创建一个简单的 CI/CD 配置文件,以实现代码的自动构建、打包、同步到服务器并发布。

以下是一个示例 coding-ci.yml 文件:

bash 复制代码
master:#这里表示如果为master分支会执行后续步骤
  push:#这里表示如果为push推送将会执行后续步骤
    - runner:
        cpus: 4
      docker:
        image: node:14 # 使用 Node.js 的 Docker 镜像作为执行环境
      imports: https://xxxx #这是一个可以访问的yml 里面配置了数据库的key host password等等
      stages:
        - name: 安装依赖
          script:
            - echo "Installing dependencies..."
            - npm i # 使用 npm 安装项目依赖

        - name: 构建
          script:
            - echo "Building project..."
            - npm run build # 构建项目
            - tar -cvf dist.tar -C dist/ . # 将构建后的文件打包为 dist.tar

        - name: 同步
          image: appleboy/drone-scp
          settings:
            host: $DEV_HOST
            username: $DEV_USER
            key: $SSH_PRIVATE_KEY
            source: dist.tar
            target: /var/www/html # 同步到目标服务器

        - name: 发布
          image: appleboy/drone-ssh
          settings:
            host:
              - $DEV_HOST
            username: $DEV_USER
            key: $SSH_PRIVATE_KEY
            port: $SSH_PORT
            script:
              - cd /var/www/html
              - tar xvf dist.tar && unlink dist.tar
              - ln -sfn /var/www/html/dist /var/www/html/dist
              # - systemctl restart nginx  # 重新启动服务

以下为imports导入的链接yml文件中的配置

bash 复制代码
SSH_PRIVATE_KEY: |
  -----BEGIN OPENSSH PRIVATE KEY-----
  #这里是ssh私有密钥key
  -----END OPENSSH PRIVATE KEY-----

SSH_PORT: 服务器端口

DEV_HOST: 服务器ip

DEV_USER: 服务器用户名

2. 配置详细解读

a. Runner 和 Docker
bash 复制代码
runner:
  cpus: 4
docker:
  image: node:14 # 使用 Node.js 的 Docker 镜像作为执行环境
  • runner: 设定了 CI 任务的 CPU 核心数为 4,确保构建任务能够快速执行。
  • docker: 使用 Node.js 14 的 Docker 镜像作为运行环境,确保构建和测试的环境一致性。
b. Import
bash 复制代码
imports: https://coding.net/p/ci/d/dev-config/git/tree/master/coding-env.yml
  • imports: 导入其他配置文件(如环境变量设置),以便在构建过程中使用
c. Stages

CI/CD 流程被分为多个阶段,每个阶段执行特定的任务。

  • 安装依赖

    bash 复制代码
    - name: 安装依赖
      script:
        - echo "Installing dependencies..."
        - npm i # 使用 npm 安装项目依赖

    这个阶段安装项目所需的所有依赖包,确保构建时环境的完整性。

  • 构建

bash 复制代码
- name: 构建
  script:
    - echo "Building project..."
    - npm run build # 构建项目
    - tar -cvf dist.tar -C dist/ . # 将构建后的文件打包为 dist.tar

在这个阶段,我们执行项目的构建任务,并将构建结果打包成 dist.tar 文件,为后续的同步和部署做准备。

  • 同步
bash 复制代码
- name: 同步
  image: appleboy/drone-scp
  settings:
    host: $DEV_HOST
    username: $DEV_USER
    key: $SSH_PRIVATE_KEY
    source: dist.tar
    target: /var/www/html # 同步到目标服务器

使用 appleboy/drone-scp 镜像,将 dist.tar 文件同步到目标服务器的指定目录。这里用到了环境变量来提供主机地址、用户名、密钥等信息。

  • 发布

    bash 复制代码
    - name: 发布
      image: appleboy/drone-ssh
      settings:
        host:
          - $DEV_HOST
        username: $DEV_USER
        key: $SSH_PRIVATE_KEY
        port: $SSH_PORT
        script:
          - cd /var/www/html
          - tar xvf dist.tar && unlink dist.tar
          - ln -sfn /var/www/html/dist /var/www/html/dist
          # - systemctl restart nginx  # 重新启动服务

    这个阶段在目标服务器上执行命令,解压 dist.tar 文件,创建符号链接,并可选择重新启动 nginx 服务来使更改生效。

3. 实现步骤

  1. 配置 Git 仓库 : 确保你的 Git 仓库中包含 coding-ci.yml 文件,并且设置了正确的环境变量,如 $DEV_HOST$DEV_USER$SSH_PRIVATE_KEY 等。

  2. 设置 Coding CI/CD : 在 Coding 平台上配置 CI/CD 工具,确保它可以读取 coding-ci.yml 文件并执行其中的任务。

  3. 提交代码 : 将代码提交到 master 分支。每次提交时,CI/CD 流水线会自动运行,执行从安装依赖到发布的所有步骤。

  4. 检查结果: 查看 CI/CD 工具的执行日志,确保所有步骤成功完成。如果出现错误,根据日志进行调试和修正。

结论

通过配置 coding-ci.yml 文件,你可以实现自动化的构建、部署和发布流程。这种自动化不仅提高了开发效率,还减少了人为错误的可能性。希望本文能帮助你理解和实现 CI/CD 流程,并应用到你的项目中。

相关推荐
小白~小黑2 小时前
软件测试基础二十(接口测试 Postman)
python·自动化·postman
小han的日常5 小时前
接口自动化环境搭建
运维·自动化
yaosheng_VALVE14 小时前
稀硫酸介质中 V 型球阀的材质选择与选型要点-耀圣
运维·spring cloud·自动化·intellij-idea·材质·1024程序员节
幸运的星竹15 小时前
使用pytest+openpyxl做接口自动化遇到的问题
python·自动化·pytest
测试界的酸菜鱼21 小时前
使用 Python + Vue 搭建自动化平台的核心要点
vue.js·python·自动化
IT-民工2111021 小时前
Ansible剧本检测Windows防火墙状态
linux·运维·windows·自动化·ansible
卤吓唬晤1 天前
项目设计与验收
运维·笔记·学习·自动化
爱搞技术的猫猫1 天前
实现API接口的自动化
大数据·运维·数据库·性能优化·自动化·产品经理·1024程序员节
何曾参静谧1 天前
「Py」Python基础篇 之 Python都可以做哪些自动化?
开发语言·python·自动化
测试小小怪下士1 天前
怎么用Python+selenium自动化生成测试报告
selenium·测试工具·自动化