قبلا پستی در خصوص دریافت داده ها (در خصوص دریافت ورک لاگ ها که، به عنوان میزان صرف وقت روی تسکها ثبت میشوند) نوشتم که از اینجا در دسترس هست. این پست اما در مورد این هست که بتونیم تسکهایی را بدون نیاز به ورود در پنل جیرا، ثبت کنیم.
مزایای این روش :
من این فراخوانی API رو با کمک یک برنامه Console ساده و با زبان C# پیاده سازی کردم و اسم این برنامه رو Jira Issue Uploader 😊گذاشتم و در گیت هاب قرار دادم تا در صورت نیاز بقیه هم بتونن استفاده کنن.
البته میدونید که در جیرا، بخشی وجود داره که شما میتونید تسکها رو به صورت bulk و با کمک یک فایل CSV وارد کنید و این روش برای ثبت انبوهی از Issue ها استفاده میشه. کاری که در این برنامه آزمایشی میکنیم، مشابه Importer خود جیرا هست و تسکها رو از یک فایل CSV میخونیم و با کمک API زیر و به روش بسیار ساده در جیرا اضافه میکنیم.
این کد در واقع نمونه ای از فراخوانی API هست که شما میتونید در باتهای مختلف یا برنامه های تیکتینگ و پشتیبانی خودتون استفاده کنید
الف ) لاگین در جیرا
client.BaseAddress = new Uri(string.IsNullOrEmpty(JIRA_DOMAIN) ? "" : JIRA_DOMAIN);var authToken = Convert.ToBase64String(Encoding.ASCII.GetBytes($"{username}:{apiToken}"));client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Basic", authToken);client.DefaultRequestHeaders.Add("Accept", "application/json");
ب ) خواندن از یک فایل 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, "application/json"); HttpResponseMessage response = await client.PostAsync("/rest/api/2/issue", jsonContent);