Podczas pisania potoków Jenkins wydaje się bardzo niewygodne zatwierdzanie każdej nowej zmiany, aby sprawdzić, czy działa.
Czy istnieje sposób, aby wykonać je lokalnie bez zatwierdzania kodu?
Podczas pisania potoków Jenkins wydaje się bardzo niewygodne zatwierdzanie każdej nowej zmiany, aby sprawdzić, czy działa.
Czy istnieje sposób, aby wykonać je lokalnie bez zatwierdzania kodu?
Nie można wykonać skryptu Pipeline lokalnie, ponieważ jego jedynym celem jest wykonanie skryptu Jenkins. (Co jest jednym z powodów, dla których najlepiej jest trzymać się Jenkinsfile
krótkiego i ograniczonego do kodu, który faktycznie zajmuje się funkcjami Jenkinsa; twoja logika kompilacji powinna być obsługiwana za pomocą zewnętrznych procesów lub narzędzi budowania, które wywołujesz za pomocą jednego wiersza sh
lub bat
kroku.)
Jeśli chcesz przetestować zmiany na Jenkinsfile
żywo, ale bez popełniania go użyć do powtórki funkcji dodanej w 1.14
JENKINS-33925 śledzi pożądane zautomatyzowane środowisko testowe.
Mam rozwiązanie, które działa dobrze dla mnie. Składa się z lokalnego jenkinsa uruchomionego w oknie dokowanym i haka sieciowego git, który uruchamia potok w lokalnych jenkinsach przy każdym zatwierdzeniu. Nie musisz już naciskać na repozytorium github lub bitbucket, aby przetestować potok.
Zostało to przetestowane tylko w środowisku Linux.
Wykonanie tej czynności jest dość proste, chociaż ta instrukcja jest trochę długa. Większość kroków już tam jest.
Właśnie tego potrzebujesz
Tak to się robi
Jenkins Docker
Utwórz plik o nazwie Dockerfile w miejscu swojego wyboru. Wstawiam to,
/opt/docker/jenkins/Dockerfile
wypełnij to:Zbuduj obraz local_jenkins
Musisz to zrobić tylko raz lub po dodaniu czegoś do Dockerfile.
Uruchom i uruchom ponownie local_jenkins
Od czasu do czasu chcesz łatwo uruchamiać i ponownie uruchamiać jenkins. Np. Po ponownym uruchomieniu komputera. W tym celu utworzyłem alias, który umieszczam w
.bash_aliases
folderze domowym.Upewnij się, że
/opt/docker/jenkins/jenkins_home
folder istnieje i że masz prawa do odczytu i zapisu do niego.Aby uruchomić lub ponownie uruchomić jenkins, po prostu wpisz:
Wszystko, co robisz w swoich lokalnych jenkinsach, będzie przechowywane w folderze / opt / docker / jenkins / jenkins_home i zachowane między restartami.
Utwórz klucz dostępu ssh w jenkins dokera
Jest to bardzo ważna część, aby to zadziałało. Najpierw uruchamiamy kontener dokera i tworzymy dla niego powłokę bash:
Wszedłeś już do kontenera dokowanego, co możesz zobaczyć na przykład
jenkins@e7b23bad10aa:/$
w swoim terminalu. Hash po @ na pewno się różni.Utwórz klucz
Naciśnij Enter na wszystkie pytania, dopóki nie pojawi się monit
Skopiuj klucz na swój komputer. Z wewnątrz kontenera dokowanego twój komputer to 172.17.0.1.
użytkownik = twoja nazwa użytkownika i 172.17.0.1 to adres IP twojego komputera z kontenera dokera.
W tym momencie będziesz musiał wpisać swoje hasło.
Teraz spróbujmy zakończyć pętlę, wysyłając ssh-s do komputera z poziomu kontenera dokowanego.
Tym razem nie musisz wprowadzać hasła. Jeśli to zrobisz, coś poszło nie tak i musisz spróbować ponownie.
Będziesz teraz w folderze domowym komputera. Spróbuj
ls
i spójrz.Nie zatrzymuj się tutaj, ponieważ mamy łańcuch muszli ssh, z których musimy się wydostać.
Dobrze! Teraz wróciliśmy i jesteśmy gotowi, aby kontynuować.
Zainstaluj swoje Jenkins
Znajdziesz lokalnego Jenkinsa w przeglądarce pod adresem http: // localhost: 8787 .
Za pierwszym razem, gdy wskażesz przeglądarkę lokalnemu Jenkinsowi, zostaniesz przywitany za pomocą Kreatora instalacji. Domyślne ustawienia są w porządku, upewnij się jednak, że instalujesz wtyczkę potoku podczas instalacji.
Skonfiguruj swoje jenkins
Jest bardzo ważne , aby aktywować matrycy bezpieczeństwa opartej na http: // localhost: 8787 / configureSecurity i dać sobie wszelkie prawa , dodając się do matrycy i wszystko pasowało. (Po prawej stronie znajduje się ikona zaznaczania wszystkich pól)
Jenkins’ own user database
jako królestwo bezpieczeństwaMatrix-based security
w sekcji AutoryzacjaUser/group to add:
i kliknij[ Add ]
przyciskPrevent Cross Site Request Forgery exploits
nie jest zaznaczone. (Ponieważ ten Jenkins jest dostępny tylko z twojego komputera, nie jest to taka wielka sprawa)[ Save ]
i wyloguj się z Jenkins, a następnie ponownie, aby upewnić się, że działa. Jeśli tak nie jest, musisz zacząć od początku i opróżnić/opt/docker/jenkins/jenkins_home
folder przed ponownym uruchomieniemDodaj użytkownika git
Musimy zezwolić naszemu haczykowi na logowanie się do naszego lokalnego Jenkinsa z minimalnymi uprawnieniami. Wystarczy zobaczyć i zbudować miejsca pracy. Dlatego tworzymy użytkownika o nazwie
git
z hasłemlogin
.Skieruj swoją przeglądarkę na http: // localhost: 8787 / securityRealm / addUser i dodaj
git
jako nazwę użytkownika ilogin
hasło. Kliknij na[ Create User ]
.Dodaj prawa do użytkownika git
Przejdź do strony http: // localhost: 8787 / configureSecurity w przeglądarce. Dodaj użytkownika git do macierzy:
git
w poluUser/group to add:
i kliknij[ Add ]
Teraz nadszedł czas, aby zaznaczyć pola minimalnych praw użytkownika git. Potrzebne są tylko te:
Upewnij się, że pole
Prevent Cross Site Request Forgery exploits
wyboru nie jest zaznaczone i kliknij[ Save ]
Utwórz projekt rurociągu
Zakładamy, że mamy nazwę użytkownika
user
i nasz projekt z włączoną obsługą git zJenkinsfile
nią się nazywaproject
i znajduje się pod adresem/home/user/projects/project
W swoim http: // localhost: 8787 Jenkins dodaj nowy projekt potoku. Nazwałem to hookpipeline w celach informacyjnych.
New Item
w menu Jenkinshookpipeline
[ OK ]
Poll SCM
w sekcji Wyzwalacze kompilacji. Pozostaw harmonogram pusty.Pipeline script from SCM
Repository URL
polu wpisz[email protected]:projects/project/.git
Script Path
polu wpiszJenkinsfile
Utwórz git hook
Przejdź do
/home/user/projects/project/.git/hooks
folderu i utwórz plik o nazwie,post-commit
który zawiera:Udostępnij ten plik jako wykonywalny:
Przetestuj hak po zatwierdzeniu:
Sprawdź w Jenkins, czy Twój projekt hookpipeline został uruchomiony.
Na koniec dokonaj dowolnych zmian w projekcie, dodaj zmiany i dokonaj zatwierdzenia. Spowoduje to teraz uruchomienie potoku w lokalnym Jenkins.
Szczęśliwe dni!
źródło
docker build -t local_jenkins /opt/docker/jenkins/Dockerfile
zdocker build -t local_jenkins /opt/docker/jenkins
ponieważ Docker skarżył się „w stanie przygotować kontekstu: kontekst musi być katalogiem”.$ docker inspect jenkins | grep Gateway
ssh [email protected]
zamiast używać adresu IP. Upewnij się także, że włączyłeś funkcję Zdalnego logowania z systemu MacOs Preferencje systemowe -> menu Folder współdzielonyTL; DR
Długa wersja
Testy rurociągów Jenkins stają się coraz bardziej uciążliwe. W przeciwieństwie do klasycznej metody deklaratywnej konfiguracji zadania, w której użytkownik był ograniczony do tego, co ujawnił interfejs użytkownika, nowy Jenkins Pipeline jest pełnoprawnym językiem programowania dla procesu kompilacji, w którym część deklaratywną miesza się z własnym kodem. Jako dobrzy programiści chcemy również przeprowadzić testy jednostkowe dla tego rodzaju kodu.
Przy opracowywaniu rurociągów Jenkins należy wykonać trzy kroki. Etap 1. powinno obejmować 80% przypadków zastosowań.
Przykłady
PipelineUnit GitHub repo zawiera kilka przykładów Spocka na temat korzystania Jenkins Pipeline Jednostka testowania ramy
źródło
Jenkins ma funkcję „Powtórz”, która umożliwia szybkie odtworzenie zadania bez aktualizacji źródeł:
źródło
W momencie pisania (pod koniec lipca 2017 r.) Za pomocą wtyczki Blue Ocean możesz sprawdzić składnię deklaratywnego potoku bezpośrednio w edytorze wizualnych potoków . Edytor działa z interfejsu Blue Ocean, kiedy klikniesz „konfiguruj” tylko dla projektów github (jest to znany problem i pracują nad tym, aby działał również na git itp.).
Ale, jak wyjaśniono w tym pytaniu , możesz otworzyć przeglądarkę edytora, aby:
[Jenkins URL]/blue/organizations/jenkins/pipeline-editor/
Następnie kliknij na środku strony i naciśnij
Ctrl+S
, otworzy się obszar tekstowy, w którym możesz wkleić deklaratywny skrypt potoku. Jeśli klikniesz Aktualizuj , jeśli wystąpi błąd składniowy, edytor poinformuje Cię, gdzie jest błąd składniowy. Jak na tym zrzucie ekranu:Jeśli nie wystąpi błąd składni, obszar tekstowy zostanie zamknięty, a strona wizualizuje Twój potok. Nie martw się, nic nie uratuje (jeśli jest to projekt github, zatwierdziłby zmianę Jenkinsfile).
Jestem nowy w Jenkins i to jest całkiem pomocne, bez tego musiałem wielokrotnie popełniać plik Jenkins, aż zadziała (bardzo denerwujące!). Mam nadzieję że to pomoże. Twoje zdrowie.
źródło
Trochę za późno na imprezę, ale dlatego napisałem
jenny
, małą reimplementację niektórych podstawowych kroków Jenkinsfile. ( https://github.com/bmustiata/jenny )źródło
O ile mi wiadomo ta wtyczka do potoku jest „silnikiem” nowej mechaniki Jenkinsfile, więc jestem całkiem pewny, że możesz użyć tego do lokalnego testowania swoich skryptów.
Nie jestem pewien, czy potrzebne są dodatkowe kroki podczas kopiowania do pliku Jenkins, jednak składnia itp. Powinna być dokładnie taka sama.
Edycja: Znaleziono odniesienie do „silnika”, sprawdź ten opis funkcji, ostatni akapit, pierwszy wpis.
źródło
W mojej konfiguracji programistycznej - brak odpowiedniego edytora Groovy - wiele problemów z Jenkinsfile wynika z prostych błędów składniowych . Aby rozwiązać ten problem, możesz sprawdzić poprawność pliku Jenkins względem instancji Jenkins (działającej w
$JENKINS_HTTP_URL
):curl -X POST -H $(curl '$JENKINS_HTTP_URL/crumbIssuer/api/xml?xpath=concat(//crumbRequestField,":",//crumb)') -F "jenkinsfile=<Jenkinsfile" $JENKINS_HTTP_URL/pipeline-model-converter/validate
Powyższe polecenie jest nieznacznie zmodyfikowaną wersją https://github.com/jenkinsci/pipeline-model-definition-plugin/wiki/Validating-(or-linting)-a-Declarative-Jenkinsfile-from-the-command-line
źródło
Oprócz funkcji powtórki, o której wspominali już inni (to samo dotyczy jej przydatności!), Znalazłem również następujące informacje:
źródło
Umieść swój klucz SSH w swoim profilu Jenkins, a następnie użyj deklaratywnej wkładki w następujący sposób:
Spowoduje to wykonanie analizy statycznej pliku Jenkinsfile. W wybranym edytorze zdefiniuj skrót klawiaturowy, który uruchamia to polecenie automatycznie. W Visual Studio Code, którego używam, przejdź do Zadania> Konfiguruj zadania, a następnie użyj następującego JSON, aby utworzyć polecenie Sprawdź poprawność Jenkinsfile :
źródło
używam powtórki w przyszłości, aby dokonać aktualizacji i uruchomić szybko.
źródło
Z pewnymi ograniczeniami i dla skryptowanych potoków używam tego rozwiązania:
źródło