مدیر پروژه، برنامه نویس، سعی میکنم کتاب هم بخونم
دریافت داده ها از Jira با استفاده از سرویسهای Rest

جیرا یکی از جذاب ترین و کاربردی ترین ابزار مدیریت پروژه است که من بر اساس تجارب خودم، در هر شرکتی که فعالیت میکنم ، در کنار نرم افزارهای دیگه، ، اون رو پیشنهاد میدم.
یکی از بهترین بخشهای جیرا، امکان ثبت لاگ ورک برای Issue های مختلف است. این ورک لاگ میتونه با ابزار های دیگه مثل Time Tracker و ... هم ترکیب بشه و افراد به راحتی میزان وقتی که روی هر Issue میزارن رو ثبت کنند. در پایان یک اسپرینت یا در پایان ماه، ما میتونیم لاگ ورک های ثبت شده افراد رو جمع آوری کنیم. با این تصور که روی هر Issue ممکن است بیش از یک لاگ ورک و حتی برای بیشتر از یک نفر، ثبت شده باشد.
برای جمع آوری داده های ورک لاگ به منظور بالا، باید از پلاگینهای موجود در Market Place شرکت Atlassian استفاده کرد (که رایگان هم نیست و البته که خرید این پلاگینها هم دردسرهای خودش رو داره چون مسائل تحریمی و همچنین نسخه جیرا در این مورد خیلی مهمه) یا از ابزار جانبی دیگری بهره برد. یکی از اون ابزارهای جانبی استفاده از افزونه ای هست که در گوگل شیت برای این موضوع وجود داره. افزونه های این چنینی با دسترسی به داده های شما قابل استفاده خواهند بود که از لحاظ امنیتی میتونه خطر ساز بشه. پس راه حل چیه ؟

راه حل، استفاده از Rest API تعبیه شده در خود جیرا هست. من با استفاده از API های خود جیرا، خروجی ورک لاگ رو در زبان C# و در قالب یک کد بسیار ساده پروژه Console پیاده سازی کردم که اسم این برنامه JiraWorklog Fetcher 😄 گذاشتم و کد تولیدی این بخش رو در گیت هاب قرار دادم تا در صورت نیاز بقیه هم بتونن استفاده کنن.
بخشهای اصلی این پروژه :
الف ) لاگین در جیرا
123client.BaseAddress = new Uri(JIRA_DOMAIN); var authToken = Convert.ToBase64String(Encoding.ASCII.GetBytes($"{username}:{apiToken}")); client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Basic", authToken);
ب ) جستجوی Issue ها با استفاده از JQL ورودی
123string requestBody = JsonSerializer.Serialize(new { jql = jql, fields = new[] { "key" }, maxResults = 200 }); var content = new StringContent(requestBody, Encoding.UTF8, "application/json"); HttpResponseMessage response = await client.PostAsync("/rest/api/2/search", content).ConfigureAwait(false);
ج ) دریافت فیلد Assignee (شخصی که به تسک اساین شده است)
1var issueResponse = await client.GetAsync($"/rest/api/2/issue/{issueKey}?fields=assignee").ConfigureAwait(false);
د ) دریافت ورک لاگ های هر تسک
1 var worklogResponse = await client.GetAsync($"/rest/api/2/issue/{issueKey}/worklog").ConfigureAwait(false);
ه ) دریافت عنوان تسک
1 var summaryResponse = await client.GetAsync($"/rest/api/2/issue/{issueKey}?fields=summary").ConfigureAwait(false);
در نهایت همه این مقادیر به صورت فایل CSV تولید میشود.
مطلبی دیگر در همین موضوع
چرا به تست نیاز داریم؟
مطلبی دیگر در همین موضوع
همه امکانات دستور Git Stash
افزایش بازدید بر اساس علاقهمندیهای شما
پرداخت امن چیست و چرا اهمیت دارد ؟