circle初探

github

注册并添加到circleci中会添加一个钩子,用于在有pr是进行测试,也会有邮件提醒,取决于你的设置

添加.circleci / config.yml文件

在创建.circleci/config.yml文件并将其提交到GitHub储库后,CircleCI会立即检查您的代码并运行配置好的测试代码

jobs:
  build:
    docker:
      - image: circleci/ruby:2.4.1-jessie
    steps:
      - run: |
          bundle install
          bundle exec rake db:schema:load
          bundle exec rspec spec
          bundle exec cucumber

CircleCI每次都在一个干净的容器上运行测试,可以在dashboard中查看,或者邮件查看结果


status_badge.png

集成状态也会出现在拉取请求屏幕上,以显示所有测试都已通过:

status_check.png

部署密钥和用户密钥

如果使用GitHub作为VCS,则GitHub具有公钥,而CircleCI存储私钥。部署密钥使CircleCI可以访问单个存储库。为防止CircleCI推送到您的存储库,此部署密钥是只读的。

示例

在github上创建一个项目 :repo

1,生成密钥: 按照提示生成密钥

会在/Users/yourusername/.ssh下生成一个密钥
2,转到https://github.com/you/test-repo/settings/keys,然后单击“添加部署密钥”。在“标题”字段中输入标题,然后复制并粘贴在步骤1中创建的密钥。选中“允许写访问”,然后单击“添加密钥”。(直接按配置后即可)

hello world

添加.circleci/config.yml。 yml添加:

version: 2.1

orbs:
    hello: circleci/hello-build@0.0.7 # uses the circleci/buildpack-deps Docker image

workflows:
    "Hello Workflow":
        jobs:
          - hello/hello-build

commit and push 即可触发构建

在构建时输出hello world

version: 2
jobs:
  build:
    docker: # use the docker executor type; machine and macos executors are also supported
      - image: circleci/node:4.8.2 # the primary container, where your job's commands are run
    steps:
      - checkout # check out the code in the project directory
      - run: echo "hello world" # run the `echo` command

每次job,ci都会启动一个容器来运行该job

version: 你要使用的ci版本
job:你要执行的 job 清单,集合中的键为 job 的名称,值是具体执行 job 的内容,如果你使用工作流(workflows),则 job 的名称在配置文件中必须唯一,如果你不使用 工作流(workflows),则必须包含名称为build的 job 来作为用户提交代码时的默认 job。
docker :是用来指定 CircleCI 当前 job 使用 docker, 其值image是指 docker 所使用的镜像,必要时你可以同时指定多个镜像,比如你的项目需要依赖 mysql 或者 redis。 第一个列出的容器为主容器,steps 都会在主容器中进行。
steps:当前 job 要运行的 命令 (command) 列表
working_directory: 属性是用来定义steps 在哪个目录运行

构建、测试

  1. 检出代码
- checkout
  1. 安装依赖
- run:
    name: Install local dependencies
    command: pip install -r requirements.txt
  1. 缓存依赖(不懂)先记录
- save_cache:
    paths:
    - ./vendor
    key: v1-dependencies-{{ checksum "composer.json" }}
  1. 测试
- run:
    name: Testing
    command: python3 xxxx.py

运行测试,如果任何测试不通过,本次构建将失败

  1. 打包 docker 镜像
- run:
    name: Build image
    command: |
        docker build -t $FULL_IMAGE_NAME .
        mkdir docker-image
        docker save -o docker-image/image.tar $FULL_IMAGE_NAME

打包 docker 镜像并命名为 $FULL_IMAGE_NAME,并将镜像 保存成 tar 归档文件

  1. 运行并简单测试镜像
- run:
    name: Test image
    command: |
      docker run -d -p 8080:80 --name built-image $FULL_IMAGE_NAME
      sleep 10
      docker run --network container:built-image byrnedo/alpine-curl -I --retry 10 --retry-connrefused http://localhost

运行刚才打包好的镜像,然后使用 curl 对打包好的镜像进行简单测试

  1. 保存镜像
- persist_to_workspace:
    root: .
    paths:
    - docker-image

部署

docker 的推送以及部署,涉及docker,以及部署命令,现在为大概了解ci是怎么样的一个过程,如果有可能,将会对自动化的持续集成有重大意义。待补充开发知识后再做实践

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 222,000评论 6 515
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 94,745评论 3 399
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 168,561评论 0 360
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 59,782评论 1 298
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 68,798评论 6 397
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 52,394评论 1 310
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,952评论 3 421
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,852评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 46,409评论 1 318
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 38,483评论 3 341
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,615评论 1 352
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 36,303评论 5 350
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,979评论 3 334
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,470评论 0 24
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,571评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 49,041评论 3 377
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,630评论 2 359

推荐阅读更多精彩内容