未経験からエンジニアに転職を目指しています。
本日githubactionsでDocker環境を構築し、Rspecを実行することが出来たので備忘録として投稿します。
少しでもお役に立つことができれば幸いです。
※github actionsを用いたDocker環境構築は以下の記事を参考にさせて頂きました。
https://codelabo.com/posts/20201128164634
#前提
- rails 5.2.4(rails6.0以降の場合はおそらく動作しないです)
- dockerを用いて開発をしている
- docker-composeを使用している
- 本番環境にはrbenvを使用している
※上記を満たしていても、動作しないことがあるかもしれませんがご容赦ください
#rails.yml
rails.yml
name: Rails CI/CD
on:
push:
branches: [処理を実行するためのトリガーにしたいブランチ名]
#例 masterとした場合はmasterに変更が加わった際に処理が実行されます
jobs:
#rspecの実行
rspec: #名前は何でも良いです
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Setup docker
shell: bash
run: |
docker-compose build
docker-compose run web rails db:create
env:
RAILS_ENV: test
- name: Rspec
run: |
docker-compose run web bundle exec rspec
env:
RAILS_ENV: test
#ここからデプロイ
build:
runs-on: ubuntu-latest
needs: rspec #ここは上記の任意につけた名前が入ります。Rspec実行が完了しない限り、デプロイが走らないようにしています。並列で処理を実行したい場合はこの行は削除してください。
steps:
- uses: actions/checkout@v2
- name: Deploy
env:
PRIVATE_KEY: ${{ secrets.PRIVATE_KEY }}
USER_NAME: ${{ secrets.USER_NAME }}
HOST_NAME: ${{ secrets.HOST_NAME }}
run: |
echo "$PRIVATE_KEY" > private_key && chmod 600 private_key
ssh -o StrictHostKeyChecking=no -i private_key ${USER_NAME}@${HOST_NAME} 'cd あなたのアプリ名 &&
git pull origin Pullしたいブランチ名 &&
~/.rbenv/shims/bundle install &&
~/.rbenv/shims/bundle exec rails assets:precompile RAILS_ENV=production &&
~/.rbenv/shims/bundle exec rails db:migrate RAILS_ENV=production &&
if [[ -e tmp/pids/puma.pid ]];then kill $(cat tmp/pids/puma.pid); echo kill puma process;fi &&
~/.rbenv/shims/rails s -e production'
#最後に
開発にはdockerを用いたものの、dockerイメージをECR,ECSにデプロイする方法がわからず、
デプロイは通常の方法で行いましたが、ようやくdockerの恩恵を感じることが出来た気がします!笑
ただ、上記の方法では毎回コンテナをビルドし直すため、デプロイに時間がかかってしまう・・・
そのため、dockerのキャッシュをもたせる方法を模索中です!(わかる方いらっしゃれば教えて下さい)
以上です!最後まで読んでいただきありがとうございました!