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