Мне нужно запустить некоторый код только в том случае, если я запускаюсь из тестовой пусковой установки TeamCity. Какой самый простой способ обнаружить это?
Как определить, выполняется ли в TeamCity тест NUnit?
Ответ 1
Проверьте, определена ли переменная среды TEAMCITY_VERSION.
Другой подход - использовать категории NUnit.
На основании комментария ниже этот код должен иметь возможность проверить, выполняется ли тест командой teamcity:
private static bool IsOnTeamCity()
{
string environmentVariableValue = Environment.GetEnvironmentVariable("TEAMCITY_VERSION");
if (!string.IsNullOrEmpty(environmentVariableValue))
{
return true;
}
return false;
}
Ответ 2
Я в основном делаю это со следующим свойством. Он получает имя каталога через базу кода вызывающей сборки, и если он содержит части вашего агента сборки TeamCity, он работает в TeamCity.
public static bool IsTeamCity
{
get
{
// the Assembly.GetExecutingAssembly().Location property gives funny results when using
// NUnit (where assemblies run from a temporary folder), so the use of CodeBase is preferred.
string codeBase = Assembly.GetCallingAssembly().CodeBase;
string assemblyFullPath = Uri.UnescapeDataString(new UriBuilder(codeBase).Path);
string assemblyDirectory = Path.GetDirectoryName(assemblyFullPath);
// a full TeamCity build directory would be e.g. 'D:\TeamCity\buildAgent\work\de796548775cea8e\build\Compile'
return assemblyDirectory.ToLowerInvariant().Contains("buildagent\\work");
}
}