ট্রেলোর সাথে টিম ফাউন্ডেশন সার্ভারের মধ্যে কাজগুলি সংহত করার কোনও উপায় আছে?


12

ট্রেলোকে আমাদের বিদ্যমান উন্নয়নের পরিবেশে সংহত করা সম্ভব কিনা তা আমি নির্ধারণ করার চেষ্টা করছি। আমরা বর্তমানে টিম ফাউন্ডেশন সার্ভারকে আমাদের উত্স কোড নিয়ন্ত্রণের সংগ্রহস্থল হিসাবে ব্যবহার করছি এবং আমি টিএফএসের মধ্যে কাজগুলি লেনদেন করতে চাই ট্রেলোতে একটি বোর্ডে আইটেমগুলি তালিকাবদ্ধ করতে, এটি কি এটি কি দূর থেকেও সম্ভব? আমি জানি যে এখানে একটি এপিআই রয়েছে, আমি এখনও আগ্রহী যদি কেউ এখনও এর মতো ইন্টিগ্রেশন চেষ্টা করে থাকে। যদি এটি সম্ভব হত, ট্রেলো মূলত টিএফএসে আমাদের ব্যবহারকারী ইন্টারফেসে পরিণত হবে।

উত্তর:


9

নীচের প্রোগ্রামটি ট্রেলো কার্ডগুলি থেকে টিএফএস কার্য তৈরি করে। ট্রেলো চেকলিস্টগুলি টাস্ক আইটেমের বিবরণ হিসাবে উপস্থিত হয়।

using System;
using System.Collections.Generic;
using System.Text;
using Microsoft.TeamFoundation.Client;
using Microsoft.TeamFoundation.WorkItemTracking.Client;
using TrelloNet;

namespace TFSTrelloAPI
{
    class Program
    {
        #region Trello Security
        public static string DevTeamTasksBoardId { get; set; }
        public static string TrelloToken { get; set; }
        public static string TrelloKey { get; set; }
        #endregion

        #region TFS Details
        public static string TFSProject { get; set; }
        public static string TFSServerUri { get; set; }
        public static Uri Url { get; set; }
        #endregion

        static void Main(string[] args)
        {
            SetTrelloSecurity();
            SetTFSDetails();
            ITrello trello = new Trello(TrelloKey);
            IList<string> lines = new List<string>();
            Url = trello.GetAuthorizationUrl("TFSImport", Scope.ReadOnly);
            trello.Authorize(TrelloToken);
            var boards = trello.Boards;
            foreach (var board in boards.ForMe())
            {
                if (board.Id == DevTeamTasksBoardId)
                {
                    lines.Add("Name: " + board.Name);
                    lines.Add(" Desc: " + board.Desc);
                    lines.Add("ID: " + board.Id);
                }
            }
            IBoardId bid = new BoardId(DevTeamTasksBoardId);

            var lists = trello.Lists.ForBoard(bid);
            foreach (var list in lists)
            {
                var listId = new ListId(list.Id);
                var cards = trello.Cards.ForList(listId);
                foreach (var card in cards)
                {
                    var sbTaskDesc = new StringBuilder();
                    string taskName = (card.Name + " * Desc: " + card.Desc);
                    ICardId ic = new CardId(card.Id);
                    var chkLists = trello.Checklists.ForCard(ic);
                    foreach (var checklist in chkLists)
                    {
                        sbTaskDesc.AppendLine(" * " + checklist.Name);
                        sbTaskDesc.AppendLine(" * ");
                        var ckItems = checklist.CheckItems;
                        foreach (var checkItem in ckItems)
                        {
                            sbTaskDesc.AppendLine(" * " + checkItem.Name);
                        }
                    }
                    string taskDesc = sbTaskDesc.ToString();
                    CreateTask(taskName, taskDesc);
                }
            }
        }


    /// <summary>
        /// Replace empty strings with specific TFS information
        /// </summary>
        private static void SetTFSDetails()
        {
            TFSServerUri = string.Empty;
            TFSProject = string.Empty;
            Url = new Uri(TFSServerUri);
        }
        /// <summary>
        /// Replace empty strings with values from your Trello 
        /// See TrelloAPI documentaiotn for details
        /// </summary>
        private static void SetTrelloSecurity()
        {
            DevTeamTasksBoardId = string.Empty;
            TrelloToken = string.Empty;
            TrelloKey = string.Empty;
        }
        private static void CreateTask(string taskName, string taskDesc)
        {
            // Connect to the server and the store, and get the WorkItemType object
            // for user stories from the team project where the user story will be created. 
            var collectionUri = new Uri(TFSServerUri);
            var tpc = new TfsTeamProjectCollection(collectionUri);
            var workItemStore = tpc.GetService<WorkItemStore>();
            Project teamProject = workItemStore.Projects[TFSProject];
            WorkItemType workItemType = teamProject.WorkItemTypes["Task"];

            // Create the work item. 
            var userStory = new WorkItem(workItemType)
            {
                // The title is the only required field that does not have a default value. 
                // You must set it, or you cannot save the work item. 
                Title = taskName.Length > 255 ? taskName.Substring(0, 254) : taskName, // max length for name 255 char
                Description = taskDesc
            };

            // Save the new user story. 
            userStory.Save();
        }

    }
}

2

ট্রেলো অ্যাপ্লিকেশনটির ভিতরে এটি করার কোনও উপায় নেই তবে আপনি নিজেই ইন্টিগ্রেশনটি লিখতে ব্যবহার করতে পারেন এমন একটি এপিআই রয়েছে। ডকুমেন্টেশন এখানে: https://trello.com/docs

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.