Как стать автором
Обновить

Пишем социальную сеть на Ruby on Rails. Часть 2

Время на прочтение3 мин
Количество просмотров2.7K

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

Всем привет, сегодня вторая часть серии статей "Пишем социальную сеть на 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, поэтому следующая статья будет достаточно объемной.

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

Теги:
Хабы:
Всего голосов 4: ↑4 и ↓0+4
Комментарии3

Публикации

Истории

Работа

Ruby on Rails
10 вакансий
Программист Ruby
13 вакансий

Ближайшие события

19 августа – 20 октября
RuCode.Финал. Чемпионат по алгоритмическому программированию и ИИ
МоскваНижний НовгородЕкатеринбургСтавропольНовосибрискКалининградПермьВладивостокЧитаКраснорскТомскИжевскПетрозаводскКазаньКурскТюменьВолгоградУфаМурманскБишкекСочиУльяновскСаратовИркутскДолгопрудныйОнлайн
3 – 18 октября
Kokoc Hackathon 2024
Онлайн
10 – 11 октября
HR IT & Team Lead конференция «Битва за IT-таланты»
МоскваОнлайн
25 октября
Конференция по росту продуктов EGC’24
МоскваОнлайн
7 – 8 ноября
Конференция byteoilgas_conf 2024
МоскваОнлайн
7 – 8 ноября
Конференция «Матемаркетинг»
МоскваОнлайн