什么是 CircleCI
CircleCI 是一个持续集成/持续部署的服务,开源项目可以免费使用,他的价格取决于你需要并发构建实例的数量,单个实例是免费的。
添加 ssh 密钥
$ ssh host_name
$ cd ~/.ssh/
$ ssh-keygen -t rsa
创建公钥(.pub)和私钥
$ cat id_rsa
复制私钥所有内容
要使 CircleCI
能够将文件发送到服务器,单击"构建"屏幕上项目名称旁边的 cog
来访问项目的构建设置。在设置屏幕上,找到权限部分下的 SSH
权限链接。单击“ 添加 SSH
密钥”按钮,然后添加服务器的主机名和私钥的内容
要将此密钥导入 CI
环境,我们使用 add_ssh_keys
添加 SSH 密钥后,CircleCI
在设置屏幕上显示密钥的指纹。复制此指纹并将其插入上述命令,我们的构建环境现在可以使用该密钥。
提供 Hostkey 进行验证
当 CircleCI
服务器尝试连接到您的主机时,它可能会提示您验证主机密钥。提示是自动化的氪星石:CI
环境将无限期挂起,等待用户给出响应。可以禁用此验证,但将正确的密钥添加到 known_hosts
文件是一个更好的解决方案。CircleCI
没有用于添加主机密钥的语义解决方案,但一种选择是将主机密钥添加为环境变量。要添加环境变量,请转到项目设置,然后单击"构建设置"下的"环境变量”链接。单击“ 添加变量”按钮,然后添加一个以 REMOTE_HOSTKEY
服务器主机密钥内容命名的新值。要获取主机密钥,请在终端中运行以下
复制下ip ecdsa-sha2-nistp256
这个开头的所有内容,$ cd ~/.ssh/
粘贴到 known_hosts
新建环境变量
在这个页面进行新建环境变量
代码语言:txt复制$REMOTE_HOSTKEY //刚复制的主机密钥
$SSH_USER // 服务器用户名
$SSH_IP // 服务器ip
然后我们可以在构建环境中使用此变量将主机密钥添加到 known_hosts
文件中
部署命令
剩下的就是将文件传输到远程服务器上
针对 master
分支进行
最终配置文件
代码语言:txt复制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
代码流程:
- 安装特定版本
npm
,sudo npm install -g npm@6
- 安装
npm
包npm install
- 缓存文件
save_cache
- 打包
npm run build
- 安装传输命令
sudo apt-get update && sudo apt-get install rsync
- 恢复缓存
key
restore_cache
,需先缓存 - 添加
ssh
密钥add_ssh_keys
- 推送文件到服务器
deploy
部署
- 选择环境
- 选择
docker
镜像(这里以node
为例) - 开始构建
例子
总结
超级简单有木有,部署完成后,只要 master
分支有了改动,就会自动发布,哈哈哈。再也不用去手动发布了。
博客
欢迎关注我的博客