Поменять параметр в билде, используя TeamCity API

В данной заметке приведу пример powershell скрипта, которым меняю настройки проекта используя API Teamcity. К сожалению у TeamCity нет нативного «интерфейса» через который это можно было было сделать. Простой пример. Предположим, у вас 2 TeamCity. Скажем, на первый это основной сервер. А на втором вы собираете всякие демо стенды. Также вы хотите что бы количество FXCOP warnings было не ниже чем на основном. Для этого последним шагом можно добавить скрипт, который дернет API и передаст нужное значение. Ниже пример на powershell, который передаст FXCOP warnings на другой сервер:

param(
    [string]$TeamcityUsername = "teamcity_api",
    [string]$TeamcityPassword = "teamcity_pass",
    [string]$TeamcityBuildID = "build_project_id",
    [string]$TeamcityBaseUrl = "https://buildserver",
    [string]$FxcopWarnings = "92"
)
function getAuthHeader($user, $pass) {
    $pair = "$($user):$($pass)"
    $bytes = [System.Text.Encoding]::ASCII.GetBytes($pair)
    $base64 = [System.Convert]::ToBase64String($bytes)
    $basicAuthValue = "Basic $base64"
    return $basicAuthValue
}

[xml]$response = Invoke-WebRequest -UseBasicParsing -Method PUT -Uri $($TeamcityBaseUrl + "/app/rest/buildTypes/id:${TeamcityBuildID}/parameters/env.fxcop.warnings") -Body $("<property name='env.fxcop.warnings' value='$FxcopWarnings'/>") -Headers @{ Authorization = $(getAuthHeader $teamcityUsername $teamcityPassword) } -ContentType "application/xml"

 

AutoMerge Script for Bitbucket.org

В рамках автоматизации одного проекта написал скрипт на PowerShell, который мержит ветки используя bitbucket API. Огромный плюс использования этого скрипта для автоматического мержа в том, что вам не нужно вытягивать исходники. Все делается на стороне bitbucket. Не все идеально, где то можно оптимизировать, но он работает =)

https://github.com/voiplab/Misc/blob/master/RemoteMergeBitbucket.ps1

AMI Launcher for Asterisk / Elastix / FreePBX

amilaunchernewДавно хотел написать универсальное приложение для Asterisk, которое могло бы запускать внешнее приложение после поднятия трубки оператором.

«Для чего это нужно?» —  спросите вы, и это будет хороший вопрос. Это бывает необходимо в тех случаях, когда нет возможности/желания/средств на интеграцию вашей системы IP-телефонии на основе Asterisk в вашу CRM, backoffice или «систему помощи клиентов». Предположим, у нас есть некий backoffice с возможностью поиска клиентов по номеру телефону. И мы хотим автоматизировать процесс поиска так, чтобы при поступлении входящего вызова, оператор call-центра уже видел карточку клиента(его заказы или другую информацию). С помощью AMI-Launcher это реализуется проще-простого.

Возможности AMILauncher:

  • Возможность выполнения внешней программы, после поднятия трубки оператором.
  • Возможность выполнения внешней программы, перед поднятием трубки оператором.
  • В качестве аргумента к внешним программам имеется возможность отправить входящий CallerID через параметр {num};
  • Программа работает с сервером Asterisk через AMI;
  • В качестве внешнего приложения можно указать как прямой путь до программы Windows, так и http/https-адрес.

Пример использования:

[tube]https://www.youtube.com/watch?v=lBFSf0Hunao[/tube]

Исходники:

https://github.com/voiplab/AMI-Launcher-Asterisk
(далее…)