### 環境
– 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で作成するの???
あああああああああ