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

Моя цель - предложение широкого ассортимента товаров и услуг на постоянно высоком качестве обслуживания по самым выгодным ценам.

Прежде чем перейти к статье, хочу вам представить, экономическую онлайн игру Brave Knights, в которой вы можете играть и зарабатывать. Регистируйтесь, играйте и зарабатывайте!

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

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

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

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

Источник: https://habr.com/ru/post/652657/


Интересные статьи

Интересные статьи

Длительная однообразная работа неизбежно вызывает приступы автоматизации. На этот раз предпримем попытку автоматизировать настройку устройств защиты электросетей напряжением 6 — 35 кВ. Самозаро...
Мы продолжаем создавать клон Uniswap V1! Наша реализация почти готова: мы реализовали все основные механики смарт-контракта Биржи, включая функции ценообразования, обмена, выпуска LP-токенов и сбора к...
25 февраля автор курса «Разработчик C++» в Яндекс.Практикуме Георгий Осипов рассказал о новом этапе языка C++ — Стандарте C++20. В лекции сделан обзор всех основных нововведений Станд...
Пока за окном творился греческий и бумажный апокалипсис, а макаронный монстр пожирал вермишель на полках мегамаркетов, в стенах НИИ плодотворно кипела работа над измерениями тепловых потерь о...
Первая часть Первая статья еще не успела остыть, а я решил не держать вас в интриге и написать продолжение. Итак, в предыдущей статье мы поговорили о линковке, загрузке файла ядра и первичной и...