Circle CIでEC2にデプロイ

### 環境
– vagrant Amazon Linux2
– Laravel7.2.1, Mysql8.0

### 前提
– .circleci/config.ymlを配置済み
– git pushすると、phpunitが走る
– これにデプロイのjobを追加したい

公式: https://circleci.com/docs/ja/2.0/deployment-integrations/

公式のソースコード:
-> runコマンドを見るとgit pushでデプロイしていますね。

deploy:
    machine:
        enabled: true
    working_directory: ~/circleci-demo-workflows
    environment:
      HEROKU_APP: "sleepy-refuge-55486"
    steps:
      - checkout
      - run:
          name: Master を Heroku にデプロイ
          command: |
            git push https://heroku:$HEROKU_API_KEY@git.heroku.com/$HEROKU_APP.git master

workflows:
  version: 2
  build-and-deploy:
    jobs:
      - build
      - deploy:
          requires:
            - build
          filters:
            branches:
              only: sequential-branch-filter

ec2にsshログインしているので、これをconfig.ymlに書いてやってみたいと思います。

ssh ec2-user@{publicIP} -i  ~/.ssh/***.pem

### 1. テスト用のEC2インスタンス作成
– Amazon Linux 2 AMI (HVM), SSD Volume Type 64bit
– t2.nano
– public subnet
– Auto-assign Public IP: enable
– gp2 8GiB
– SecurityGroup: SSH 0.0.0.0/0
– keypair: create | select

->SSHログインテスト
ssh ec2-user@{publicIP} -i ~/.ssh/***.pem

### 2. EC2にGitインストール
// インストール手順は省略
$ git –version
git version 2.19.2

$ cd /var
$ sudo mkdir www

### 3. CircleCI Project setting
CircleCIのコンソールにログインし、対象リポジトリのproject settingのページに遷移
– Environment Variables
KEY: PUBLIC_IP, VALUE: **.***.***.**
KEY: USER_NAME, VALUE: ec2-user

– SSH Permissions
Hostname: 任意
Private Key:秘密鍵の中身

-----BEGIN RSA PRIVATE KEY-----
// 省略
-----END RSA PRIVATE KEY-----

### 4.config.ymlにdeploy追加

version: 2
jobs:
  build:
    // buildは省略
  deploy:
    machine:
      image: circleci/classic:edge
    steps:
      - checkout
      - add_ssh_keys:
      - run: ssh ${USER_NAME}@${PUBLIC_IP} 'cd /var/www && git pull

workflows:
  version: 2
  build_and_deploy:
    jobs:
      - build
      - deploy:
        requires:
          - build
        filters:
          branches:
            only: master

### 5.git push
$ git push -u origin master
$ echo -e “Host github.com\n\tStrictHostKeyChecking no\n” > ~/.ssh/config

#!/bin/bash -eo pipefail
ssh ${USER_NAME}@${PUBLIC_IP} ‘cd /var/www && git pull’
The authenticity of host ‘************* (*************)’ can’t be established.

buildはsuccessだがdeployが何度やってもダメだ。。。丸一日潰れた。

ん?

EC2 インスタンス上で秘密鍵 (pem ファイル) を作成して CircleCI に登録する必要があります。

秘密鍵はec2で作成するの???
あああああああああ