Philip Wiki

Персональный wiki-сайт

Инструменты пользователя

Инструменты сайта


docs:blog:2016:08:powershell_and_kanboard

[POWERSHELL] PoSh и Kanboard

Сейчас у меня идёт глобальный процесс перестройки моих GTD-принципов, но так как этот процесс реально глобальный, сейчас я расскажу только про один инструмент, который стал для меня незаменимым.

Итак, в одной из своих социальных сетей я уже упоминал про канбан-доску для задач kanboard, фанатом которой я всё больше становлюсь. На данный момент она является моим основным рабочим (от слова «на работе»!) таск-менеджером, скажу больше, я даже придумал сделать из него динамическую панель отображения текущих проблем с сервисами и службами («упал» интернет, «встала» почта и т.п.). Но про это всё наверное в отдельной статье, сейчас я хочу поделиться простыми примерами работы с kanboard посредством Powershell.

Так как kanboard достаточно продвинутый инструмент, он позволяет работать с собой через встроенное API, поэтому именно эту возможноть мы и будем эксплуатировать. К сожалению, в официальной документации нет примера на PoSh, а сам язык достаточно молодой1), чтобы просто найти подходящий пример работы. Но нет ничего невозможного. :-) Ниже несколько примеров взаимодействия:

Получаем список всех проектов

##############################################################
# Simple PoSh-kanboard script                                #
# api_docs: https://kanboard.net/documentation/api-json-rpc  #
##############################################################
$user = "jsonrpc" # default method, else read https://kanboard.net/documentation/api-authentication
$pass = "your_kanboard_token" # your API-token (kanboard settings/api)
$uri = 'http://your_kanboard/jsonrpc.php' # your kanboard url
##
$secpasswd = ConvertTo-SecureString $pass -AsPlainText -Force
$cred = New-Object System.Management.Automation.PSCredential ($user, $secpasswd)
##
$json = @{
    jsonrpc = "2.0"
    method = "getAllProjects"
    id = "1"
}
$json = $json | ConvertTo-Json
##
$res = Invoke-RestMethod -Method Post -Uri $uri -Credential $cred -Body $json -ContentType 'application/json'
$res.result | Sort-Object id | Select-Object -Property id,name

На выходе получим четкую иерархию проектов

id name                    
-- ----                    
1  Project 1
2  Project 2
3  Project 3
4  Project 4

Получаем список колонок проекта

В данном примере мы добавляем обязательный параметр, в котором определяем интересующий нас проект (из которого нам нужны колонки)

##############################################################
# Simple PoSh-kanboard script                                #
# api_docs: https://kanboard.net/documentation/api-json-rpc  #
##############################################################
$user = "jsonrpc" # default method, else read https://kanboard.net/documentation/api-authentication
$pass = "your_kanboard_token" # your API-token (kanboard settings/api)
$uri = 'http://your_kanboard/jsonrpc.php' # your kanboard url
##
$secpasswd = ConvertTo-SecureString $pass -AsPlainText -Force
$cred = New-Object System.Management.Automation.PSCredential ($user, $secpasswd)
##
$json = @{
    jsonrpc = "2.0"
    method = "getColumns"
    id = "1"
    params = @{
        "project_id" = "1"
       }
}
$json = $json | ConvertTo-Json
##
$res = Invoke-RestMethod -Method Post -Uri $uri -Credential $cred -Body $json -ContentType 'application/json'
$res.result | Sort-Object id | Select-Object -Property id,title

На выходе получим четкую иерархию колонок

id title     
-- -----     
1  Ожидающие 
2  Готовые   
3  В процессе
4  Выполнено

Создание задачи

Напоследок пример создания задачи. Параметры подробно расписывать не буду, там и так всё понятно.

##############################################################
# Simple PoSh-kanboard script                                #
# api_docs: https://kanboard.net/documentation/api-json-rpc  #
##############################################################
$user = "jsonrpc" # default method, else read https://kanboard.net/documentation/api-authentication
$pass = "your_kanboard_token" # your API-token (kanboard settings/api)
$uri = 'http://your_kanboard/jsonrpc.php' # your kanboard url
##
$secpasswd = ConvertTo-SecureString $pass -AsPlainText -Force
$cred = New-Object System.Management.Automation.PSCredential ($user, $secpasswd)
##
$json = @{
    jsonrpc = "2.0"
    method = "createTask"
    id = "1"
    params = @{
        "title" = "Test Task"
        "project_id" = "1"
        "column_id" = "3"
        "creator_id" = "1"
        "color_id" = "red"
       }
}
$json = $json | ConvertTo-Json
##
$res = Invoke-RestMethod -Method Post -Uri $uri -Credential $cred -Body $json -ContentType 'application/json'
$res.result

На выходе мы получим только id созданной задачи. Больше нам ничего и не надо, идём и проверяем коррекность создания новой задачи.

На этом всё. Хотелось бы собраться силами и написать готовый модуль для работы с Kanboard на powershell, так я хоть как-то внесу свою лепту в развитие столь замечательного инструмента. Но это пока только в… планах. ;-)

1)
не уверен в правдивости, но командлет Invoke-RestMethod или Invoke-WebRequest появился только в 3 версии, а нормально работать стал с 4…
Только авторизованные участники могут оставлять комментарии.
docs/blog/2016/08/powershell_and_kanboard.txt · Последнее изменение: 06.08.2016 23:41 — philip

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki