0Pricing
Docker & DevOps Fundamentals · Lekcja

Automatyczne wdrażanie za pomocą Jenkins

Utwórz potok CI/CD w Jenkins do wdrażania kontenerów Docker w środowisku docelowym.

Automatyczne wdrażanie za pomocą Jenkins to bezpłatna lekcja Docker & DevOps Fundamentals na CoddyKit. To lekcja 3 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej Docker & DevOps Fundamentals, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs Docker & DevOps Fundamentals zawiera 4 lekcji w sumie.

Wprowadzenie do automatycznego wdrażania

Witamy na ostatniej lekcji dotyczącej CI/CD z użyciem Jenkinsa i Dockera! Dzisiaj skupimy się na automatyzacji wdrażania kontenerów Docker.

Automatyczne wdrażanie to proces udostępniania oprogramowania w środowiskach produkcyjnych lub testowych bez ręcznej ingerencji. Jest to kluczowy element ciągłego dostarczania i wdrażania, który zapewnia szybkość, spójność oraz niezawodność.

Automatyczne wdrażanie za pomocą Jenkins — ilustracja 1

Dlaczego warto automatyzować wdrażanie?

Ręczne wdrażanie aplikacji może być powolne, podatne na błędy i niespójne. Automatyzacja pozwala sprostać tym wyzwaniom:

  • Szybkość: szybkie wdrażanie nowych funkcji i poprawek.
  • Niezawodność: ograniczenie liczby błędów ludzkich dzięki ustandaryzowanym procesom.
  • Spójność: zapewnienie, że każde wdrożenie przebiega według tych samych kroków.
  • Efektywność: umożliwienie programistom skupienia się na kodowaniu zamiast na zadaniach związanych z wdrażaniem.

Etapy potoku wdrażania

Typowy potok Jenkins do wdrażania Dockera obejmuje kilka kluczowych etapów:

  • Build: zbudowanie obrazu Docker (omówione we wcześniejszych lekcjach).
  • Test: uruchomienie automatycznych testów dla obrazu.
  • Push: przesłanie obrazu do rejestru Docker.
  • Deploy: pobranie obrazu z rejestru i uruchomienie go na serwerze docelowym.
  • Verify: potwierdzenie, że nowe wdrożenie działa prawidłowo.

Dzisiaj skupimy się na etapach „Deploy” i „Verify”.

Konfiguracja środowiska docelowego

Zanim Jenkins będzie mógł przeprowadzić wdrożenie, serwer docelowy musi być gotowy. Zwykle oznacza to:

  • Docker Installed: na serwerze docelowym musi być zainstalowany Docker Engine.
  • SSH Access: Jenkins potrzebuje bezpiecznego dostępu SSH do serwera docelowego.
  • User Permissions: użytkownik SSH musi mieć uprawnienia do uruchamiania poleceń Dockera.

Dane uwierzytelniające SSH zwykle przechowujemy bezpiecznie w Jenkins.

Dane uwierzytelniające SSH w Jenkins

Do łączenia się ze zdalnym serwerem Jenkins używa danych uwierzytelniających SSH. Zwykle są to pary: nazwa użytkownika SSH i klucz prywatny, przechowywane bezpiecznie w menedżerze danych uwierzytelniających Jenkins.

Podczas definiowania potoku można wskazać Jenkinsowi użycie tych danych uwierzytelniających w określonych etapach, co pozwala mu wykonywać polecenia na serwerze docelowym.

Przykład podstawowego skryptu wdrażania

Oto prosty skrypt powłoki, który można wykonać na serwerze docelowym w celu zaktualizowania kontenera Docker. Skrypt zatrzymuje stary kontener, usuwa go, pobiera nowy obraz i uruchamia kontener.

Zmienne APP_NAME i IMAGE_NAME zostaną przekazane jako zmienne środowiskowe.

#!/bin/bash

# Stop and remove existing container
docker stop ${APP_NAME} || true
docker rm ${APP_NAME} || true

# Pull the new Docker image
docker pull ${IMAGE_NAME}

# Run the new container
docker run -d --name ${APP_NAME} -p 80:80 ${IMAGE_NAME}

echo "Deployment of ${APP_NAME} complete!"

Integracja z potokiem Jenkins

W pliku Jenkinsfile można użyć wtyczki sshPublisher lub prostego kroku sh z przekazywaniem agenta SSH, aby wykonywać polecenia na zdalnym hoście. Oto jak może wyglądać etap wdrażania z użyciem podstawowego kroku sh, przy założeniu, że SSH jest skonfigurowane.

