美文网首页
circle初探

circle初探

作者: 9efb9af6eebe | 来源:发表于2019-12-17 18:16 被阅读0次

    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是怎么样的一个过程,如果有可能,将会对自动化的持续集成有重大意义。待补充开发知识后再做实践

    相关文章

      网友评论

          本文标题:circle初探

          本文链接:https://www.haomeiwen.com/subject/rrlenctx.html