实现逻辑
- 使用GitHub Action监听到代码仓库的提交
push 操作,触发工作流 - 拉取最新代码推送到服务器
- 安装依赖
composer install
服务器端配置
安装composer
curl -sS https://getcomposer.org/installer | php
mv composer.phar /usr/local/bin/composer
全局配置:composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/
取消配置:composer config -g --unset repos.packagist
生成SSH密钥对
ssh-keygen -t rsa -f test
配置公钥
cat test.pub >> authorized_keys
GitHub仓库配置
设置仓库Secret
打开指定代码仓库,点击 Settings 标签,找到 Secrets 设定,添加如下Secret以备后续使用
Name | Value | 说明 |
---|
SERVER_KEY | ----BEGIN RSA PRIVATE KEY-----… | ssh的私钥,就是服务器建立ssh的私钥 | SERVER_HOST | 如:127.0.0.1 | 服务器连接地址 | SERVER_PORT | 如:22(默认) | 服务器连接端口 | SERVER_USERNAME | 如:root | 服务器登录用户名 | SERVER_DESTINATION | 如:/tmp/test | 部署代码的服务器目录 |
编写工作流
在仓库根目录中创建.github/workflows/deploy.yml,yml文件名可自定义,文件内容如下:
name: test
on:
push:
branches: [ master ]
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Deploy to Server
uses: AEnterprise/rsync-deploy@v1.0
env:
DEPLOY_KEY: ${{ secrets.SERVER_KEY }}
ARGS: -avz --no-owner --no-group --no-perms --progress --exclude='.*' --exclude='/vendor' --exclude='storage/logs/' --delete
SERVER_PORT: ${{ secrets.SERVER_PORT }}
FOLDER: ./
SERVER_IP: ${{ secrets.SERVER_HOST }}
USERNAME: ${{ secrets.SERVER_USERNAME }}
SERVER_DESTINATION: /tmp/laravel-test
- name: Execute Script
uses: appleboy/ssh-action@master
with:
host: ${{ secrets.SERVER_HOST }}
username: ${{ secrets.SERVER_USERNAME }}
key: ${{ secrets.SERVER_KEY }}
script: |
cd /tmp/laravel-test
chmod -R 777 storage/
composer install
|