github action 自动化部署asp.net core应用到服务器

  1. 在自己的仓库里工作流
  2. 编辑workflow
  3. 贴上自己的yml脚本

name: ASP.NET Core Deployment
on:
push:
branches:
- master # 你可以根据需要更改分支名称
jobs:
deploy:
runs-on: ubuntu-latest # 使用 Ubuntu 环境
steps:
- name: Checkout Repository
uses: actions/checkout@v2
- name: Setup .NET Core
uses: actions/setup-dotnet@v2
with:
dotnet-version: '3.1' # 你可以根据需要更改 .NET Core 版本
- name: Build and Publish
run: |
dotnet publish -c Release -r linux-x64 -o out
- name: Copy Files to Server
uses: appleboy/scp-action@master
with:
host: ${{secrets.HOST}}
username: ${{secrets.USERNAME}}
password: ${{secrets.PASSWORD}}
port: 22
source: "out/"
target: "/root/test/deploy"
- name: SSH into Server
uses: appleboy/ssh-action@v1.0.3
with:
host: ${{secrets.HOST}}
username: ${{secrets.USERNAME}}
password: ${{secrets.PASSWORD}}
port: 22
script: |
## 找到dotnet进程并杀死
dotnet_processes=$(ps aux | grep 'dotnet' | grep -v 'grep' | awk '{print $2}')
if [ -n "$dotnet_processes" ]; then
echo "Found dotnet processes: $dotnet_processes"
kill -9 $dotnet_processes
echo "Dotnet processes killed."
else
echo "No dotnet processes found."
fi
##进入目标目录启动服务
cd /root/test/deploy/out
nohup dotnet ***.dll > app.log 2>&1 &

然后解释一下整个过程
1. 在github的服务器上把代码checkout
2. 在github的服务器上安装.NET Core的SDK(目的是为了下一步编译)
3. 用SDK把代码build到目标目录out
4. 使用scp把out目录复制到自己的服务器上
5. 使用SSH连接服务器到刚解压后的目录,杀死之前的进程并开始新的服务的命令


  1. 提交合并自己的workflow,如果合并到master的话,刚好能触发这个workflow就可以看到执行的过程


  1. 之前处理的时候需要SSH连自己服务器的时候用Key连,把私钥放好之后一直连不上,最后还是用password连了。 ↩︎

  2. 之前处理的时候没有加上杀死进程的那一段bash脚本,会导致直接重启服务获取不到更新之后的新加的服务。 ↩︎

posted @   拎着红杯子的黄鸭子  Views(57)  Comments(0Edit  收藏  举报
相关博文:
阅读排行:
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
点击右上角即可分享
微信分享提示