Skip to content

Instantly share code, notes, and snippets.

@tractorcow
Created September 19, 2014 03:42
Show Gist options
  • Save tractorcow/1bf1230de23a93d968e4 to your computer and use it in GitHub Desktop.
Save tractorcow/1bf1230de23a93d968e4 to your computer and use it in GitHub Desktop.

Wprowadzenie

Zobacz docs / pl / index.md na przegląd systemu potokowe.

Uruchomienie polecenia CheckPipelineStatus

Komenda CheckPipelineStatus powinny być prowadzone w sposób ciągły, aby zapewnić, że rurociąg wnioski postępować tak szybko jak oni może. Obecnie osiąga się to z zastosowaniem procesu demon zainstalowanego na /etc/init.d/pipecheck.Kod może być znaleźć w /path/to/webroot/deploynaut/.scripts/pipecheck-initd. Powinna ona zostać zmieniona na /etc/init.d/pipecheck załadować.

Uwaga: OSX można użyć kopii szablonu pipecheck-plist do /Library/LaunchDaemons/deploynaut.pipecheck.plist i zainicjować go z "sudo obciążenia launchctl /Library/LaunchDaemons/deploynaut.pipecheck.plist"

Przed instalacją, będziemy chcieli, aby dwukrotnie sprawdzić webroots w obu skryptów. Obecnie zakłada się, że Webroot jest / sites / deploynaut / www, i dlatego, że skrypt pipecheck, że zawsze jest w pętli /sites/deploynaut/www/deploynaut/.scripts/pipecheck. Oba skrypty muszą być nieznacznie zmodyfikowana (w sekcjach config tylko), jeśli to nie jest przypadek.

Po to jest w miejscu, można uruchomić rurociąg checker tak: $> Sudo /etc/init.d/pipecheck początek $> Sudo /etc/init.d/pipecheck stan

Sprawdzania rurociągu może być zatrzymany z poleceniem stop: $> Sudo /etc/init.d/pipecheck zatrzymać $> Sudo /etc/init.d/pipecheck stan

Typowe żądanie byłoby coś jak:

     1. Rurociąg utworzony na podstawie .yml pliku (patrz poniżej).      2. Rurociąg :: start () nazywa się, co z kolei:          1. Ustawia wszystkie kroki, które muszą być stworzone dla tego gazociągu, na podstawie pliku .yml          2. przedstawia $ this> status = 'Running' (na obiekcie Pipeline).      3. Każdy PipelineStep powinien mieć początek i koniec () () metoda i asynchroniczne kroki powinny mieć proces ()         Metoda.          1. Start () należy ustawić krok do przetwarzania (na przykład co najmniej ustawiony $ this> status = 'Started').             . Synchronicznych kroków, metoda start () wykona rzeczywisty krok wymagany.              b. Dla asynchronicznych kroków, metoda start () powinien stworzyć ofertę, enqueue go przy Resque :: Kolejkuj () i                 wywołać "wykonać () 'metody na obiektu PipelineStep.          Metoda 2. wykończenie () albo będzie się nazywać przez start () dla synchronicznych kroków, lub wykonać () przez asynchroniczne             kroki.      4. Po zakończeniu krok rurociągu, będzie on odebrany przez kontrolera CheckPipelineStatus. Sterownik ten jest         prowadzony za pośrednictwem linii poleceń (za pośrednictwem crona, demon, lub stale skolejkowania się do php-Resque - jeszcze         aby ustalić, jakie działa. Ilekroć kontroler działa, to będzie:          1. Sprawdź, aby upewnić się, że nic nie jest uruchamiany z linii poleceń.          2. Znajdź wszystkie obiekty gazociągów statusu "Running", to zadzwoń Pipeline :: checkPipelineStatus (), która:              1. Jeśli obecny etap rurociągu jest oznaczony jako "gotowy", a następnym krokiem nie jest "kroki", a następnie rozpocznij                 że następnym krokiem.              2. Jeśli bieżący krok jest oznaczony jako "gotowy", a nie ma już żadnych kroków, a następnie zaktualizować rurociągu do                 oznaczyć jako zakończone.              3. Jeśli bieżący krok jest oznaczony jako "Failed" i rurociąg nie jest również oznaczone jako "Failed", a następnie pozostawić                 komunikat ostrzegawczy w dziennikach i zaznacz rurociągu jako "Failed" też.

Plik konfiguracyjny YML

Rurociągi są ​​tworzone przez edycję plików YML do zdefiniowania czynności i ich kolejność wykonywania, a także różne ustawienia konfiguracyjne. Kilka YML są przykładowe pliki poniżej. Są obecnie polegać na środowisko są nazwy bez zmian, co nie jest idealne i byłoby dobrze, aby posprzątać.

Zmienna Config.DependsOnEnvironment jest jak kroki, takie jak SmokeTestPipelineTest wiedzieć, które środowisko do wykonywania ich kontrole.

`` `YML

Na żywo strona (project1-live.yml)

PipelineConfig: OnSuccessNotify: <instancji menedżer>, , ops @ silverstripe.com OnFailureNotify: <instancji menedżer>, , ops @ silverstripe.com DependsOnProject: "project1" DependsOnEnvironment: "UAT" FilteredCommits: "DNFinishedCommits" kroki: SmokeTestPipelineStepBefore: Klasa: SmokeTestPipelineStep PerformTestOn: "DependentEnvironment" TxtConfirmationPipelineStep: Klasa: TxtConfirmationPipelineStep Adresaci: <instancji menedżer>, , 021971373, mattpeel @ silverstripe.com ShowMaintenancePipelineStep: Klasa: ShowMaintenancePipelineStep DeploymentPipelineStep: Klasa: DeploymentPipelineStep SmokeTestPipelineStepAfter: Klasa: SmokeTestPipelineStep PerformTestOn: "ThisEnvironment" HideMaintenancePipelineStep: Klasa: HideMaintenancePipelineStep     

UAT strony (project1-uat.yml)

PipelineConfig: OnSuccessNotify: <instancji menedżer>, , ops @ silverstripe.com OnFailureNotify: <instancji menedżer>, , ops @ silverstripe.com DependsOnProject: "project1" DependsOnEnvironment: "dev" kroki: SmokeTestPipelineStepBefore: Klasa: SmokeTestPipelineStep PerformTestOn: "DependentEnvironment" ShowMaintenancePipelineStep: Klasa: ShowMaintenancePipelineStep DeploymentPipelineStep: Klasa: DeploymentPipelineStep SmokeTestPipelineStepAfter: Klasa: SmokeTestPipelineStep PerformTestOn: "ThisEnvironment" HideMaintenancePipelineStep: Klasa: HideMaintenancePipelineStep

Strona ## Dev (project1-dev.yml) PipelineConfig: OnSuccessNotify: <instancji menedżer>, , ops @ silverstripe.com OnFailureNotify: <instancji menedżer>, , ops @ silverstripe.com

Uwaga: Nie zestaw DependsOnEnvironment, co oznacza, że nie istnieją żadne przeszkody do wdrożenia.

Na przykład, nie można uruchomić SmokeTestPipelineStep z "PerformTestOn 'z' DependentEnvironment" jak jest

Brak przetestować go.

kroki: ShowMaintenancePipelineStep: Klasa: ShowMaintenancePipelineStep DeploymentPipelineStep: Klasa: DeploymentPipelineStep SmokeTestPipelineStepAfter: Klasa: SmokeTestPipelineStep PerformTestOn: "ThisEnvironment" HideMaintenancePipelineStep: Klasa: HideMaintenancePipelineStep `` `

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment