Size: a a a

Android Live 🤖

2022 February 09
Android Live 🤖
➡️ Делаем оффер iOS- и Android-разработчикам за один день. Приглашаем в команды Мобильного банка, Тинькофф Инвестиций, Тинькофф Бизнеса и еще трех проектов.

Вы — в течение одного дня общаетесь с нашей командой. Мы — делаем оффер, если работа подойдет вам по условиям, а задачи — по скиллам.

🖇 Все будет онлайн, 19 февраля. Заявки принимаем до 15 февраля включительно. Подробности и регистрация по ссылке: https://l.tinkoff.ru/mobile.oneday

#партнёрский
источник
2022 February 11
Android Live 🤖
​​Jira на Github Actions
#cicd

Я тут последние несколько дней активно вникаю в тему настройки CI на Github Actions, и был удивлён, что в Jira нельзя передвинуть несколько задач одновременно, если вы каким-то образом получили этот список из вашего PR.

Ребята из Attlassian молчат, а таски двигать хочется, поэтому делюсь с вами кастомным решением.

Если посмотреть, что делается под капотом этого Action, то по сути — это вызов API и совершение парочки запросов для того, чтобы передвигуть задачку. Свой Action писать не хотелось, поэтому решил написать свою gradle таску, которая сделает всё за нас.

1️⃣ Для начала, выполните запрос:
GET https://domain.atlassian.net/rest/api/3/issue/TASK-123/transitions,
чтобы получить идентификатор колонки, в которую вам надо перекинуть задачу. Нам надо поле id, а чтобы выполнить запрос — необходимо создать пароль в настройках и авторизоваться в Headers через Base Auth.

2️⃣ Создаём таску в gradle, а в неё передаём список задач и токен для авторизации будущих запросов, например так:
def taskNumbers = project.properties['items'].split(',').toUnique()
def jiraToken = project.properties['jira_token’]
.

Лучше передать сразу base64 от нашей базовой авторизации, а сам токен хранить в secrets на вашем CI.

3️⃣ Выполняем запрос:
for(taskNumber in taskNumbers) {
   def body = "{ \"transition\": { \"id\": \"$transactionId\" } }"
   def req = new URL("https://domain.atlassian.net/rest/api/3/issue/TASK-$taskNumber/transitions").openConnection()
   req.setRequestMethod("POST")
   req.setRequestProperty("Content-Type", "application/json; charset=UTF-8")
   req.setRequestProperty("Authorization", "Basic $jiraToken")
   req.setDoOutput(true)
   req.getOutputStream().write(body.getBytes("UTF-8"))
   println "Status code: ${req.getResponseCode()} for task $taskNumber"
}


Если вы всё сделали правильно, то вы получите 204 код и ваша задача перейдёт в нужную вам колонку. 😌

Дальше можно выполнить эту таску на CI:
./gradlew moveJiraTasks -Pitems=123,456  -Pjira_token=token

Полный текст таски можно взять тут.
источник