क्या टीमलॉ के साथ टीम फाउंडेशन सर्वर के भीतर कार्यों को एकीकृत करने का एक तरीका है?


12

मैं यह निर्धारित करने का प्रयास कर रहा हूं कि क्या ट्रेलो को हमारे मौजूदा विकास परिवेश में एकीकृत करना संभव है। हम वर्तमान में टीम फाउंडेशन सर्वर का उपयोग हमारे सोर्स कोड कंट्रोल रिपॉजिटरी के रूप में कर रहे हैं और मैं Trello में एक बोर्ड पर आइटम को सूचीबद्ध करने के लिए TFS के भीतर कार्यों को लिंक करना चाहूंगा, क्या यह दूर से भी संभव है? मुझे पता है कि जगह में एक एपीआई है, मैं मुख्य रूप से उत्सुक हूँ अगर किसी ने अभी तक इस तरह के एकीकरण का प्रयास किया है। यदि यह संभव था, तो Trello अनिवार्य रूप से TFS में हमारा यूजर इंटरफेस बन जाएगा।

जवाबों:


9

नीचे कार्यक्रम Trello कार्ड से TFS कार्य बनाता है। ट्रेलो चेकलिस्ट कार्य आइटम विवरण के रूप में दिखाई देते हैं।

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

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.