0
0

More than 3 years have passed since last update.

【github actionsで自動デプロイ】Docker環境でRspecを実行し、EC2へデプロイ!!

Posted at

未経験からエンジニアに転職を目指しています。

本日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のキャッシュをもたせる方法を模索中です!(わかる方いらっしゃれば教えて下さい)

以上です!最後まで読んでいただきありがとうございました!

0
0
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0