在 MSDeployPublish 之后检索发布信息

Retrieve publish information after MSDeployPublish

为了 post 向 Rollbar 发送部署通知,我需要提供一个环境。我有多个发布配置文件设置,以便我可以部署到各种开发、测试和生产环境。是否有我可以用来从发布配置文件访问配置文件/DeployIisAppPath 的属性或命令?

我有以下目标设置:

  <Target Name="NotifyRollbarOfDeploy" AfterTargets="MSDeployPublish">
    <Exec Command="git log -1 --format=%%H" ConsoleToMSBuild="true" EchoOff="true" WorkingDirectory="$(ProjectDir)\..">
      <Output TaskParameter="ConsoleOutput" PropertyName="GitSHA" />
    </Exec>

    <Exec Command="git config user.email" ConsoleToMSBuild="true" EchoOff="true" WorkingDirectory="$(ProjectDir)\..">
      <Output TaskParameter="ConsoleOutput" PropertyName="GitEmail" />
    </Exec>

    <Exec Command="@powershell -NoProfile -ExecutionPolicy unrestricted -Command &quot;(new-object net.webclient).UploadString('https://api.rollbar.com/api/1/deploy/', 'access_token=REDACTED&amp;environment=@(dev|test|production)&amp;revision=$(GitSHA)&amp;local_username=$(GitEmail)')&quot;" EchoOff="true" />
</Target>

如何在此处提供环境值?

我的解决方法相当丑陋。我没有尝试从目标中检索信息,而是决定使用 Rollbar 为 RollbarSharp 建议的代码片段。我需要添加三个构建配置:在我的案例中是开发、测试和生产,并连接我的发布配置文件以使用这些构建配置。然后我为每个构建配置添加了 web.config 转换,指定了实际的 rollbar 环境设置应该是什么。

转换部分看起来像

  <appSettings>
    <add
      key="Rollbar.Environment"
      value="development"
      xdt:Transform="Replace"
      xdt:Locator="Match(key)"/>
  </appSettings>