这是我的最佳实践 - 祝你有美好的一天 :-)
首先创建一个 AutoDeploy 用户@OctopusDeploy。生成一个 API 密钥并保留它。我们使用它从您的构建应用程序服务器连接到 OctopusDeploy。
打开您的试点选择的 Octopus 项目的流程选项卡。编辑现有的 nuget 包部署步骤。将项目的 nuget 提要更改为“Octopus Server (built-in)” 禁用 Octopus 上的任何自动发布和部署触发器。
将 octopack 添加到您的解决方案文件中,该文件是您工作的 csproj。
将 nuspec 文件添加到解决方案的 csproj 文件。它必须与 csproj 同名。
Nuspec 文件部分可能像这样。不要忘记 nuspec 文件中的包 ID。
<files>
<file src="obj\**\*.*" exclude="obj\octopacking\**\*.*;obj\octopacked\**\*.*;obj\Release\Package\**\*.*;**\*.pdb;**\*.ps1;**\*.dll.config;**\*.loadtest;_DeveloperNotes;_PublishedWebsites" target="obj"/>
<file src="Deploy.ps1" />
</files>
还将 deploy.cmd(msdeploy) 和 deploy.ps1(自定义脚本)文件添加到您的 csproj。
Deploy.ps1 可能如下所示
[string[]]$params = @(
"-setParam:name='IIS Web Application Name',value='" + $iisapplicationname + "'",
"-skip:Directory=^" + $iisapplicationname + "\\App_Data",
"-skip:File=.config$",
"-skip:File=.cmd$",
"-skip:File=.ps1$"
)
$msdeployArgs = [string]::join(' ', $params)
if ($OctopusEnvironmentName -ceq 'Development')
{
.\obj\Release\Myproject.Deploy.cmd /Y /M:localhost ($msdeployArgs) | Write-Output
}
else
{
.\obj\Release\Myproject.Deploy.cmd /Y /M:localhost ($msdeployArgs) | Write-Output
}
将“iisapplicationname”添加到您的 OctopusDeploy 项目并为您的每个环境设置值。
我们添加到 sln 的文件,打开每个文件的属性。像这样更改属性..复制到输出目录不要复制,构建操作无。
您将需要像 Jenkins 这样的构建服务器。
将插件添加到您的构建服务器,您必须将其用于项目构建和打包操作。(Git, TFS, Change Assembly version plugin, Msbuild, Nunit, Version number plugin )
在您的构建服务器中添加一个文件夹,例如“C:\Scripts”。并将 Octo.exe、nuget.exe、nuget.config 文件复制到这个位置。稍后,您应该将自定义批处理 (.bat) 文件添加到此位置。
为您的 X 项目创建一个空项目并添加构建您的分支的开发代码存储库。(您应该将开发分支命名为“develop”)您必须为存储库连接设置凭据。
触发作业并检查您是否确定将正确的分支代码下载到构建服务器工作区。
编辑同一个项目并将“执行 windows 批处理命令”步骤添加到您的构建项目中。为构建服务器上的 nuget 包还原添加以下命令。
“C:\Scripts\NuGet.exe”恢复“%WORKSPACE%\Myproject.sln”
触发作业并检查包还原是否在构建任务控制台上运行。
编辑同一个项目。添加“使用 MSbuild 构建 Vİsual Studio 项目或解决方案”确保最新的 MSbuild 版本已安装在构建服务器上。MSbuild 文件名:
$WORKSPACE\Myproject.sln
命令行参数:
/t:重建 /p:AutoParameterizationWebConfigConnectionStrings=False /p:DebugSymbols=false /p:DebugType=None /p:IsAutoBuild=True /p:CreatePackageOnPublish=true /p:Configuration=Release;DeployOnBuild=True;PackageLocation=".\ obj\Release\Myproject.zip";PackageAsSingleFile=True /p:RunOctoPack=true /p:OctoPackPackageVersion=%VERSION%-dev /p:OctoPackPublishPackageToHttp= http://octopus.yourdomain.com/nuget/packages
/p:OctoPackPublishApiKey =API-xxxxxxxxxxxx
将“执行 windows 批处理命令”添加到您的开发构建和部署项目中。并编写带有参数的followig批处理文件。
call "C:\Scripts\JenkinsciDeploy.bat" Myproject %VERSION%-dev OctopusProjectName Development %BUILD_NUMBER% %JOB_NAME%
将以下文件复制为此位置“C:\Scripts”
cd C:\Scripts
Octo.exe create-release --project %3 --version %2 --packageversion %2 --server http://octopus.yourdomain.com --apiKey API-xxxxxxxxxxx --deployto %4 --progress --force --guidedfailure=False --waitfordeployment --deploymenttimeout=00:30:00 --releaseNotes "Jenkins build [%5] http://jenkins.yourdomain.com:8080/job/%6/%5"
修改您的 Jenkins 项目。选中“创建格式化的版本号”选项。环境变量名称必须命名为“VERSION”。版本号格式字符串应该是"${BUILD_YEAR}.${BUILD_MONTH}.${BUILD_DAY}.${BUILDS_TODAY}"
将您的 Jenkins 项目添加一个“更改程序集版本”步骤。程序集版本必须命名为“$VERSION”
使用 Poll CSM 为每次签到构建 jenkins 项目。在您的代码存储库中,必须为项目启用 Hook。或者您应该安排构建/部署设置。
添加后期构建步骤“电子邮件通知”
最后你应该看到结果。
您应该为不同的分支和不同的环境克隆这个构建作业。将版本控制格式从“%VERSION%-dev”更改为“%VERSION%”或“%VERSION%-hotfix”将分支从“ /develop”更改为“ /master”“*/hotfix”
在“JenkinsciDeploy.bat”批处理参数中更改部署目标环境。
您应该将它用于将要部署的任何 Web 应用程序。