You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在GitHub Actions中推送.NET4网站制品至远程服务器

实现GitHub Actions构建.NET4项目并部署到远程服务器

一、准备服务器访问权限

  • 在GitHub仓库的「Settings」→「Secrets and variables」→「Actions」中添加以下机密项:
    • SSH_PRIVATE_KEY:远程服务器的无密码SSH私钥
    • SSH_HOST:服务器IP地址或域名
    • SSH_USERNAME:服务器登录用户名
    • REMOTE_FOLDER:服务器上的目标部署文件夹路径(例如/var/www/dotnet-site)

二、编写完整的GitHub Actions工作流

在仓库的.github/workflows目录下创建build-and-deploy.yml文件,内容如下:

name: Build & Deploy .NET4 Web Site

# 触发规则:推送main分支时自动执行,或手动触发
on:
  push:
    branches: [ main ]
  workflow_dispatch:

jobs:
  build:
    runs-on: windows-latest
    steps:
      # 拉取仓库代码
      - name: Checkout code
        uses: actions/checkout@v4

      # 配置MSBuild工具(用于构建.NET4项目)
      - name: Setup MSBuild
        uses: microsoft/setup-msbuild@v2

      # 构建并发布.NET4项目到指定目录
      - name: Build & Publish
        run: |
          # 替换为你的项目文件名,OutputPath指定制品输出目录
          msbuild YourWebProject.csproj /p:Configuration=Release /p:OutputPath=./publish

      # 可选:将构建制品上传到GitHub Artifacts用于备份
      - name: Upload Build Artifacts
        uses: actions/upload-artifact@v4
        with:
          name: site-build
          path: ./publish

  deploy:
    needs: build  # 等待build任务完成后执行部署
    runs-on: ubuntu-latest
    steps:
      # 下载构建好的制品
      - name: Download Artifacts
        uses: actions/download-artifact@v4
        with:
          name: site-build
          path: ./deploy-files

      # 通过SSH同步制品到远程服务器
      - name: Deploy to Remote Server
        uses: appleboy/ssh-action@v1.0.3
        with:
          host: ${{ secrets.SSH_HOST }}
          username: ${{ secrets.SSH_USERNAME }}
          key: ${{ secrets.SSH_PRIVATE_KEY }}
          script: |
            # 确保目标文件夹存在,不存在则创建
            mkdir -p ${{ secrets.REMOTE_FOLDER }}
            # 同步本地制品到服务器(覆盖旧文件,保留文件权限)
            rsync -avz --delete ./deploy-files/ ${{ secrets.REMOTE_FOLDER }}/

三、关键配置说明

  1. 构建命令调整:根据你的项目结构修改YourWebProject.csproj文件名;如果使用Visual Studio的发布配置文件,可替换为msbuild YourWebProject.csproj /p:Configuration=Release /p:DeployOnBuild=true /p:PublishProfile=FolderProfile。
  2. SSH连接验证:确保服务器已将私钥对应的公钥添加到~/.ssh/authorized_keys文件中,且服务器防火墙允许GitHub Actions的IP访问SSH端口(默认22)。
  3. rsync替代方案:如果服务器未安装rsync,可在script中先执行sudo apt-get install rsync -y(Ubuntu系统),或改用scp命令:scp -r ./deploy-files/* ${{ secrets.SSH_USERNAME }}@${{ secrets.SSH_HOST }}:${{ secrets.REMOTE_FOLDER }}。
  4. 触发方式:
    • 自动触发:推送代码到main分支时,工作流自动完成构建+部署;
    • 手动触发:在GitHub仓库的「Actions」页面找到该工作流,点击「Run workflow」手动启动。

四、常见问题排查

  • 构建失败:检查MSBuild是否正确安装、项目文件路径是否匹配、构建参数是否符合项目配置;
  • 部署失败:检查SSH密钥有效性、服务器目标文件夹权限、网络连接是否正常。

内容的提问来源于stack exchange,提问作者Johan Grobler

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.09 08:30:47