MySQL w definicjach Build oraz Release w Visual Studio Team Services


Wcześniej nie pisałem nigdy o naszym produkcie, który nazywa się Visual Studio Team Services. Nie będę się teraz o nim bardzo rozpisywał, bo nie o tym jest ten post, ale kilka zdań wprowadzenia postanowiłem napisać - szczególnie jeżeli nie miałeś styczność wcześniej.

Jeżeli wiesz co to jest VSTS /TFS przejdź od razu do sekcji MySQL.

VSTS / TFS

Visual Studio Team Services (VSTS) jest usługą chmurową, która wspomaga pełny proces zarządzania cyklem życia aplikacji - Application Lifecycle Management (ALM), w tym wspomaga proces dostarczenia praktyk DevOps.

Jest też analogiczny produkt, który można wdrożyć w lokalnej infrastrukturze Team Foundation Server (TFS).

Chcesz wiedzieć więcej o VSTS / TFS? Zapraszam na stronę produktową oraz do dokumentacji.

Agent

Niezależnie czy używasz VSTS czy TFS, cała siła wykonawcza narzędzia bazuje na agentach. Agent to nic innego jak maszyna wirtualna (lub fizyczna) z zainstalowanym zestawem narzędzi, które mają wykonać określone zadanie w procesie Build oraz Release.

Agent może być oparty o system Windows lub Linux, z czego dla platformy chmurowej VSTS można używać dzierżawionych maszyn (Hosted pool) tylko na proces wykonywania zadań. Hostowany agent oparty jest o system Windows i ma już zainstalowany pewien zestaw narzędzi (spacyfikacja w dokumentacji). Na dzień dzisiejszy są też hostowane agenty oparte o system Linux, lecz ich status jest na razie Preview.

Definicje Build / Release

Zadania, które ma wykonać agent opisane są w definicjach Build oraz Release. Sam VSTS / TFS ma wbudowaną kolekcję najróżniejszych zadań (Tasks), ale oczywiście to co jest out-of-box nie sprosta wymaganiom całego świata, dlatego VSTS / TFS można rozszerzać za po mocą dodatków, które publikowane są w Visual Studio Marketplace. Jest też opcja pisania własnych dodatków bez publikacji publicznej.

VSTS Release Definition

Jak pisać rozszerzenia VSTS / TFS? Zapraszam do dokumentacji.

MySQL Server

No to przejdźmy do właściwej części tego wpisu... Pracując z jednym partnerem, który wytwarza własne oprogramowanie i hostuje je na Microsoft Azure, podczas warsztatów z optymalizacji architektury wyszło, że jednym z elementów jest serwer baz danych MySQL. Celem na koniec dnia po za optymalizacją architektury było dostarczanie rozwiązania w ramach praktyk DevOps w tym zmian do struktury bazy danych MySQL.

VSTS nie posiada wbudowanych Tasks dla serwera MySQL. Rozwiązanie problemu w takim przypadku jest bardzo proste - agent musi zawierać zestaw narzędzi, które mogą być użyte w definicjach Build lub Release i pod zadanie należy podstawić własny skrypt, który to narzędzie użyje. Scenariusz ten jest bardzo popularny, natomiast wymaga w takiej sytuacji utrzymywania własnego agenta.

Partner jednak nie chciał utrzymywać własnych agentów dla VSTS, a korzystać z dzierżawionych w ramach chmury Microsoft Azure. Jak wspomniałem hostowane agenty (produkcyjne, nie Preview) oparte są o systemu Windows z określonym zestawem narzędzi, a w nim jest brak narzędzi dla serwera MySQL.

Korzystając z biblioteki MySQL Connector/Net, napisałem skrypt PowerShell, który wczytuje bibliotekę MySQL.Data.dll, a następnie już z poziomu PowerShell wykonywane są zapytania lub całe skrypty w bazie danych MySQL. Działa i na tym można by zakończyć temat, ale...

... ale idąc dalej, postanowiłem napisać rozszerzenie do VSTS / TFS, które wspomaga wykonywanie komend ad-hoc lub skryptów MySQL z poziomu hostowanych jak i prywatnych agentów opartych o system Windows.

Rozszerzenie zawiera 3 zadania, które są dostępne w Task catalog, w sekcji Utility.

Task catalog

  • Run MySQL command - zadanie to wykonuje zapytania ad-hoc.
  • Run MySQL script - zadanie wczytuje zawartość skryptu .sql i wykonuje je po stronie serwera.
  • Run MySQL scripts - zadanie wczytuje po kolei wszystkie skrypty .sql, które znajdują się w podanym katalogu i wykonuje je po stronie serwera.

Run MySQL Script

Rozszerzenie MySQL Toolkit for Windows możesz zainstalować bezpośrednio w VSTS za pomocą Visual Studio Marketplace (aka.ms/vstsmysqlwin) lub ściągnąć plik .vsix i wgrać go do swojego serwera TFS.

Cały projekt udostępniony jest w postaci kodu źródłowego na GitHub pod adresem aka.ms/vstsmysqlwinsrc.

Komentarze, błędy, pomysły na rozwój mile widziane 🙂 - najlepiej zgłaszaj je za pośrednictwem GitHub Issue Tracker.

Comments (0)

Skip to main content