Tag Archives: TFS

DevOps Bootcamp Praha 2018 – záznamy z přednášek

  1. června 2018 jsme pořádali mini-konferenci DevOps Bootcamp Praha.

Na našem HAVIT YouTube Channelu vám nabízíme záznamy ze všech prezentací.

DevOps Bootcamp Praha 2018 – YouTube Playlist:

  1. TFS 2018 a VSTS – co je nového za poslední rok [Michael Juřek]
  2. AKS & .NET Core [Valdemar Zavadský]
  3. Migrace TFS do VSTS [Jiří Kanda]
  4. Application Insights – logování a diagnostika aplikací [Miroslav Holec]
  5. Infrastructure as Code [Tomáš Kubica]

…těšíme se zase za rok.

TFS Build Process [Jiří Kanda, HAVIT Vzdělávací okénko 1.3.2018]

Záznam ze Vzdělávacího okénka HAVIT z 1. března 2018. Je publikován na našem HAVIT YouTube Channelu. Téma prezentoval Jiří Kanda.

Dotčená témata:

  • MSBuild
    • csproj
    • MSBuild command line
    • build tools
    • parametrizace
    • nástroje
  • TFS Build
  • Publish

Agilní metodika a TFS [Daniel Hrubý, HAVIT Vzdělávací okénko 25.1.2018]

Záznam z interního vzdělávacího okénka HAVIT z 25.1.2018 je publikován na našem HAVIT YouTube Channel. Téma prezentoval Daniel Hrubý.

TFS – Work Item Queries – záznam [Jiří Kanda, HAVIT Vzdělávací okénko 9.11.2017]

Záznam z interního vzdělávacího okénka HAVIT z 9.11.2017 je publikován na našem HAVIT YouTube Channel. Téma prezentoval Jiří Kanda:

Dotčená témata:

  • Search work items
  • Queries Editor
  • @Me, @Today, @CurrentIteration
  • operátor Was Ever
  • Charts
  • Type of Queries – Flat List, Tree of Work Items, …

TFS2017: SQL Query pro počet changesetů dle uživatele

…byl to nakonec trochu opruz dohledat správně uživatele, tak dávám do pléna

SELECT i.AccountName, COUNT(*)
	FROM tbl_ChangeSet AS cs
		LEFT JOIN tbl_IdentityMap im ON cs.OwnerId = im.localId
		LEFT JOIN Tfs_Configuration.dbo.tbl_Identity i ON im.masterId = i.Id
	GROUP BY i.AccountName WITH ROLLUP
	ORDER BY COUNT(*) DESC

TFS (XAML) Builds – Jak vytvořit lokální workspace

TFS (XAML) Build vytvoří workspace na build serveru, do něj stáhne zdrojové kódy a ty kompiluje. Workspace vytváří aktivita CreateWorkspace, která vytvoří serverový workspace a není způsob, jak této aktivitě říct, aby vytvořila workspace lokální. Aktivita CreateWorkspace navíc vrací instanci reprezentující založený workspace.

Když tedy nelze při říct, že založený workspace má být lokální, lze použít drobný workaround – založit workspace jako serverový a dodatečně jej přepnout na lokální. To lze provést zavoláním metody Update na instanci vrácené z CreateWorkspace. V rámci TFS (XAML) Buildu to můžeme udělat reflexí, tedy aktivitou InvokeMethod s těmito parametry:

  • Target Object: Workspace (resp. taková proměná, ve které máme vrácenou instanci z activity CreateWorkspace)
  • Method Name: Update
  • Parameters: In / Microsoft.TeamFoundation.VersionControl.Client.UpdateWorkspaceParameters / New UpdateWorkspaceParameters With { .Location = Microsoft.TeamFoundation.VersionControl.Common.WorkspaceLocation.Local }

O rozdílech mezi lokálním a serverovým workspacem si můžete přečíst tady nebo tady. Naše touha pro přechod ze serverového na lokální workspace byla vedena přiblížením prostředí buildu vývojářskému prostředí, zejména nenastavení read-only atributů na stažených souborech.

 

API restriction: The assembly “file:///…Microsoft.VisualStudio.QualityTools.UnitTestFramework.dll‘ has already loaded from a different location. It cannot be loaded from a new location within the same appdomain.

Pokud se s touto chybou potkáte ve Visual Studiu, nejspíš se vám podaří něco kolem toho vygooglit. Zákeřnější je tato chyba na TFS Build Serveru, kde jsou postupy nalezené k většinou VS irelevantní.

Obvyklou příčinou je, že se vám na Build serveru spouští při testech něco víc, než plánujete.

Například

  • patternu pro assemblies s unit-testy odpovídá i jiný projekt, v mém případě např. TestHelpers.dll se sdílenými pomůckami nečekaně spadl do výchozího patternu „*test*.dll“, který na konkrétním buiĺdu nebyl změněn za námi používanou konvenci „*Tests.dll“. Můj TestHelpers.dll referencuje také Microsoft.VisualStudio.QualityTools.UnitTestFramework.dll a chyba byla na světe.
  • pattern pro assemblies s unit-testy najde vaše testy vícekrát v různých složkách. Pomoct by mělo změnit pattern  z „**\*test*.dll“ na „*test*.dll“, aby se obešel folder-matching.

Vzdálené spouštění testů se nedaří: Failed to queue test run ‚…‘: A connection attempt failed…

Problém: Na build serveru (TFS 2015) spouštíme v rámci buildu unit testy. Testy jsou spouštěny vzdáleně na test serveru (test controller / test agent). Spuštění testů se nezdaří, dostáváme chybu „Failed to queue test run ‚…‘: A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond.“

Řešení: Ve Windows Firewallu stroje, který vzdáleně spouště testy, povolit komunikaci programu C:\ProgramFiles (x86)\Microsoft Visual Studio 14.0\Common7\IDE\MSTest.exe.

Zdůrazňuji, že konfigurujeme volající stranu (build server), nikoliv volanou stranu (test server).

Zdá se, že nám výskyt tohoto problému souvisí s instalací Visual Studia 2015. Instalátor sice do firewallu několik pravidel přidal, nicméně ta nedostačovala.

Ochutnávka TFS z praxe – Microsoft ALM Camp – slides z přednášky [28.1.2015]

Slides z naší (Robert Haken & Jiří Kanda) včerejší přednášky pro Microsoft ALM Camp:

Záznam jsme tentokrát nepořizovali. Jednalo se však o okleštěnou verzi velmi podobného vystoupení pro WUG Praha z ledna 2015.

Zkušenosti s přechodu na TFS a agilní techniky – záznam a slides [WUG Praha 1/2015]

Slides z přednášky 15.1.2015 pro Windows User Group Praha (WUG), kde jsme s kolegou Jirkou Kandou povídali i našich zkušenostech z přechodu HAVITu na TFS a agilní techniky (v období 08/2012 až 12/2014):

Z přednášky jsem pořizoval záznam, který najdete na našem HAVIT YouTube Channelu:

Omluvte sníženou kvalitu zvuku záznamu, nahrávali jsme tentokrát na dva různé mikrofony a výsledný záznam je sestřihán ze dvou různých zvukových stop (jedna z mikrofonů navíc nebyl zřejmě úplně ideálně umístěn a chytal nežádoucí ruchy).