将CircleCI迅速引入并将结果通知到Slack + CircleCI整体概述
在Slack中设置,通知关于如何最低限度地运行CircleCI以及示例的前半部分。后半部分总结了CircleCI的整体概述。
立即启动 CircleCI.
每次第一次将GitHub上的代码提交到CircleCI,并将其部署到EC2上进行处理。
注册CircleCI
请从以下链接选择注册: https://circleci.com/
在这里,可以选择[授权GitHub]和[授权BitBucket]。选择[授权GitHub]。
一旦在GitHub授权CircleCI访问权限后,将会自动登录。
在选择[INSIGHTS]后,可以看到以下的项目设置选项,会显示CircleCI管理的仓库。通过选择右上角的设置图标,可以进行设置。
设置SSH密钥
在项目设置中,从GitHub中添加一个SSH密钥来进行项目的检出。
在项目设置中,选择SSH权限,然后选择[添加SSH密钥],并指定以下两项。
-
- Host name
- Private Key
設定檔案的描述
关于与GitHub进行协作的情况
在GitHub的存储库根目录下创建一个名为circle.yml的文件,并按以下方式进行描述。
在这里,如果将代码合并(或提交)到develop或master分支,则Circle CI会执行事先准备好的位于存储库根目录下的scripts目录中的脚本。
general:
branches:
only:
- master
- develop
deployment:
staging:
branch: develop
commands:
- /bin/bash ./scripts/deployment-staging.sh
production:
branch: master
commands:
- /bin/bash ./scripts/deployment-production.sh
test:
override:
- echo "----- No executable test -----"
如果没有显式指定,CircleCI会根据配置推测并执行一些操作。然而,有时候即使没有准备测试文件,CircleCI也会猜测并运行测试,并导致构建失败并抛出错误。因此,可以在测试项目中设置覆盖配置,通过echo命令输出没有可执行测试的信息。
如果在一般部分的分支中指定only,则可以使用白名单的方式来指定目标分支;如果指定ignore,则可以使用黑名单的方式来从目标中排除分支。
npm test
> test-repository2@0.0.0 test /home/ubuntu/test-repository
> echo "Error: no test specified" && exit 1
Error: no test specified
npm ERR! Test failed. See above for more details.
npm test returned exit code 1
从脚本中部署
在 deployment-production.sh 和 deployment-staging.sh 文件中包含部署命令等设置。
比如说,在使用Capistrano进行部署的情况下,如果使用bundle进行管理,可以事先编写以下类似的脚本。
#!/bin/bash
bundle exec cap production deploy
请参考以下URL等进行Capstrano(版本3)的安装。
http://qiita.com/hayashier/items/606910ceccf7cc782052
然而,在CircleCI中,无需进行上述URL中的环境设置,同时,在deploy目录下的production.rb和staging.rb文件中,在`:ssh_options`中已经指定了keys用于指定密钥,但在CircleCI中已经进行了密钥指定,因此可省略keys项。
设定通知
通过浏览器进行Slack Webhook的设置
请通过以下网址设置Slack的Webhook配置页面。
https://my.slack.com/services/new/incoming-webhook/
选择[添加传入的WebHooks集成],以将目标通道设置为”Post to Channel”。
记录生成的Webhook URL。
https://hooks.slack.com/services/XXXXXXXXXXXXXXXXXX/XXXXXXXXXXXXXXXXXX
在CircleCI上进行配置
在项目设置中,选择[通知]下的[聊天通知]。
在Webhook URL处输入之前保存的URL,然后选择[保存并测试钩子]。
确认在Slack的频道收到以下类似的消息。
Hello from CircleCI
设置已经完成。以后,每次将代码推送至GitHub后,CircleCI会对推送的分支进行构建。(如果在circle.yml中设置了不构建的条件,则构建将不会执行。在上述情况中,只有master分支和develop分支会被构建。)
请留意以下事项
一旦引入了 CircleCI,每次进行 git push 操作后,都会应用构建到所有分支上。
在这种情况下,由于每个分支尚未存在 circle.yml 文件,CircleCI会根据上下文进行推测并执行相应的操作。例如,如果没有测试代码,CircleCI尝试执行测试代码将会导致构建持续失败,所以请注意。
CircleCI 简介
整体结构
部分
在circle.yml中进行设置,将设置分成多个大节。
主要的六部分
machine
checkout
dependencies
database
test
deployment
其他的部分 (qí tā de bù
general(ビルド関連設定)
notify
experimental
命令
在该部分内,可以通过使用commands来指定命令并执行。在执行时可以指定命令的执行时间和选项。
执行的时机 de
可以指定以下三个选项。但是,每个部分只能使用特定的选项。
在命令之前进行指定。
pre
post
override
附加信息
在指令之后进行指定。
timeout
pwd
environment
parallel
files
background
機器設置
前、后
子项
environment
timezone
hosts
ruby
node
java
php
python
ghc
services
红宝石,节点,Java,PHP,Python,GHC。
version
服务
cassandra
elasticsearch
rabbitmq-server
redis
riak
beanstalkd
couchbase-server
neo4j
sphinxsearch
语言支持
他会多种语言,包括 Clojure、C/C++、Golang、Erlang。
结账
只发布
依赖关系
在Ruby中,存在一个名为bundler的工具;在Node.js中,存在一个名为npm的工具;在Python中,存在一个名为pip的工具。这些工具与依赖关系有关的命令需要重写、提交和前置处理。
子分类
bundler
cache_directories
数据库
覆盖,之前,之后。
考试 shì)
预先,后置,覆盖
分级子目录
minitest_globs
部署
子项目
如果存在多个子项目,则名称必须是唯一的,这里的名称可以是任意的。
提供额外信息.
对于每个子项目,请指定以下信息。
branch または tag
commands
owner
heroku
分支
如果只有一个的情况下,请直接填写该分支的名称,不需要用引号或其他符号括起来。
如果有多个的情况下,请用方括号 [] 括起来,并用逗号分隔列举。或者,可以使用正则表达式在 // 斜杠之间填写。
1) “I love eating spicy food.”
branch: master #masterのみ
branch: [master, develop] #master,developのみ
branch: /^(?!(develop|master)$/ #master,develop以外
Heroku 可以被翻译为 “和劳库”。
appname
通知
webhooks
此外,您可以通过项目设置>通知菜单在Web上设置Slack、HipChat、Campfire、Flowdock和IRC的通知。
将以下内容以中文本土方式改写,仅需要给出一种选项:
将军
branches
build_dir
artifacts
其他
在浏览器中,通过项目设置> SSH密钥进行SSH密钥配置。
请提供更多上下文,以便我们更准确地为您提供翻译。
https://circleci.com/docs/configuration ->
请参考https://circleci.com/docs/configuration了解更多信息。