Другие статьи этой серии:
Всем привет, сегодня вторая часть серии статей "Пишем социальную сеть на 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
, поэтому следующая статья будет достаточно объемной.
Надеюсь, вам всем было интересно читать эту статью. Если есть какие-то замечания либо же предложения - смело пишите в комментариях. Желаю всем поменьше ошибок в коде и побольше интересных проектов!
zorn-v
Ожидание: я научу как правильно
Реальность: повторяйте за мной и все будет чики-пуки
Что то сделали и пофиг что )
zandelok Автор
Еще в первой статье я писал, что не буду уделять особого внимания основным понятиям и что статья не для совсем новичков. В файле настроек больше набор и порядок базовых команд, который человек, который хоть немного изучил ruby и фреймворк rails, должен знать. Единственная сложность в настройке CircleCi скорее "что нужно туда добавлять". Боюсь, если вам была не понятна данная статья, то либо вы не ruby разработчик, либо же не знаете основных вещей языка и вам слишком рано изучать данную тему.
zorn_v
> Боюсь, если вам была не понятна данная статья, то либо вы не ruby
разработчик, либо же не знаете основных вещей языка и вам слишком рано
изучать данную тему.
Да все понятно. Надо в конфиге указать так. Потому что у меня получилось )
А что это значит, ДА КОМУ ЭТО НУЖНО )
PS. Да я не руби разработчик, но в симфонии тоже такие есть которые показывают "как у меня получилось", а не "как надо лучше сделать"
И принципиально мы не отличаемся, если у вас ксенофобия.