You need to enable JavaScript to run this app. 如何编写GitLab yml文件实现.NET Core代码自动发布部署到AWS Windows实例IIS
优惠活动
大模型
产品
解决方案
定价
更多

如何编写GitLab yml文件实现.NET Core代码自动发布部署到AWS Windows实例IIS

.NET Core项目GitLab CI自动部署到AWS Windows IIS配置方案

前置准备

  • 部署GitLab Runner:安装在可访问AWS Windows实例的Windows环境中,Runner标签配置为aws-windows-iis,提前安装对应版本的.NET Core SDK
  • AWS Windows实例配置:开启WinRM服务(默认HTTP端口5985/HTTPS端口5986),安全组放行对应端口,提前在IIS中创建好目标站点、应用池,确认站点物理路径已给IIS_IUSRS组分配读写权限
  • GitLab变量配置:在项目「设置- CI/CD -变量」中添加以下受保护变量,避免敏感信息硬编码:
    • AWS_WINRM_HOST:AWS实例公网/内网IP
    • AWS_WINRM_USER:WinRM登录用户名
    • AWS_WINRM_PWD:WinRM登录密码
    • IIS_SITE_NAME:目标IIS站点名称
    • IIS_APP_POOL:目标IIS应用池名称
    • IIS_PHYSICAL_PATH:IIS站点物理路径,示例:C:\inetpub\wwwroot\myapp

.gitlab-ci.yml完整配置

stages:
  - build
  - deploy

# 构建发布阶段
build_job:
  stage: build
  tags:
    - aws-windows-iis
  script:
    - dotnet restore
    - dotnet publish -c Release -o ./publish
  artifacts:
    paths:
      - ./publish/
    expire_in: 1d
  only:
    - main # 按需修改为触发部署的分支名

# 部署到IIS阶段
deploy_job:
  stage: deploy
  tags:
    - aws-windows-iis
  dependencies:
    - build_job
  script:
    # 构建WinRM连接凭证
    - $pwd = ConvertTo-SecureString $env:AWS_WINRM_PWD -AsPlainText -Force
    - $credential = New-Object System.Management.Automation.PSCredential ($env:AWS_WINRM_USER, $pwd)
    - $session = New-PSSession -ComputerName $env:AWS_WINRM_HOST -Credential $credential -Port 5985
    # 停止IIS站点和应用池避免文件占用
    - Invoke-Command -Session $session -ScriptBlock {
        Import-Module WebAdministration;
        Stop-WebSite -Name $using:IIS_SITE_NAME;
        Stop-WebAppPool -Name $using:IIS_APP_POOL;
      }
    # 复制发布文件到IIS站点路径
    - Copy-Item -Path ./publish/* -Destination $env:IIS_PHYSICAL_PATH -Recurse -Force -ToSession $session
    # 重启站点和应用池
    - Invoke-Command -Session $session -ScriptBlock {
        Start-WebAppPool -Name $using:IIS_APP_POOL;
        Start-WebSite -Name $using:IIS_SITE_NAME;
      }
    # 销毁WinRM会话
    - Remove-PSSession -Session $session
  only:
    - main
  when: on_success # 构建成功后自动触发,如需手动确认可改为manual

关键注意事项

  • 如果WinRM使用HTTPS加密连接,需要将New-PSSession中的端口改为5986,同时添加-UseSSL参数
  • 若项目为独立部署模式,可在dotnet publish命令中添加运行时参数,示例:-r win-x64 --self-contained true
  • 首次配置前可手动在Runner机器上执行脚本中的PowerShell命令,验证WinRM连接、文件复制、IIS操作逻辑正常后再接入CI流程
  • 确保Runner的PowerShell执行策略已设置为RemoteSigned,避免脚本被系统拦截
  • 如果需要部署到多环境,可扩展stages,添加test、prod等不同部署阶段,对应不同的变量配置即可

内容的提问来源于stack exchange,提问作者Ravi Patel

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.16 11:45:04