概述
我尝试使用Laravel Envoy和CircleCI部署到EC2。
https://laravel.com/docs/8.x/envoy
当合并到Github上的master分支时,应将其部署到EC2上的生产服务器上,而当合并到development分支时,应将其部署到登台服务器上。
假设
设定
- 生产环境(生产)和登台环境(登台)作为EC2存在,并且在AWS上分配了EIP。
- 可以从EC2拉Git
- 在Github上拥有master和开发分支的仓库
- 已链接,以便在推送到Github存储库时将执行CircleCI
版本
PHP:7.4.7
Laravel特使:2.3.1
步骤
Laravel Envoy设置
1 | $ composer require laravel/envoy |
这一次,只需如下创建Envoy.blade.php。
Envoy.blade.php
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | @servers(['production' => '[email protected]', 'staging' => '[email protected]']) @setup $docRoot = '/var/www/html'; @endsetup @story('deploy') git @endstory @task('git', ['on' => $server]) cd {{ $docRoot }} git pull origin {{ $branch }} @endtask @finished echo "${server}へデプロイしました!"; @endfinished |
从CircleCI部署到EC2
的设置
SSH从CircleCI到EC2的设置
在
CircleCI项目设置页面上,转到
注册时,将显示
使用创建EC2时生成的密钥对不是必需的,但是当生成新密钥时,有必要如下将公钥添加到
1 | $ cat id_rsa.pub >> authorized_keys |
记录环境变量
在
CircleCI项目设置页面上,转到
配置设置
.circleci / config.yml
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 | version: 2 jobs: build: docker: - image: circleci/php:7.4-apache - image: circleci/postgres:11-alpine environment: POSTGRES_DB: default_test POSTGRES_USER: postgres POSTGRES_PASSWORD: postgres steps: - checkout ##### ??中略?? ##### # ---------------------------------------------------------------------------- # Deploy - add_ssh_keys: fingerprints: - "${KEY_FINGERPRINT}" - "${KEY_FINGERPRINT_DEV}" - run: name: Start ssh-keyscan command: ssh-keyscan -p ${SSH_PORT} ${HOST_NAME} >> ~/.ssh/known_hosts - run: name: Start ssh-keyscan(dev) command: ssh-keyscan -p ${SSH_PORT} ${HOST_NAME_DEV} >> ~/.ssh/known_hosts - run: name: Deploy to EC2 server command: | if [ "${CIRCLE_BRANCH}" == "master" ]; then ./vendor/bin/envoy run deploy --server=production --branch=master elif [ "${CIRCLE_BRANCH}" == "develop" ]; then ./vendor/bin/envoy run deploy --server=staging --branch=develop fi |
操作检查
Push
到既不是主控也不是开发的分支
部署已完成,没有执行。
并入开发
拉显影分支。
并入母版
拉主分支。
印象数
我认为无关的分支中包含不必要的处理是不好的。
如果有更好的方法,请告诉我。
看到
- 在AES EC2上使用ssh成功进行git克隆的步骤
- 指定要与Laravel Envoy一起部署并部署的服务器
- CircleCI 2.0私人最佳实践