CircleCI 自动化部署 #68

简介: CircleCI 自动化部署 #68

什么是 CircleCI


CircleCI 是一个持续集成/持续部署的服务,开源项目可以免费使用,他的价格取决于你需要并发构建实例的数量,单个实例是免费的。


添加 ssh 密钥


$ ssh host_name

$ cd ~/.ssh/

$ ssh-keygen -t rsa 创建公钥(.pub)和私钥

$ cat id_rsa复制私钥所有内容

要使 能够将文件发送到服务器,单击"构建"屏幕上项目名称旁边的 来访问项目的构建设置。在设置屏幕上,找到权限部分下的 权限链接。单击" 添加 密钥"按钮,然后添加服务器的主机名和私钥的内容CircleCIcogSSHSSH


要将此密钥导入 环境,我们使用 添加 SSH 在设置屏幕上显示密钥的指纹。复制此指纹并将其插入上述命令,我们的构建环境现在可以使用该密钥。CIadd_ssh_keys密钥后,CircleCI


提供 Hostkey 进行验证


当 服务器尝试连接到您的主机时,它可能会提示您验证主机密钥。提示是自动化的氪星石: 环境将无限期挂起,等待用户给出响应。可以禁用此验证,但将正确的密钥添加到 文件是一个更好的解决方案。没有用于添加主机密钥的语义解决方案,但一种选择是将主机密钥添加为环境变量。要添加环境变量,请转到项目设置,然后单击"构建设置"下的"环境变量"链接。单击" 添加变量"按钮,然后添加一个以 服务器主机密钥内容命名的新值。要获取主机密钥,请在终端中运行以下CircleCICIknown_hostsCircleCIREMOTE_HOSTKEY


复制下 这个开头的所有内容,粘贴到ip ecdsa-sha2-nistp256$ cd ~/.ssh/known_hosts


新建环境变量


在这个页面进行新建环境变量


$REMOTE_HOSTKEY   //刚复制的主机密钥
$SSH_USER     // 服务器用户名
$SSH_IP           // 服务器ip


然后我们可以在构建环境中使用此变量将主机密钥添加到 文件中known_hosts


部署命令


剩下的就是将文件传输到远程服务器上

针对 分支进行master


最终配置文件


version: 2.0
jobs:
  build:
    docker:
      - image: circleci/node:latest
    working_directory: ~/circleci-demo-workflows
    steps:
      - checkout
      - run: sudo npm install -g npm@6
      - run: npm install
      - save_cache:
          key: v1-dependencies-{{ checksum "package.json" }}
          paths:
            - node_modules
      - run: npm run build
      - run: echo '部署开始'
      - run: sudo apt-get update && sudo apt-get install rsync
      - restore_cache:
          keys:
            - v1-dependencies-{{ checksum "package.json" }}
            - v1-dependencies
      - add_ssh_keys:
          fingerprints:
            - "bd:dd:23:90:d7:86:80:d8:92:31:1b:41:09:09:27:87"
      - run: echo $REMOTE_HOSTKEY >> ~/.ssh/known_hosts
      - deploy:
          name: deploy
          command: |
            if [ "${CIRCLE_BRANCH}" = "master" ]; then
              rsync -avce ssh build $SSH_USER@$SSH_IP:/data/corki-ui-web/
            else
              echo "Not master branch, dry run only"
            fi
      - run: echo '部署完毕'
workflows:
  version: 2
  scheduled-workflow:
    triggers:
      - schedule:
          cron: "0 0 * * *"
          filters:
            branches:
              only: master
    jobs:
      - build

代码流程:

  • 安装特定版本 ,npmsudo npm install -g npm@6
  • 安装 包npmnpm install
  • 缓存文件save_cache
  • 打包npm run build
  • 安装传输命令sudo apt-get update && sudo apt-get install rsync
  • 恢复缓存 ,需先缓存keyrestore_cache
  • 添加 密钥sshadd_ssh_keys
  • 推送文件到服务器deploy


部署


     选择环境

  • 选择 镜像(这里以 为例)dockernode
  • 开始构建

例子



总结


超级简单有木有,部署完成后,只要 分支有了改动,就会自动发布,哈哈哈。再也不用去手动发布了。master

目录
相关文章
|
供应链
代采系统如何利用大数据分析优化采购决策?
代采系统可以利用大数据分析来优化采购决策
|
人工智能 搜索推荐 机器人
7 个使用生成式 AI 构建的项目
这是七个生成式 AI 项目,可以帮助您提升简历并提高工作效率
935 0
|
10月前
|
JavaScript 算法 前端开发
虚拟 DOM 如何提高应用的性能?
虚拟 DOM 通过减少真实 DOM 操作、高效的 Diff 算法、提升渲染性能、跨平台能力以及优化内存管理等多种方式,全面提高了应用的性能,为用户提供了更流畅、高效的交互体验,尤其在构建大型、复杂的前端应用时,其性能优势更加显著。
221 58
|
7月前
|
人工智能 运维 监控
2025年阿里云服务器配置选择全攻略:CPU、内存、带宽与系统盘详解
在2025年,阿里云服务器以高性能、灵活扩展和稳定服务助力数字化转型,提供轻量应用服务器、通用型g8i实例等多样化配置,满足个人博客至企业级业务需求。针对不同场景(如计算密集型、内存密集型),推荐相应实例类型与带宽规划,强调成本优化策略,包括包年包月节省成本、ESSD云盘选择及地域部署建议。文中还提及安全设置、监控备份的重要性,并指出未来可关注第九代实例g9i支持的新技术。整体而言,阿里云致力于帮助用户实现性能与成本的最优平衡。 以上简介共计238个字符。
|
存储 Kubernetes 安全
第四章 Helm仓库介绍配置国内仓库地址
第四章 Helm仓库介绍配置国内仓库地址
5270 2
|
10月前
|
负载均衡 Java 应用服务中间件
Gateway服务网关
Gateway服务网关
270 1
Gateway服务网关
|
9月前
|
算法 NoSQL Java
微服务架构下的接口限流策略与实践#### 一、
本文旨在探讨微服务架构下,面对高并发请求时如何有效实施接口限流策略,以保障系统稳定性和服务质量。不同于传统的摘要概述,本文将从实际应用场景出发,深入剖析几种主流的限流算法(如令牌桶、漏桶及固定窗口计数器等),通过对比分析它们的优缺点,并结合具体案例,展示如何在Spring Cloud Gateway中集成自定义限流方案,实现动态限流规则调整,为读者提供一套可落地的实践指南。 #### 二、
262 3
|
消息中间件 数据可视化 Kafka
kafka可视化工具
kafka可视化工具
559 0
|
存储 缓存 关系型数据库
MySQL的InnoDB引擎:深度解析与应用
【4月更文挑战第20天】本文深入探讨MySQL的InnoDB引擎,它采用MVCC和行级锁定实现高并发、高性能数据操作。InnoDB通过缓冲池减少I/O,支持ACID事务、外键约束和行级锁定,提供数据一致性。此外,还支持全文索引和灵活的索引策略。其高并发性能、数据一致性和可扩展性使其成为首选存储引擎。
716 12
|
数据采集 Web App开发 Java
盘点Java爬虫框架
盘点Java爬虫框架
355 0