我们目前使用Octopus Deploy将网站推送到Window Server 2012上托管的IIS服务器。
我们希望抛弃八达通并使用我们的本地TFS 2017内置发布系统。我们已经构建了可以发布工件(网站二进制文件和内容)的定义。
使用Octopus,我们在所有服务器上安装了触角。
Octopus中定义的遗留发布流程如下:
我并不热衷于八爪鱼过程中使用的Powershell数量,并且希望在TFS版本定义中最小化Powershell。
我的问题是:Microsoft推荐的将ASP.NET网站(vanilla MVC项目,而不是.NET核心)部署到CI环境中的服务器的方式是什么?是否可以同时配置站点身份验证?
NB: 我看了一下OOB IIS发布WinRM部署任务,我担心他们可能需要比我们的基础架构团队更多的时间(配置防火墙等)。
我们在构建服务器上安装了Visual Studio 2017。
TIA, 斯科特
答案 0 :(得分:0)
使用IIS WinRM任务可能是最好和最简单的方法。您可以找到有关如何配置内容的一些good指南。
您需要的基础是:
/p:DeployOnBuild=true /p:WebPublishMethod=Package /p:PackageAsSingleFile=true /p:SkipInvalidConfigurations=true /p:PackageLocation=$(Build.ArtifactStagingDirectory)
答案 1 :(得分:0)
根据您的描述,您正在IIS上托管的网站上进行部署。
首先通过TFS构建,您可以使用一些msbuild参数(例如import { NgModule } from '@angular/core';
import { RouterModule, Routes } from '@angular/router';
import { SignInComponent } from '../components/sign-in/sign-in.component';
import { HomeComponent } from '../components/home/home.component';
const appRoutes: Routes = [
{ path: '', component: HomeComponent, canActivate: [AuthGuard]},
{ path: '', component: SignInComponent}
];
@NgModule({
imports: [
RouterModule.forRoot(
appRoutes,
{ enableTracing: false }
)
],
exports: [
RouterModule
]
})
export class AppRoutingModule {}
)来生成包。
然后在发布定义中使用Deploy: Windows Machine File Copy任务 - 将Web Deploy包复制到IIS服务器。最后使用Deploy: WinRM - IIS Web App Deployment - 部署包。在Build and Release代理上运行的此任务为每个IIS服务器打开一个WinRM连接,以便远程运行Powershell脚本,以便部署Web Deploy包。
有关更多详细信息/步骤教程,您可以参考下面的教程,甚至一些是Web应用程序的示例: