CircleCI迁移:配置文件

时间:2018-08-10 08:52:17

标签: circleci-2.0

我需要从CirlceCI 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配置验证-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

请您帮助我了解问题出在哪里以及需要进行哪些修改。

谢谢, M

1 个答案:

答案 0 :(得分:0)

CircleCI 2.0不赞成您使用某些选项,而需要其他选项。

  1. timezone is set as an environment variable
  2. Databases are declared as additional docker images
  3. 所有活动都在steps内部以job的形式出现

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