質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
87.20%
Ruby on Rails 5

Ruby on Rails 5は、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Circle CI

Circle CIは、クラウド上に簡単にCI環境を構築できるWebサービスです。GitHubと連携させ、CIしたいリポジトリーを選択しビルド・テストを行います。チャット等を利用して結果を確認することが可能です。

受付中

ci上でChromeインストール失敗でRedisにつながらない

JuniorSirius
JuniorSirius

総合スコア38

Ruby on Rails 5

Ruby on Rails 5は、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Circle CI

Circle CIは、クラウド上に簡単にCI環境を構築できるWebサービスです。GitHubと連携させ、CIしたいリポジトリーを選択しビルド・テストを行います。チャット等を利用して結果を確認することが可能です。

1回答

0評価

0クリップ

307閲覧

投稿2022/01/03 08:49

編集2022/01/03 08:53

開発環境がDockerで、ローカルでパスするRSpecスペックを形成し、circleciでビルドを試みています。
しかし、ci上ではchromeのドライバーがまずうまくインストールされず、エラーが起きて半分程度のスペックが失敗し、原因としてRedis::CannotConnectError: Error connecting to Redis on redis:6379 (SocketError)となります。

ローカル(Docker)ではdocker-composeでコンテナ内でスペックは全てパスしましたが、ciでビルドができないとなるとこれは.circleci/config.ymlの書き方が問題だと思いますが調べ尽くしてもわかりません。
ご指摘いただけたら幸いです。

.circleci/config.yml

yml

version: 2 jobs: build: parallelism: 1 docker: - image: circleci/ruby:2.6.4-node-browsers #このイメージをstepsの実行時のプライマリコンテナとして使用 auth: username: siriusjunior password: $DOCKERHUB_PASSWORD environment: #コンテナの環境変数設定 BUNDLE_JOBS: 3 BUNDLE_RETRY: 3 BUNDLE_PATH: vendor/bundle #vendor/bundle 依存関係のファイルはbundle_installを後でrun RAILS_ENV: test REDIS_HOST: 127.0.0.1 - image: redis:latest auth: username: siriusjunior password: $DOCKERHUB_PASSWORD - image: circleci/mysql:5.7 #MySQLのバージョンを確認、データベースイメージ指定 environment: #データベースの環境変数設定 MYSQL_ALLOW_EMPTY_PASSWORD: yes #[MYSQL_ROOT_PASSWORD]のnull_valueの有効化 MYSQL_ROOT_PASSWORD: '' #null_valueで設定 steps: #CIで動作するコマンドを設定する必須キー - run: name: Chrome Driver Install command: | curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | sudo apt-key add - echo "deb https://dl.yarnpkg.com/debian/ stable main" | sudo tee /etc/apt/sources.list.d/yarn.list sudo apt-get update && sudo apt-get install -y unzip wget -N http://chromedriver.storage.googleapis.com/87.0.4280.88/chromedriver_linux64.zip -P ~/ unzip ~/chromedriver_linux64.zip -d ~/ rm ~/chromedriver_linux64.zip sudo chown root:root ~/chromedriver sudo chmod 755 ~/chromedriver sudo mv ~/chromedriver /usr/bin/chromedriver sh -c 'wget -q -O - https://dl-ssl.google.com/linux/linux_signing_key.pub | sudo apt-key add -' sudo sh -c 'echo "deb [arch=amd64] http://dl.google.com/linux/chrome/deb/ stable main" >> /etc/apt/sources.list.d/google-chrome.list' sudo apt-get update && sudo apt-get install -y google-chrome-stable background: true - checkout #作業ディレクトリにGitリポジトリをコピー - run: #コマンド実行 name: setup bundler #任意のrunの名前 command: | gem install bundler:2.2.24 bundle -v - restore_cache: #キャッシュがsave_cacheで存在していればリストアして、ビルドタイムを向上させる keys: #キャッシュの複数指定 - rails-demo-bundle-v2-{{ checksum "Gemfile.lock" }} - rails-demo-bundle-v2- - run: name: bundle install command: | #パスの指定とインストール実行 bundle config set --local path 'vendor/bundle' bundle install - save_cache: #キャッシュの保存 key: rails-demo-bundle-v2-{{ checksum "Gemfile.lock" }} paths: - vendor/bundle - restore_cache: #キャッシュがsave_cacheで存在していればリストアして、ビルドタイムを向上させる keys: #キャッシュの複数指定 - rails-demo-yarn-{{ checksum "yarn.lock" }} - rails-demo-yarn- - run: name: yarn install #Yarnパッケージのキャッシュ化 command: yarn install --cache-folder ~/.cache/yarn - save_cache: #Yarnキャッシュの保存 key: rails-demo-yarn-{{ checksum "yarn.lock" }} paths: - ~/.cache/yarn - run: name: wait database #依存関係の待機(MySQLの場合) command: dockerize -wait tcp://localhost:3306 -timeout 1m - run: name: setup database.yml #CircleCiで構築されるDBを反映 command: cp config/database.ci.yml config/database.yml - run: name: setup database #スキーマファイルからテーブル作成、--traceでfull_traceチェック command: bin/rails db:schema:load --trace - run: name: Rubocop #rubocopの起動 command: bundle exec rubocop --lint # local環境との不整合が疑われるため、chrome-driverのバージョンを更新する - run: name: update chromeDriver version command: bundle exec rake webdrivers:chromedriver:update - run: name: execute rspec #Rspecの実行 command: | #RspecJunitFormatterのgemでrspec結果をCIが読める,rspecファイルをglobしファイル名でrspecを並行させる--split-by=timings bundle exec rspec \ --format RspecJunitFormatter \ --out test_results/rspec.xml \ --format progress \ $(circleci tests glob "spec/**/*_spec.rb" | circleci tests split --split-by=timings) - store_test_results: #テスト結果のアップロード path: test_results - store_artifacts: path: tmp/screenshots/

