我知道,在Azure DevOps中创建发布管道时,您可以使用web。使用管道中的变量更新应用程序的配置,这对于所有appSettings值都非常有效。
但是,在发布管道期间,我想更新web.config的不同部分,特别是会话状态提供程序节点。我已经尝试了几个插件的发布管道,如Config Transform by Magic Bloks,但问题是它需要您指定要编辑的配置文件的路径,但当它到达发布管道时,源文件位于zip存档中。不知何故,appSet的正常转换能够在解压缩版本下工作,但我无法在文件解压缩后进行其他转换。
我知道您可以在构建管道中进行更改,但我们有理由希望在发布管道中进行更改。
有人知道如何在Azure应用服务的发布管道中的应用设置分组之外更改web.config吗?
我想做一些类似的事情,但发现有一个内置的任务叫做文件转换[https://docs.microsoft.com/en-us/azure/devops/pipelines/tasks/utility/file-transform?view=azure-devops]由微软提供。有了它,您所要做的就是在web中定义一个带有键的变量。如果它是一个简单的替代品,请进行配置。如果需要更复杂的转换,也可以指定。
可以使用PowerShell在zip文件中进行转换。
例如,我在web中有这个节点。配置
:
<configuration>
<sessionstate
mode="__mode__"
cookieless="false"
timeout="20"
sqlconnectionstring="data source=127.0.0.1;user id=<user id>;password=<password>"
server="127.0.0.1"
port="42424"
/>
</configuration>
我使用这个脚本:
# cd to the agent artifcats direcory (where the zip file exist)
cd $env:Agent_ReleaseDirectory
$fileToEdit = "web.config"
[Reflection.Assembly]::LoadWithPartialName("System.IO.Compression.FileSystem");
# Open zip and find the particular file (assumes only one inside the Zip file)
$zipfileName = dir -filter '*.zip'
$zip = [System.IO.Compression.ZipFile]::Open($zipfileName.FullName,"Update")
$configFile = $zip.Entries.Where({$_.name -like $fileToEdit})
# Read the contents of the file
$desiredFile = [System.IO.StreamReader]($configFile).Open()
$text = $desiredFile.ReadToEnd()
$desiredFile.Close()
$desiredFile.Dispose()
$text = $text -replace '__mode__',"stateserver"
#update file with new content
$desiredFile = [System.IO.StreamWriter]($configFile).Open()
$desiredFile.BaseStream.SetLength(0)
# Insert the $text to the file and close
$desiredFile.Write($text)
$desiredFile.Flush()
$desiredFile.Close()
# Write the changes and close the zip file
$zip.Dispose()
之前:
之后(在zip文件中,无需解压缩和重新压缩):
我正在尝试添加预定义变量“Release”。释放(https://docs.microsoft.com/en-us/azure/devops/pipelines/release/variables?view=azure-devops)到网站。在IIS管道发布期间进行配置。在stage上启用了XML变量替换,但它不会替换版本。对任何事情都放松。
我有一个azure构建管道和发布管道。我在发布构建工件中面临问题。在构建管道中,发布构建工件被正确地创建在默认的“drop”目录中。 当我在发布管道中下载该工件时,发布文件正在服务抛出错误的中下载 您没有查看此目录或页面的权限。 这意味着我的发布工件没有在“home/wwwroot”目录中下载。 构建管道 释放管道 我错过了什么?
There are two things you want to do preparing for a production build. 这里有两件事你需要为生产发布做准备。 Configure a script to run in your package.json file Create a production config 配置你的 package.json 里的脚本 创建一个生产的配置
看起来,PublishBuildArtifacts任务在发布环境中不可用。 https://docs.microsoft.com/de-de/azure/devops/pipelines/tasks/utility/publish-pipeline-artifact?view=azure-德沃斯 但是,当我们的客户从Azure存储库(通用软件包)中获取新的工件版本时,有机会通过发布管道发布这些工件
我不确定发生了什么,过去我们在Azure Devops中的管道构建的一切都很好。 但是就在最近,我们的每个构建都在zipariing上失败了... APK zipmays和构建在使用Android Studio IDE时很好,但在Azure Devops管道中失败了。 以下是Azure中zipalign的开始: 这是最后的失败消息: 最后,这是我们管道YAML的上下文: 任何帮助都将不胜感激! 编
我正在使用Azure DevOps发布管道部署一个构建在Asp之上的web应用程序。Net核心到Azure应用程序服务。应用程序服务已启动 我通过服务连接创建了一个带有发布配置文件选项的azure资源管理器连接。 [ARM发布配置文件服务连接][1] 后来,我配置了发布管道,并在选择发布配置文件连接的位置使用Azure app service deploy。 [发布配置文件连接][2] 正如您在屏