Mostafa Fallah - مصطفی فلاح
خواندن ۲ دقیقه·۱ ماه پیش

اضافه کردن Issue در Jira با استفاده از سرویسهای Rest

جیرا ، ابزار دوست داشتنی با امکانات بسیار
جیرا ، ابزار دوست داشتنی با امکانات بسیار


قبلا پستی در خصوص دریافت داده ها (در خصوص دریافت ورک لاگ ها که، به عنوان میزان صرف وقت روی تسکها ثبت میشوند) نوشتم که از اینجا در دسترس هست. این پست اما در مورد این هست که بتونیم تسکهایی را بدون نیاز به ورود در پنل جیرا، ثبت کنیم.

مزایای این روش :

  • اضافه کردن تسک خارج از جیرا و عدم نیاز به داشتن دانش برای کار با پنل جیرا
  • اضافه کردن تسک ها از طریق برنامه های پشتیبانی مختلف، برای مثال بات های تلگرام یا ...
  • اضافه کردن تسکها از طریق نرم افزارهای پشتیبانی اختصاصی خود سازمان (برای مثال در نرم افزار تیکتینگ سازمان میتوان این API را فراخوانی کرد)
  • اضافه کردن تسکها توسط کاربرهایی غیر از ادمین پروژه و ادمین سیستم

من این فراخوانی API رو با کمک یک برنامه Console ساده و با زبان C# پیاده سازی کردم و اسم این برنامه رو Jira Issue Uploader 😊گذاشتم و در گیت هاب قرار دادم تا در صورت نیاز بقیه هم بتونن استفاده کنن.

البته میدونید که در جیرا، بخشی وجود داره که شما میتونید تسکها رو به صورت bulk و با کمک یک فایل CSV وارد کنید و این روش برای ثبت انبوهی از Issue ها استفاده میشه. کاری که در این برنامه آزمایشی میکنیم، مشابه Importer خود جیرا هست و تسکها رو از یک فایل CSV میخونیم و با کمک API زیر و به روش بسیار ساده در جیرا اضافه میکنیم.
این کد در واقع نمونه ای از فراخوانی API هست که شما میتونید در باتهای مختلف یا برنامه های تیکتینگ و پشتیبانی خودتون استفاده کنید

الف ) لاگین در جیرا

client.BaseAddress = new Uri(string.IsNullOrEmpty(JIRA_DOMAIN) ? &quot&quot : JIRA_DOMAIN);var authToken = Convert.ToBase64String(Encoding.ASCII.GetBytes($&quot{username}:{apiToken}&quot));client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue(&quotBasic&quot, authToken);client.DefaultRequestHeaders.Add(&quotAccept&quot, &quotapplication/json&quot);

ب ) خواندن از یک فایل CSV

using var reader = new StreamReader(filePath); using var csv = new CsvReader(reader, CultureInfo.InvariantCulture); return new List<IssueEntry>(csv.GetRecords<IssueEntry>());

ج ) پر کردن Object مورد نیاز برای ارسال به سرویس

var issueData = new { fields = new { project = new { key = issue.ProjectKey }, summary = issue.IssueSummary, description = issue.Description, issuetype = new { name = issue.IssueType }, assignee = new { name = issue.Assignee }, } };

د ) ثبت در جیرا با کمک API

var jsonContent = new StringContent(JsonSerializer.Serialize(issueData), Encoding.UTF8, &quotapplication/json&quot); HttpResponseMessage response = await client.PostAsync(&quot/rest/api/2/issue&quot, jsonContent);


مدیر پروژه، برنامه نویس، سعی میکنم کتاب هم بخونم
شاید از این پست‌ها خوشتان بیاید