Другие статьи этой серии:

Всем привет, сегодня вторая часть серии статей "Пишем социальную сеть на Ruby on Rails" и сегодня я планирую добавить CI/CD. Планировал еще добавить пользователей и devise, но решил выделить их в отдельную статью, ибо очень много информации будет, а статья получится слишком большая (может даже ее придется разбивать на две части). Начиная с этой статьи, буду стараться делать их поменьше (слишком объемная получилась прошлая, возможно, кому-то было тяжеловато ее читать). Прежде, чем мы начнем, если вы не читали первую часть, то очень рекомендую перейти по ссылке выше и ознакомиться с ней.

Немного теории

CI/CD — это комбинация непрерывной интеграции (continuous integration) и непрерывного развертывания (continuous delivery) программного обеспечения в процессе разработки.

CI/CD объединяет разработку, тестирования и развёртывания приложения. CI/CD очень часто используется в работе, поэтому будет большим плюсом , если вы будете иметь хотя бы немного опыта с ним.

Регистрация и добавление проекта

На своем проекте я буду использовать CircleCI. Прежде всего нам нужно зарегистрироваться на их сайте или же зайти в существующий аккаунт. Я рекомендую заходить, используя свой аккаунт на GitHub.

После того, как зашли, нам нужно подключить свой проект. Находите в списке проектов вашу социальную сеть и нажимаем эту кнопку:

Далее нам предложат несколько вариантов подключения, выбираем третий вариант (можно и другие два, но я рекомендую третий для настройки вручную). На следующем окне выбираем Ruby (удивлены, не правда ли)

У вас появится поле с набросками настроек, но можете смело заменять все на наш вариант (Напоминаю, если вы назвали свой проект не g_connect, то везде заменяйте название на свое):

#.circleci/config.yml

version: 2.1

orbs:
  ruby: circleci/ruby@0.1.2

jobs:
  build:
    docker:
      - image: circleci/ruby:3.0.3-node-browsers
        environment:
          - BUNDLER_VERSION: 2.2.32
          - RAILS_ENV: 'test'
      - image: circleci/mysql:8.0
        command: [--default-authentication-plugin=mysql_native_password]
        environment:
          MYSQL_ALLOW_EMPTY_PASSWORD: 'true'
          MYSQL_ROOT_HOST: '%'
          MYSQL_DATABASE: g_connect_test

    working_directory: ~/g_connect

    steps:
      - checkout

      - run: gem install bundler:2.2.32

      - restore_cache:
          name: Restore bundle cache
          key: g_connect-{{ checksum "Gemfile.lock" }}

      - run: bundle install --path vendor/bundle

      - save_cache:
          name: Store bundle cache
          key: g_connect-{{ checksum "Gemfile.lock" }}
          paths:
            - vendor/bundle

      - run: mv config/database.yml.ci config/database.yml 

      - run: yarn install

      - run: bundle exec rake db:create
      - run: bundle exec rake db:schema:load

      - run:
          name: run tests
          command: |
            mkdir /tmp/test-results
            TEST_FILES="$(circleci tests glob "spec/**/*_spec.rb" | \
              circleci tests split --split-by=timings)"
            sudo gem install bundler
            sudo gem install rspec
            sudo gem install rspec-core
            bundle exec rspec \
              --format progress \
              --format RspecJunitFormatter \
              --out /tmp/test-results/rspec.xml \
              --format progress \
              $TEST_FILES

      - store_test_results:
          path: /tmp/test-results
      - store_artifacts:
          path: /tmp/test-results
          destination: test-results
	

Настройки еще не закончены, но сохраняйте и переходите на свой GitHub. Нам нужно добавить еще один файл, чтобы все заработало. В нашей папке config создаем файл database.yml.ci (особо внимательные должны были заметить этот файл в нашем .circleci/config.yml) и пишем следующее (укажите своего пользователя БД и замените название БД, если выбрали другое название проекта):

#config/database.yml.ci

test:
  adapter: mysql2
  encoding: utf8mb4
  pool: 5
  username: 'root'
  port: 3306
  host: '127.0.0.1'
  database: g_connect_test

После этого заливайте изменения на GitHub и можете проверять. Все должно работать изумительно.

И на этом на сегодня все. В следующий раз мы будем создавать пользователей и настраивать devise, поэтому следующая статья будет достаточно объемной.

Надеюсь, вам всем было интересно читать эту статью. Если есть какие-то замечания либо же предложения - смело пишите в комментариях. Желаю всем поменьше ошибок в коде и побольше интересных проектов!

Комментарии (3)


  1. zorn-v
    21.02.2022 19:11
    -2

    Ожидание: я научу как правильно
    Реальность: повторяйте за мной и все будет чики-пуки

    Что то сделали и пофиг что )


    1. zandelok Автор
      21.02.2022 19:53

      Еще в первой статье я писал, что не буду уделять особого внимания основным понятиям и что статья не для совсем новичков. В файле настроек больше набор и порядок базовых команд, который человек, который хоть немного изучил ruby и фреймворк rails, должен знать. Единственная сложность в настройке CircleCi скорее "что нужно туда добавлять". Боюсь, если вам была не понятна данная статья, то либо вы не ruby разработчик, либо же не знаете основных вещей языка и вам слишком рано изучать данную тему.


      1. zorn_v
        21.02.2022 21:37
        -1

        > Боюсь, если вам была не понятна данная статья, то либо вы не ruby
        разработчик, либо же не знаете основных вещей языка и вам слишком рано
        изучать данную тему.

        Да все понятно. Надо в конфиге указать так. Потому что у меня получилось )

        А что это значит, ДА КОМУ ЭТО НУЖНО )

        PS. Да я не руби разработчик, но в симфонии тоже такие есть которые показывают "как у меня получилось", а не "как надо лучше сделать"

        И принципиально мы не отличаемся, если у вас ксенофобия.