Какой инструмент для управления задачами (task tracker) вы использовали в проектах?

Ответ

Основным инструментом был Jira. Он предоставляет комплексный фреймворк для Agile-разработки.

Ключевые возможности и использование:

  • Структура работы: Создание эпиков (Epics), пользовательских историй (User Stories), задач (Tasks) и багов (Bugs).
  • Отслеживание прогресса: Использование канбан-досок (Kanban Boards) и спринтов (Sprints) в Scrum.
  • Интеграции: Глубокая интеграция с CI/CD (например, автоматический переход статуса задачи при создании merge request в Git).

Пример работы с Jira REST API на Java (используя библиотеку Atlassian):

import com.atlassian.jira.rest.client.api.JiraRestClient;
import com.atlassian.jira.rest.client.api.domain.Issue;
import com.atlassian.jira.rest.client.api.domain.input.IssueInput;
import com.atlassian.jira.rest.client.internal.async.AsynchronousJiraRestClientFactory;
import java.net.URI;

public class JiraClientExample {
    public void createIssue() throws Exception {
        JiraRestClient client = new AsynchronousJiraRestClientFactory()
                .createWithBasicHttpAuthentication(
                    URI.create("https://your-company.atlassian.net"),
                    "email@example.com",
                    "api-token" // Используйте API Token, а не пароль
                );

        IssueInput newIssue = new IssueInputBuilder()
                .setProjectKey("PROJ")
                .setIssueTypeId("10001") // ID типа "Bug"
                .setSummary("NullPointerException in UserService.save()")
                .setDescription("Stack trace: ...")
                .build();

        Issue createdIssue = client.getIssueClient().createIssue(newIssue).claim();
        System.out.println("Created issue: " + createdIssue.getKey()); // PROJ-123
        client.close();
    }
}

Альтернативы: Для небольших команд или проектов также эффективны GitLab Issues или GitHub Projects, которые тесно интегрированы с системой контроля версий и CI/CD.

Ответ 18+ 🔞

Да ты посмотри, какой зверь этот ваш Jira, блядь! Это ж не просто таск-трекер, это целая вселенная, где твои эпики плодятся как кролики, а баги живут своей, отдельной, ёбнутой жизнью. Основной-то инструмент, да, но какой, сука, монстр!

На что он способен и как мы его мутузили:

  • Иерархия пиздеца: Сначала эпик (Epic) — здоровенный, как чугунный мост. Потом из него, как блохи, выскакивают пользовательские истории (User Stories). А из историй уже сыпятся конкретные задачи (Tasks) и, само собой, баги (Bugs) — без них никуда, блядь.
  • Гонка за прогрессом: Вешаем всё это на канбан-доски (Kanban Boards) и пихаем в спринты (Sprints), чтобы было видно, кто сколько проёбывает. Scrum, блядь, ёпта!
  • Святая интеграция: А самое охуенное — он с CI/CD срастается, как сиамские близнецы. Сделал мерж-реквест в Git — задача в Jira сама, блядь, переползла в статус «In Review». Волшебство, ёперный театр!

Вот, смотри, как к его API на Java приставать, если очень захотелось (библиотека от Atlassian):

import com.atlassian.jira.rest.client.api.JiraRestClient;
import com.atlassian.jira.rest.client.api.domain.Issue;
import com.atlassian.jira.rest.client.api.domain.input.IssueInput;
import com.atlassian.jira.rest.client.internal.async.AsynchronousJiraRestClientFactory;
import java.net.URI;

public class JiraClientExample {
    public void createIssue() throws Exception {
        JiraRestClient client = new AsynchronousJiraRestClientFactory()
                .createWithBasicHttpAuthentication(
                    URI.create("https://your-company.atlassian.net"),
                    "email@example.com",
                    "api-token" // Только API Token, пароль — это моветон, блядь!
                );

        IssueInput newIssue = new IssueInputBuilder()
                .setProjectKey("PROJ")
                .setIssueTypeId("10001") // ID для "Bug", чтоб он знал, с кем имеет дело
                .setSummary("NullPointerException in UserService.save()")
                .setDescription("Stack trace: ...")
                .build();

        Issue createdIssue = client.getIssueClient().createIssue(newIssue).claim();
        System.out.println("Created issue: " + createdIssue.getKey()); // Выведет что-то типа PROJ-123
        client.close();
    }
}

А если Jira — это овердохуища для твоей команды? Есть же варианты попроще! Для мелких проектов GitLab Issues или GitHub Projects — вообще огонь. Они прямо из репозитория растут, с CI/CD тоже дружат. Иногда проще там всё вести, чем с этим, с позволения сказать, Герасимом из мира таск-менеджмента бороться.