Circleciを使ってEC2へ自動デプロイ
完成したymlファイル(testは容量がかかるので、コメントアウトにしている)
version: 2 jobs: # test: # machine: # image: circleci/classic:edge # steps: # - checkout # - run: # name: docker-compose build # command: docker-compose build # - run: # name: docker-compose up # command: docker-compose up -d # - run: # name: sleep for waiting db # command: sleep 120 # - run: # name: rails db:create # command: docker-compose run app bin/rails db:create # - run: # name: rails db:migrate (skip db:seed) # command: docker-compose run app bin/rails db:migrate # - run: # name: rails db:test:prepare # command: docker-compose run app bin/rails db:test:prepare # - run: # name: rails webpacker:install # command: docker-compose run app bin/rails webpacker:install # - run: # name: rspec # command: docker-compose run app rspec # - run: # name: docker-compose down # command: docker-compose down # deploy ジョブ: EC2 に SSH 接続して、デプロイを実行する deploy: machine: image: circleci/classic:edge steps: - checkout # CircleCIに登録した秘密鍵を呼び出す。 - add_ssh_keys: fingerprints: #sshの暗号化されたもの。 - 19:a4:94:21:15:c9:5c:c6:75:8a:94:4a:9c:1f:37:da - run: ssh ${USER_NAME}@${HOST_NAME} 'cd myapp && git pull' # - run: ssh ${USER_NAME}@${HOST_NAME} 'cd myapp && git pull && docker-compose run python ./manage.py migrate' workflows: version: 2 test_and_deploy: jobs: # - test # requiresなどが必要ない時は、:はいらない。今はdeployのみを行っているので、 # - deploy: - deploy # requires: # - test filters: branches: only: main
一番時間がかかったところはいつもssh周り
その他に、