name: 后端部署(API,IdentityServer4,Gateways) # 指定名称
on:
push:
branches:
- main # 代码推送到main分支的时候触发jobs
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Install Dotnet 6.x
uses: actions/setup-dotnet@v1
with:
dotnet-version: "6.0" # 安装Dotnet 环境
include-prerelease: True
- name: 编译
run: dotnet build aspnet-core/Lion.AbpPro.sln # 编译项目
- name: 单元测试
run: dotnet test aspnet-core/services/test/Lion.AbpPro.Domain.Tests/Lion.AbpPro.Domain.Tests.csproj # 运行单元测试
- name: 发布->Lion.AbpPro.HttpApi.Host
run: dotnet publish aspnet-core/services/host/Lion.AbpPro.HttpApi.Host/Lion.AbpPro.HttpApi.Host.csproj -o Lion.AbpPro.HttpApi.Host # 发布Host项目
- name: 发布->Lion.AbpPro.IdentityServer
run: dotnet publish aspnet-core/services/host/Lion.AbpPro.IdentityServer/Lion.AbpPro.IdentityServer.csproj -o Lion.AbpPro.IdentityServer # 发布IdentityServer项目
- name: 发布->Lion.AbpPro.IdentityServer
run: dotnet publish aspnet-core/gateways/Lion.AbpPro.WebGateway/Lion.AbpPro.WebGateway.csproj -o Lion.AbpPro.WebGateway # 发布网关项目
- name: 部署->Lion.AbpPro.HttpApi.Host
uses: easingthemes/ssh-deploy@v2.2.11
env:
SSH_PRIVATE_KEY: ${{ secrets.SSH_PRIVATE_KEY }} # 服务器生成的ssh key 在github 下添加secret
ARGS: "-avzr --delete --exclude 'appsettings.json'" # 把发布好的项目复制到服务器,并且删除服务器上的/root/wwwroot/Lion.AbpPro.HttpApi.Host下的文件但是不包括appsettings.json
SOURCE: "Lion.AbpPro.HttpApi.Host" # 对应上面发布好的目录
REMOTE_HOST: ${{ secrets.REMOTE_HOST }} # 服务器公网ip地址
REMOTE_USER: ${{ secrets.REMOTE_USER }} # 用户名
TARGET: "/root/wwwroot" # 发布到服务器指定目录
- name: 部署->Lion.AbpPro.IdentityServer
uses: easingthemes/ssh-deploy@v2.2.11
env:
SSH_PRIVATE_KEY: ${{ secrets.SSH_PRIVATE_KEY }}
ARGS: "-avzr --delete --exclude 'appsettings.json'"
SOURCE: "Lion.AbpPro.IdentityServer"
REMOTE_HOST: ${{ secrets.REMOTE_HOST }}
REMOTE_USER: ${{ secrets.REMOTE_USER }}
TARGET: "/root/wwwroot"
- name: 部署->Lion.AbpPro.WebGateway
uses: easingthemes/ssh-deploy@v2.2.11
env:
SSH_PRIVATE_KEY: ${{ secrets.SSH_PRIVATE_KEY }}
ARGS: "-avzr --delete --exclude 'appsettings.json'"
SOURCE: "Lion.AbpPro.WebGateway"
REMOTE_HOST: ${{ secrets.REMOTE_HOST }}
REMOTE_USER: ${{ secrets.REMOTE_USER }}
TARGET: "/root/wwwroot"