ru en

Непрерывная интеграция с Circle CI v2 на примерах code style check в Node.js и PHP

Вторая версия конфигурации для Circle CI перетерпела множество измененений.

В качестве pipe используются так называемые workflow.

Каждый workflow может включать в себя множество шагов (steps).

Пример запуска для Node.js:


.circleci/config.yml

version: 2
jobs:
  build:
    working_directory: ~/attraction-wars-server
    docker:
      - image: circleci/node:10.0.0
    steps:
      - checkout
      - run:
          name: install-npm
          command: 'sudo npm install -g npm@latest'
      - restore_cache: # special step to restore the dependency cache
          key: dependency-cache-{{ checksum "package.json" }}
      - run:
          name: install-dependencies
          command: npm install
      - save_cache: # special step to save the dependency cache
          key: dependency-cache-{{ checksum "package.json" }}
          paths:
            - ./node_modules
      - run:
          name: lint
          command: npm run lint

Здесь используется кеш для ускорения последующих запусков.

Рабочая команда описана у package.json (eslint/tslint, или любая другая)

Пример запуса для php:

version: 2

jobs:
  build:
    docker:
      - image: circleci/php:7.2-cli-node-browsers
    steps:
      - checkout
      - restore_cache:
          keys:
          - composer-{{ checksum "composer.lock" }}
      - run:
          name: install
          command: composer install
      - save_cache:
          key: composer-{{ checksum "composer.lock" }}
          paths:
            - ./vendor
      - run:
          name: lint
          command: ./vendor/bin/php-cs-fixer --diff --dry-run --verbose fix ./src

Здесь также кешируются вендора.

Ресурсы:

  1. https://circleci.com/docs/2.0/
  2. https://circleci.com/docs/2.0/language-javascript/
  3. https://circleci.com/docs/2.0/language-php/
  4. https://github.com/harentius/attraction-wars-server/blob/master/.circleci/config.yml