github action 自动化部署asp.net core应用到服务器
- 在自己的仓库里工作流
  
- 编辑workflow
  
- 贴上自己的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][2]
- 提交合并自己的workflow,如果合并到master的话,刚好能触发这个workflow就可以看到执行的过程
  
  
 
                    
                     
                    
                 
                    
                
 
 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号