Skrypt Python w Jenkins

Jenkins to elastyczne narzędzie do tworzenia i wykonywania scenariuszy w modelu CI/CD. Scenariusz taki może składać się z przeróżnych kroków, w trakcie których wykorzystujemy zewnętrzne narzędzia takie jak skrypty Pythona. W dzisiejszym artykule zaprezentuję Ci trzy sposoby wywoływania skryptów Python w Jenkins w projektach opisywanych za pomocą zdefiniowanych akcji jak i jako pipeline.

Podejście bez wtyczki

Czy Jenkins ma wbudowane wsparcie dla języka Python i napisanych w nim programów? I tak i nie. Nie ma mechanizmu dedykowanego samemu językowi Python czy uruchamianiu napisanym w nim programów. Z drugiej strony programy w Pythonie nie wymagają zazwyczaj jakiegoś specjalnego traktowania. Poza wirtualnymi środowiskami venv uruchamiamy je z linii poleceń. Zatem tworząc pipeline naszego scenariusza posłużymy się akcją wywołania dowolnego programu napisanego w Pythonie za pomocą wiersza poleceń.

stage('build') {
    steps {
        sh 'python3 mojaaplikacja.py'
    }
}

Tak uruchomiona aplikacja wykonana będzie w natywnym środowisku, w którym zainstalowany został Jenkins. Oznacza to, że domyślnie wszystkie niezbędne do jej wykonania biblioteki muszą być dostępne w kontekście całego systemu operacyjnego, na którym uruchamiamy aplikację. 

A co jeżeli chcemy posłużyć się środowiskiem venv, w którym umieścimy niezbędne biblioteki i wykonamy program? To zadanie jest nieco trudniejsze. Nie obejdzie się bez napisania dodatkowego wrappera. Posłuży on nam, aby w pojedynczym kroku scenariusza, który wykona Jenkins zawrzeć trzy operacje. Musi on spowodować uruchomienie wirtualnego środowiska. wykonanie aplikacji, a następnie powrót do systemu operacyjnego. Nie jest to skomplikowane, ale istnieje bardziej elastyczne rozwiązanie. Wskazaną aplikację wykonamy po prostu w kontenerze Dockera. 

pipeline {
    agent { docker { image 'moj_kontener_z_python_i_aplikacja:3.8' } }
    stages {
        stage('build') {
            steps {
                sh 'python3 mojaaplikacja.py'
            }
        }
    }
}

Potrzebujemy odpowiedniej wtyczki

Jeżeli tworzymy projekt typu freestyle, czyli nie piszemy skryptu pipeline, a w GUI określamy kolejne kroki, aby uruchomić skrypty Pythona potrzebujemy dodatkowej wtyczki o nazwie “Python Plugin

Instalacja wtyczki Python Plugin

Gdy ją zainstalujemy to w krokach, które możemy dodać w fazie Build naszego projektu pojawi nam się nowy typ akcji Execute Python Script

Jenkins Python Plugin - wywołanie skryptu

Skrypt taki uruchomiony będzie przez domyślny interpreter Pythona o nazwie python. Sam skrypt umieszczamy w polu dialogowym, nie jest on uruchamiany z pliku znajdującego się w katalogu roboczym projektu.

Panda daje więcej możliwości

Trochę więcej możliwości daje inna wtyczka o nazwie ShiningPanda Plugin. Dzięki niej skonfigurujemy kilka wersji interpreterów, z których skorzystamy, gdy będziemy dodawać wykonanie aplikacji w Pythonie jako krok w projekcie. Dlatego pierwszym krokiem jest zdefiniowanie w systemie odpowiednich interpreterów. W tym celu wybieramy Manage Jenkins > Global Tool Configuration

ShiningPanda Plugin
ShiningPanda Plugin - konfiguracja interpretera

Wywołując skrypt Pythona odwołujemy się do utworzonej wcześniej konfiguracji. Zawartości skryptu nie umieszczamy w oknie dialogowym lecz odwołujemy się do pliku na dysku.

ShiningPanda Plugin - wykonanie skryptu

E-BOOK

Zaczynasz swój pierwszy projekt związany z automatyzacją?

Ten e-book jest dla Ciebie! Zawiera sprawdzone podejście, które realizowałem w wielu projektach. Sprawdź co możesz zrobić, by odnieść sukces!


Subscribe
Powiadom o
guest

Witryna wykorzystuje Akismet, aby ograniczyć spam. Dowiedz się więcej jak przetwarzane są dane komentarzy.

0 komentarzy
najstarszy
najnowszy oceniany
Inline Feedbacks
View all comments

ZdradziĆ Ci sekretY udanego projektu automatyzacji?

(link otwiera się w nowym oknie)