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

目录
相关文章
|
jenkins Java Shell
jenkins实现持续集成、持续部署
想要利用jenkins实现持续集成、持续部署,首先我们先思考需要jenkins帮我们做些什么事情才能达到这个目的。首先开发人员提交了代码jenkins应该知道这个变动;其次jenkins知道代码变更后,想要拉取代码,此时要求jenkins服务器上也要有代码拉取的终端,比如git、gitee等;再其次拉取完代码后jenkins就需要打包这些代码成为jar包或者war包,这就需要maven、gradle等打包工具;再然后jenkins需要将这些jar包部署到目标服务器,那就需要相应的插件和脚本来部署这些jar或者war包。
456 1
jenkins实现持续集成、持续部署
|
4天前
|
jenkins Devops Java
【DevOps】(一)jekins部署
【DevOps】(一)jekins部署
17 1
|
4天前
|
运维 资源调度 数据安全/隐私保护
容器化运维镜像仓库和资源调度
【2月更文挑战第14天】容器运维平台的两个关键组成,镜像仓库和资源调度。
|
7月前
|
运维 Kubernetes jenkins
【Kubernetes测试生产环境整体部署及全链路测试、自动化运维平台Jenkins与Devops环境搭建】
【Kubernetes测试生产环境整体部署及全链路测试、自动化运维平台Jenkins与Devops环境搭建】
234 0
|
11月前
|
jenkins Java 持续交付
从0搭建属于自己的jenkins持续集成平台
Jenkins在日常工作中占据了一个非常重要的角色,帮助我们节省了大量用于构建的时间。有些公司有运维大哥对Jenkins进行维护,如果没有那只能自己动手了。俗话说的好自己动手丰衣足食,所以本文就从0开始搭建属于自己的Jenkins持续平台。主要包含,普通项目构建、流水线构建、多分支流水线构建并将构建结果辅以钉钉通知。
从0搭建属于自己的jenkins持续集成平台
|
前端开发 JavaScript Java
持续集成与部署(四):部署 前后端分离
持续集成与部署(四):部署 前后端分离
持续集成与部署(四):部署 前后端分离
|
存储 运维 Kubernetes
在k8s安装CICD-devtron
在k8s安装CICD-devtron
197 0
|
运维 前端开发 jenkins
Devops 开发运维高级篇之Jenkins+Docker+SpringCloud微服务持续集成——部署方案优化
之前我们做的方案部署都是只能选择一个微服务部署并只有一台生产服务器,每个微服务只有一个实例,容错率低 如何去解决?
Devops 开发运维高级篇之Jenkins+Docker+SpringCloud微服务持续集成——部署方案优化
|
敏捷开发 Devops 持续交付
CICD
最初是瀑布模型,后来是敏捷开发,现在是DevOps,这是现代开发人员构建出色的产品的技术路线。随着DevOps的兴起,出现了持续集成(Continuous Integration)、持续交付(Continuous Delivery) 、持续部署(Continuous Deployment) 的新方法。传统的软件开发和交付方法正在迅速变得过时。从历史上看,在敏捷时代,大多数公司会每月,每季度,每两年甚至每年发布部署/发布软件。然而,现在,在DevOps时代,每周,每天,甚至每天多次是常态。当SaaS正在占领世界时,尤其如此,您可以轻松地动态更新应用程序,而无需强迫客户下载新组件。很多时候,他们甚
|
运维 前端开发 jenkins
自动化部署(一)
自动化部署一点点小思路
1958 0
自动化部署(一)