如何在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 }}/
三、关键配置说明
- 构建命令调整:根据你的项目结构修改
YourWebProject.csproj文件名;如果使用Visual Studio的发布配置文件,可替换为msbuild YourWebProject.csproj /p:Configuration=Release /p:DeployOnBuild=true /p:PublishProfile=FolderProfile。 - SSH连接验证:确保服务器已将私钥对应的公钥添加到
~/.ssh/authorized_keys文件中,且服务器防火墙允许GitHub Actions的IP访问SSH端口(默认22)。 - rsync替代方案:如果服务器未安装rsync,可在script中先执行
sudo apt-get install rsync -y(Ubuntu系统),或改用scp命令:scp -r ./deploy-files/* ${{ secrets.SSH_USERNAME }}@${{ secrets.SSH_HOST }}:${{ secrets.REMOTE_FOLDER }}。 - 触发方式:
- 自动触发:推送代码到main分支时,工作流自动完成构建+部署;
- 手动触发:在GitHub仓库的「Actions」页面找到该工作流,点击「Run workflow」手动启动。
四、常见问题排查
- 构建失败:检查MSBuild是否正确安装、项目文件路径是否匹配、构建参数是否符合项目配置;
- 部署失败:检查SSH密钥有效性、服务器目标文件夹权限、网络连接是否正常。
内容的提问来源于stack exchange,提问作者Johan Grobler
相关产品推荐
相关产品推荐