agent { label 'remote-deploy-host' } oznacza, że ten etap jest wykonywany na serwerze docelowym.

stage('Deploy to Production') {
  agent { label 'remote-deploy-host' } 
  steps {
    withEnv([
      "APP_NAME=my-webapp",
      "IMAGE_NAME=myregistry/my-webapp:latest"
    ]) {
      sh '''
        docker stop ${APP_NAME} || true
        docker rm ${APP_NAME} || true
        docker pull ${IMAGE_NAME}
        docker run -d --name ${APP_NAME} -p 80:80 ${IMAGE_NAME}
        echo "Deployment successful!"
      '''
    }
  }
}

Osiąganie aktualizacji kroczących

Wdrożenia bez przestojów wymagają czegoś więcej niż prostego zatrzymania i ponownego uruchomienia. Zwykle stosuje się strategię taką jak:

  • Rolling Update: stopniowe zastępowanie starych kontenerów nowymi, jeden po drugim, przy zachowaniu dostępności usługi.
  • Blue/Green Deployment: wdrożenie nowej wersji (Green) obok starej (Blue), a następnie przełączenie ruchu.

Jenkins może koordynować takie działania, ale narzędzia takie jak Docker Swarm lub Kubernetes oferują natywną obsługę bardziej zaawansowanych strategii.

Weryfikacja wdrożenia

Po wdrożeniu należy koniecznie sprawdzić, czy aplikacja działa prawidłowo. Może to obejmować:

  • Health Checks: proste żądania HTTP GET kierowane do punktu końcowego sprawdzania stanu aplikacji.
  • Log Monitoring: sprawdzanie dzienników kontenera pod kątem błędów.
  • Integration Tests: uruchomienie krótkiego zestawu testów dla nowo wdrożonej wersji.

Potok Jenkins może zawierać etap „Verify”, który automatyzuje te kontrole.

Sprawdź swoją wiedzę

Rozważ poniższy fragment Jenkinsfile dotyczący etapu wdrażania. Jaki jest główny cel polecenia docker stop ${APP_NAME} || true?

Podsumowanie: automatyczne wdrażanie

Świetnie! Nauczono się, jak podchodzić do automatycznego wdrażania za pomocą Jenkinsa i Dockera.

  • Automatyczne wdrażanie zapewnia szybkie, niezawodne i spójne wydania.
  • Środowiska docelowe wymagają Dockera i dostępu SSH.
  • Jenkins używa bezpiecznych danych uwierzytelniających do łączenia się ze zdalnymi serwerami.
  • Skrypty wdrażania zwykle zatrzymują stare kontenery, pobierają nowe obrazy i uruchamiają nowe kontenery.
  • Kroki weryfikacji są kluczowe, aby potwierdzić pomyślne wdrożenie.

To kończy kurs CI/CD z użyciem Jenkinsa i Dockera. Ćwicz dalej, aby opanować te potężne narzędzia!

Często zadawane pytania

Czy lekcja „Automatyczne wdrażanie za pomocą Jenkins” jest bezpłatna?

Tak — pełny tekst „Automatyczne wdrażanie za pomocą Jenkins” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu Docker & DevOps Fundamentals, przejdź na CoddyKit PRO. Kurs Docker & DevOps Fundamentals zawiera 4 lekcji w sumie.

Co nauczysz się w „Automatyczne wdrażanie za pomocą Jenkins”?

Utwórz potok CI/CD w Jenkins do wdrażania kontenerów Docker w środowisku docelowym. Ćwiczysz Docker & DevOps Fundamentals z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.

Czy potrzebuję doświadczenia, aby zacząć Docker & DevOps Fundamentals?

Nie wymagamy żadnego doświadczenia. Docker & DevOps Fundamentals w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 3 z 4.

Ile czasu zajmuje lekcja „Automatyczne wdrażanie za pomocą Jenkins”?

Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.

Czy mogę pisać i uruchamiać kod w tej lekcji Docker & DevOps Fundamentals?

Tak. Każda lekcja Docker & DevOps Fundamentals zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.

Wszystkie lekcje w tym kursie

  1. Wprowadzenie do Jenkins
  2. Budowanie obrazów Docker za pomocą Jenkins
  3. Automatyczne wdrażanie za pomocą Jenkins
  4. Pipeline jako kod w Jenkins z użyciem Jenkinsfile
← Powrót do Docker & DevOps Fundamentals