首页 > 解决方案 > CircleCI 迁移:配置文件

问题描述

我需要从 CirclceCI 1.0 迁移到 2.0 我正在尝试按照他们文档中提到的步骤进行操作。但无法获得正确的配置文件。我的 1.0 版文件如下所示:

    ## Customize the test machine
    machine:

      timezone:
        America/New_York # List of timezones http://en.wikipedia.org/wiki/List_of_tz_database_time_zones

      # Version of ruby to use
      ruby:
        version:
          2.3.1

    ## Customize database setup
    database:
      override:
        # replace Circle's generated database.yml
        - cp config/database.yml.ci config/database.yml
        - bundle exec rake db:create db:schema:load --trace

    test:
      minitest_globs:
        - test/**/*_test.rb

    steps:
      - checkout
        - post:
          - mkdir -p tmp

要迁移到版本 2,所做的修改是:

    version: 2
    ## Customize the test machine
    jobs:
      build:
        timezone:
          America/New_York # List of timezones http://en.wikipedia.org/wiki/List_of_tz_database_time_zones

        # Version of ruby to use
        docker:
          - image: circleci/ruby:2.3-jessie

      ## Customize database setup
      database:
        - override:
          # replace Circle's generated database.yml
          - cp config/database.yml.ci config/database.yml
          - bundle exec rake db:create db:schema:load --trace

      test:
        - minitest_globs:
          - test/**/*_test.rb

      steps:
        - checkout:
        - run: mkdir -p tmp

在执行 CLI 命令进行验证时,如下所示: circleci config validate -c .circleci/config.yml 我收到错误:错误:发生 3 个错误:

     * Error migrating config to version 2: 2 errors occurred:

     * in job 'build': steps is not a list
     * in job 'build': steps is not a list
     * Config file is invalid:
      at jobs: steps: steps is required
      at jobs: timezone: Additional property timezone is not allowed
      at jobs: jobs: Invalid type. Expected: object, given: array
      at jobs: jobs: Invalid type. Expected: object, given: array
      at jobs: jobs: Invalid type. Expected: object, given: array

     * Error in config file: The schema/shape of the YAML is incorrect: json: cannot unmarshal array into Go value of type config.JobDescription

请求您帮助我了解哪里出错以及需要进行的修改。

谢谢,米

标签: circleci-2.0

解决方案


CircleCI 2.0 弃用了您正在使用的一些选项,并需要其他选项。

  1. 时区设置为环境变量
  2. 数据库被声明为附加的 docker 镜像
  3. 所有活动都发生stepsjob

F

version: 2
jobs:
  build:
    # Version of ruby to use
    docker:
      - image: circleci/ruby:2.3-jessie      
        environment:
          TZ: "/usr/share/zoneinfo/America/Los_Angeles"
      - image: circleci/postgres:9.6.2-alpine            
        environment:
          TZ: "/usr/share/zoneinfo/America/Los_Angeles"       
          POSTGRES_USER: root
          POSTGRES_DB: circle-test_test
    steps:  # run inside primary (ruby) container, with access to secondary (DB) container as localhost:db-port
      - checkout
      - run:
          name: Database Migration/Setup
          command: bundle exec rake db:create db:schema:load --trace
      - run:
          name: Execute Tests
          command: rspec test/**/*_test.rb  # change to appropriate testing commands

推荐阅读