config/database.ci.yml

yml

default: &default adapter: mysql2 encoding: utf8 pool: <%= ENV.fetch("RAILS_MAX_THREADS"){ 5 } %> port: 3306 host: '127.0.0.1' username: 'root' password: test: <<: *default database: circle_test

ビルドの共通しているrspecエラーを一部抜粋

61 tests failed out of 118 in rspec チャットルーム ユーザー詳細ページ チャットルームが存在しない場合 ユーザー詳細ページにてフォローするとDMボタンが出現すること - spec.system.chatrooms.chatrooms_spec spec/system/chatrooms/chatrooms_spec.rb Failure/Error: @user = login(params[:email], params[:password], params[:remember]) Redis::CannotConnectError: Error connecting to Redis on redis:6379 (SocketError) [Screenshot]: tmp/screenshots/failures_r_spec_example_groups_nested_nested_nested_ユーザー詳細ページにてフォローするとdmボタンが出現すること_846.png ./app/controllers/user_sessions_controller.rb:5:in `create' ------------------ --- Caused by: --- SocketError: getaddrinfo: Name or service not known ./app/controllers/user_sessions_controller.rb:5:in `create'

chromeインストールエラー

OK deb https://dl.yarnpkg.com/debian/ stable main Get:1 http://deb.debian.org/debian buster InRelease [122 kB] Get:2 http://security.debian.org/debian-security buster/updates InRelease [65.4 kB] Get:3 http://deb.debian.org/debian buster-updates InRelease [51.9 kB] Get:4 https://dl.yarnpkg.com/debian stable InRelease [17.1 kB] Get:5 https://dl.yarnpkg.com/debian stable/main amd64 Packages [10.5 kB] Get:6 https://dl.yarnpkg.com/debian stable/main all Packages [10.5 kB] Reading package lists... Done E: Repository 'http://security.debian.org/debian-security buster/updates InRelease' changed its 'Suite' value from 'stable' to 'oldstable' N: This must be accepted explicitly before updates for this repository can be applied. See apt-secure(8) manpage for details. N: Repository 'http://deb.debian.org/debian buster InRelease' changed its 'Version' value from '10.1' to '10.11' E: Repository 'http://deb.debian.org/debian buster InRelease' changed its 'Suite' value from 'stable' to 'oldstable' N: This must be accepted explicitly before updates for this repository can be applied. See apt-secure(8) manpage for details. E: Repository 'http://deb.debian.org/debian buster-updates InRelease' changed its 'Suite' value from 'stable-updates' to 'oldstable-updates' N: This must be accepted explicitly before updates for this repository can be applied. See apt-secure(8) manpage for details. --2022-01-03 08:17:50-- http://chromedriver.storage.googleapis.com/87.0.4280.88/chromedriver_linux64.zip Resolving chromedriver.storage.googleapis.com (chromedriver.storage.googleapis.com)... 172.253.122.128, 2607:f8b0:4004:82f::2010 Connecting to chromedriver.storage.googleapis.com (chromedriver.storage.googleapis.com)|172.253.122.128|:80... connected. HTTP request sent, awaiting response... 200 OK Length: 6121623 (5.8M) [application/zip] Saving to: ‘/home/circleci/chromedriver_linux64.zip’ chromedriver_linux6 100%[===================>] 5.84M --.-KB/s in 0.06s 2022-01-03 08:17:50 (99.8 MB/s) - ‘/home/circleci/chromedriver_linux64.zip’ saved [6121623/6121623] Archive: /home/circleci/chromedriver_linux64.zip inflating: /home/circleci/chromedriver OK Get:1 http://security.debian.org/debian-security buster/updates InRelease [65.4 kB] Get:2 http://deb.debian.org/debian buster InRelease [122 kB] Get:3 http://deb.debian.org/debian buster-updates InRelease [51.9 kB] Get:4 http://dl.google.com/linux/chrome/deb stable InRelease [1811 B] Hit:5 https://dl.yarnpkg.com/debian stable InRelease Get:6 http://dl.google.com/linux/chrome/deb stable/main amd64 Packages [1091 B] Reading package lists... Done E: Repository 'http://security.debian.org/debian-security buster/updates InRelease' changed its 'Suite' value from 'stable' to 'oldstable' N: This must be accepted explicitly before updates for this repository can be applied. See apt-secure(8) manpage for details. N: Repository 'http://deb.debian.org/debian buster InRelease' changed its 'Version' value from '10.1' to '10.11' E: Repository 'http://deb.debian.org/debian buster InRelease' changed its 'Suite' value from 'stable' to 'oldstable' N: This must be accepted explicitly before updates for this repository can be applied. See apt-secure(8) manpage for details. E: Repository 'http://deb.debian.org/debian buster-updates InRelease' changed its 'Suite' value from 'stable-updates' to 'oldstable-updates' N: This must be accepted explicitly before updates for this repository can be applied. See apt-secure(8) manpage for details. Exited with code exit status 100 CircleCI received exit code 100

良い質問の評価を上げる

以下のような質問は評価を上げましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

気になる質問をクリップする

クリップした質問は、後からいつでもマイページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

  • プログラミングに関係のない質問
  • やってほしいことだけを記載した丸投げの質問
  • 問題・課題が含まれていない質問
  • 意図的に内容が抹消された質問
  • 過去に投稿した質問と同じ内容の質問
  • 広告と受け取られるような投稿

評価を下げると、トップページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

まだ回答がついていません

会員登録して回答してみよう

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
87.20%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問

同じタグがついた質問を見る

Ruby on Rails 5

Ruby on Rails 5は、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Circle CI

Circle CIは、クラウド上に簡単にCI環境を構築できるWebサービスです。GitHubと連携させ、CIしたいリポジトリーを選択しビルド・テストを行います。チャット等を利用して結果を確認することが可能です。