circleCiを使ってherokuにrailsアプリをデプロイしたい
解決したいこと
現在、ポートフォリオをRailsでapiを作成しており、circleciを使ってherokuへデプロイしたいと思っています。
しかし、何度試してもエラーになってしまいうまくいきません。
発生している問題・エラー
config.ymlの設定によってエラー文が異なります。
デプロイの定義を下記のみにした場合
- run:
name: git push heroku master
command: git push https://heroku:$HEROKU_API_KEY@git.heroku.com/$HEROKU_APP_NAME.git master
heroku loginせよ またはAPI keyで認証してくれとエラーが出て
デプロイの定義にheroku loginを追記すると
- run:
name: heroku login
command: heroku login
- run:
name: git push heroku master
command: git push https://heroku:$HEROKU_API_KEY@git.heroku.com/$HEROKU_APP_NAME.git master
Heroku_API_KEYでログインできないとエラーになります。
該当するソースコード
circleci/config.yml
version: 2.1
orbs:
ruby: circleci/ruby@1.4.0
heroku: circleci/heroku@1.2.6
# jobの定義
jobs:
build:
docker:
- image: cimg/ruby:3.0.0
#githubのコードからコピー
working_directory: ~/cooklog-api
steps:
- checkout:
path: ~/cooklog-api
#orbs:bundle installなどを実行するコマンド
- ruby/install-deps
test:
docker:
- image: cimg/ruby:3.0.0
- image: cimg/mysql:8.0
command: |
mysqld --default-authentication-plugin=mysql_native_password
environment:
# databese.ymlに合わして設定する
MYSQL_ROOT_PASSWORD: password
MYSQL_DATABASE: cooklog_test
MYSQL_ROOT_USER: root
# testジョブ全体の環境変数
environment:
BUNDLE_JOBS: "3"
BUNDLE_RETRY: "3"
APP_DATABASE_HOST: 127.0.0.1
RAILS_ENV: test
working_directory: ~/cooklog-api
# stepsで実行するJobを定義
steps:
- checkout:
path: ~/cooklog-api
- ruby/install-deps
- run:
name: Database setup
command: bundle exec rake db:create db:migrate
- run:
name: test
command: bundle exec rspec
deploy:
docker:
- image: cimg/ruby:3.0.0
# - auth:
# username: kiyoma
# password: $DOCKERHUB_PASSWORD
steps:
- checkout
#dockerコマンドが使えるように
- setup_remote_docker:
version: 20.10.11
- heroku/install
- run:
name: heroku login
command: heroku login
- run:
name: git push heroku master
command: git push https://heroku:$HEROKU_API_KEY@git.heroku.com/$HEROKU_APP_NAME.git master
# 実行順
workflows:
version: 2
build_test_and_deploy:
jobs:
- build
- test:
requires:
- build
- deploy:
requires:
- test
context:
- cooklog-api
filters:
branches:
only: master
heroku.ymlを使ってデプロイの設定はしています
heroku.yml
setup:
addons:
- plan: cleardb
config:
RACK_ENV: production
RAILS_ENV: production
RAILS_LOG_TO_STDOUT: enabled
RAILS_SERVE_STATIC_FILES: enabled
build:
docker:
web: Dockerfile
config:
WORKDIR: app
run:
web: bundle exec puma -C config/puma.rb
自分で試したこと
手元で手動でgit push heroku masterはできることを確認しています。
また、デプロイコマンドが悪いのかと思い、
-heroku/deploy-via-git
同様に認証できないと言われています。
かれこれ1週間ぐらい詰まってます。
初学者ゆえ、設定が悪いのか原因がつかめていません。
アドバイスなどいただけるとありがたいです。
参考記事
https://myownpace.netlify.app/circleci_heroku_doesnot_work/
0