Samouczek: Wdrażanie z usługi GitHub w usłudze Azure Kubernetes (AKS) dzięki ciągłej integracji i wdrażaniu usługi JenkinsTutorial: Deploy from GitHub to Azure Kubernetes Service (AKS) with Jenkins continuous integration and deployment

W tym samouczku wdraża przykładową aplikację z usługi GitHub do klastra usługi Azure Kubernetes Service (AKS) przez skonfigurowanie ciągłej integracji (CI) i ciągłego wdrażania (CD) w usłudze Jenkins.This tutorial deploys a sample app from GitHub to an Azure Kubernetes Service (AKS) cluster by setting up continuous integration (CI) and continuous deployment (CD) in Jenkins. W ten sposób po zaktualizowaniu aplikacji przez wypychanie zatwierdzeń do usługi GitHub usługa Jenkins automatycznie uruchamia nową kompilację kontenera, wypycha obrazy kontenerów do rejestru kontenerów platformy Azure (ACR), a następnie uruchamia aplikację w usłudze AKS.That way, when you update your app by pushing commits to GitHub, Jenkins automatically runs a new container build, pushes container images to Azure Container Registry (ACR), and then runs your app in AKS.

W tym samouczku wykonasz następujące zadania:In this tutorial, you'll complete these tasks:

  • Wdrażanie przykładowej aplikacji do głosowania platformy Azure w klastrze AKS.Deploy a sample Azure vote app to an AKS cluster.
  • Tworzenie podstawowego projektu jenkinsa.Create a basic Jenkins project.
  • Skonfiguruj poświadczenia dla usługi Jenkins do interakcji z acr.Set up credentials for Jenkins to interact with ACR.
  • Tworzenie zadania kompilacji usługi Jenkins i elementu webhook Usługi GitHub dla kompilacji automatycznych.Create a Jenkins build job and GitHub webhook for automated builds.
  • Przetestuj potok ciągłej integracji/ciągłego wdrażania, aby zaktualizować aplikację w usłudze AKS na podstawie zatwierdzania kodu Usługi GitHub.Test the CI/CD pipeline to update an application in AKS based on GitHub code commits.

Wymagania wstępnePrerequisites

Do ukończenia tego samouczka są potrzebne następujące elementy:To complete this tutorial, you need these items:

Przygotowanie aplikacjiPrepare your app

W tym artykule należy użyć przykładowej aplikacji głosowania platformy Azure, która zawiera interfejs sieci web hostowany w co najmniej jednym zasobniku i drugiego zasobnika obsługującego usługę Redis do tymczasowego przechowywania danych.In this article, you use a sample Azure vote application that contains a web interface hosted in one or more pods, and a second pod hosting Redis for temporary data storage. Przed zintegrowaniem usługi Jenkins i usługi AKS w celu wdrożenia automatycznego należy najpierw ręcznie przygotować i wdrożyć aplikację głosowania platformy Azure w klastrze usługi AKS.Before you integrate Jenkins and AKS for automated deployments, first manually prepare and deploy the Azure vote application to your AKS cluster. To wdrożenie ręczne jest wersją jednej z aplikacji i umożliwia wyświetlenie aplikacji w akcji.This manual deployment is version one of the application, and lets you see the application in action.

Uwaga

Przykładowa aplikacja do głosowania platformy Azure używa zasobnika systemu Linux, który jest zaplanowany do uruchomienia w węźle systemu Linux.The sample Azure vote application uses a Linux pod that is scheduled to run on a Linux node. Przepływ opisany w tym artykule działa również dla zasobnika systemu Windows Server zaplanowanego w węźle systemu Windows Server.The flow outlined in this article also works for a Windows Server pod scheduled on a Windows Server node.

Rozwidli następujące repozytorium GitHub dla https://github.com/Azure-Samples/azure-voting-app-redisprzykładowej aplikacji - .Fork the following GitHub repository for the sample application - https://github.com/Azure-Samples/azure-voting-app-redis. Aby utworzyć rozwidlenie repozytorium na koncie usługi GitHub, wybierz przycisk Rozwidlenie w prawym górnym rogu.To fork the repo to your own GitHub account, select the Fork button in the top right-hand corner.

Sklonuj widelec do systemu programistycznego.Clone the fork to your development system. Upewnij się, że używasz adresu URL widelca podczas klonowania tego repozytorium:Make sure you use the URL of your fork when cloning this repo:

git clone https://github.com/<your-github-account>/azure-voting-app-redis.git

Zmień katalog sklonowanego widelca:Change to the directory of your cloned fork:

cd azure-voting-app-redis

Aby utworzyć obrazy kontenerów potrzebne dla przykładowej aplikacji, użyj pliku docker-compose.yaml z: docker-composeTo create the container images needed for the sample application, use the docker-compose.yaml file with docker-compose:

docker-compose up -d

Wymagane obrazy podstawowe są pobierane i kontenery aplikacji zbudowany.The required base images are pulled and the application containers built. Następnie można użyć polecenia obrazy platformy docker, aby wyświetlić utworzony obraz.You can then use the docker images command to see the created image. Zostały pobrane lub utworzone trzy obrazy.Three images have been downloaded or created. Obraz azure-vote-front zawiera aplikację i używa obrazu nginx-flask jako podstawy.The azure-vote-front image contains the application and uses the nginx-flask image as a base. Obraz redis jest używany do uruchamiania wystąpienia Redis:The redis image is used to start a Redis instance:

$ docker images

REPOSITORY                   TAG        IMAGE ID            CREATED             SIZE
azure-vote-front             latest     9cc914e25834        40 seconds ago      694MB
redis                        latest     a1b99da73d05        7 days ago          106MB
tiangolo/uwsgi-nginx-flask   flask      788ca94b2313        9 months ago        694MB

Aby można było wypchnąć obraz kontenera z przodu głosowania azure do programu ACR, pobierz serwer logowania ACR za pomocą polecenia az acr list.Before you can push the azure-vote-front container image to ACR, get your ACR login server with the az acr list command. W poniższym przykładzie zostanie odnajduje się adres serwera logowania usługi ACR dla rejestru w grupie zasobów o nazwie myResourceGroup:The following example gets the ACR login server address for a registry in the resource group named myResourceGroup:

az acr list --resource-group myResourceGroup --query "[].{acrLoginServer:loginServer}" --output table

Użyj polecenia tagu docker, aby oznaczyć obraz nazwą serwera v1logowania ACR i numerem wersji programu .Use the docker tag command to tag the image with the ACR login server name and a version number of v1. Podaj <acrLoginServer> własne imię i nazwisko uzyskane w poprzednim kroku:Provide your own <acrLoginServer> name obtained in the previous step:

docker tag azure-vote-front <acrLoginServer>/azure-vote-front:v1

Na koniec wypchnij obraz frontowy azure-vote do rejestru ACR.Finally, push the azure-vote-front image to your ACR registry. Ponownie zastąp <acrLoginServer> nazwą serwera logowania własnego rejestru myacrregistry.azurecr.ioACR, takiego jak:Again, replace <acrLoginServer> with the login server name of your own ACR registry, such as myacrregistry.azurecr.io:

docker push <acrLoginServer>/azure-vote-front:v1

Wdrażanie przykładowej aplikacji w udręki AKSDeploy the sample application to AKS

Aby wdrożyć przykładową aplikację do klastra AKS, można użyć pliku manifestu Kubernetes w katalogu głównym repozytorium głosowania platformy Azure.To deploy the sample application to your AKS cluster, you can use the Kubernetes manifest file in the root of the Azure vote repository repo. Otwórz plik manifestu azure-vote-all-in-one-redis.yaml za vipomocą edytora, takiego jak .Open the azure-vote-all-in-one-redis.yaml manifest file with an editor such as vi. Zastąp wartość microsoft nazwą serwera logowania usługi ACR.Replace microsoft with your ACR login server name. Ta wartość znajduje się w wierszu 47 pliku manifestu:This value is found on line 47 of the manifest file:

containers:
- name: azure-vote-front
  image: microsoft/azure-vote-front:v1

Następnie użyj polecenia zastosuj kubectl, aby wdrożyć aplikację w klastrze usługi AKS:Next, use the kubectl apply command to deploy the application to your AKS cluster:

kubectl apply -f azure-vote-all-in-one-redis.yaml

Usługa modułu równoważenia obciążenia Kubernetes jest tworzona w celu udostępnienia aplikacji do Internetu.A Kubernetes load balancer service is created to expose the application to the internet. Ten proces może potrwać kilka minut.This process can take a few minutes. Aby monitorować postęp wdrożenia modułu równoważenia obciążenia, użyj --watch polecenia kubectl get service z argumentem.To monitor the progress of the load balancer deployment, use the kubectl get service command with the --watch argument. Po zmianie adresu IP z oczekującego na adres IPnależy użyć Control + C do zatrzymania procesu obserwowania kubectl.Once the EXTERNAL-IP address has changed from pending to an IP address, use Control + C to stop the kubectl watch process.

$ kubectl get service azure-vote-front --watch

NAME               TYPE           CLUSTER-IP    EXTERNAL-IP   PORT(S)        AGE
azure-vote-front   LoadBalancer   10.0.215.27   <pending>     80:30747/TCP   22s
azure-vote-front   LoadBalancer   10.0.215.27   40.117.57.239   80:30747/TCP   2m

Aby wyświetlić aplikację w akcji, otwórz przeglądarkę internetową na zewnętrzny adres IP usługi.To see the application in action, open a web browser to the external IP address of your service. Aplikacja głosowania platformy Azure jest wyświetlana, jak pokazano w poniższym przykładzie:The Azure vote application is displayed, as shown in the following example:

Przykładowa aplikacja do głosowania platformy Azure uruchomiona w usłudze AKS

Wdrażanie usługi Jenkins na maszynie wirtualnej platformy AzureDeploy Jenkins to an Azure VM

Aby szybko wdrożyć usługę Jenkins do użycia w tym artykule, można użyć następującego skryptu do wdrożenia maszyny wirtualnej platformy Azure, skonfigurowania dostępu do sieci i ukończenia podstawowej instalacji usługi Jenkins.To quickly deploy Jenkins for use in this article, you can use the following script to deploy an Azure virtual machine, configure network access, and complete a basic installation of Jenkins. W przypadku uwierzytelniania między usługą Jenkins a klastrem AKS skrypt kopiuje plik konfiguracyjny usługi Kubernetes z systemu deweloperskiego do systemu Jenkins.For authentication between Jenkins and the AKS cluster, the script copies your Kubernetes configuration file from your development system to the Jenkins system.

Ostrzeżenie

Ten przykładowy skrypt służy do celów demonstracyjnych, aby szybko aprowizować środowisko usługi Jenkins, które działa na maszynie Wirtualnej platformy Azure.This sample script is for demo purposes to quickly provision a Jenkins environment that runs on an Azure VM. Używa rozszerzenia skryptu niestandardowego platformy Azure do skonfigurowania maszyny Wirtualnej, a następnie wyświetlenia wymaganych poświadczeń.It uses the Azure custom script extension to configure a VM and then display the required credentials. Urządzenie ~/.kube/config jest kopiowane do maszyny Wirtualnej usługi Jenkins.Your ~/.kube/config is copied to the Jenkins VM.

Uruchom następujące polecenia, aby pobrać i uruchomić skrypt.Run the following commands to download and run the script. Przed uruchomieniem skryptu należy przejrzeć https://raw.githubusercontent.com/Azure-Samples/azure-voting-app-redis/master/jenkins-tutorial/deploy-jenkins-vm.shzawartość dowolnego skryptu - .You should review the contents of any script prior to running it - https://raw.githubusercontent.com/Azure-Samples/azure-voting-app-redis/master/jenkins-tutorial/deploy-jenkins-vm.sh.

curl https://raw.githubusercontent.com/Azure-Samples/azure-voting-app-redis/master/jenkins-tutorial/deploy-jenkins-vm.sh > azure-jenkins.sh
sh azure-jenkins.sh

Utworzenie maszyny Wirtualnej i wdrożenie wymaganych składników dla platformy Docker i Jenkins zajmuje kilka minut.It takes a few minutes to create the VM and deploy the required components for Docker and Jenkins. Po zakończeniu skryptu wyprowadza adres serwera jenkins i klucz do odblokowania pulpitu nawigacyjnego, jak pokazano w poniższym przykładzie danych wyjściowych:When the script has completed, it outputs an address for the Jenkins server and a key to unlock the dashboard, as shown in the following example output:

Open a browser to http://40.115.43.83:8080
Enter the following to Unlock Jenkins:
667e24bba78f4de6b51d330ad89ec6c6

Otwórz przeglądarkę internetową na wyświetlony adres URL i wprowadź klucz odblokowania.Open a web browser to the URL displayed and enter the unlock key. Postępuj zgodnie z instrukcjami wyświetlanymi na ekranie, aby ukończyć konfigurację usługi Jenkins:Follow the on-screen prompts to complete the Jenkins configuration:

  • Wybierz pozycję Zainstaluj sugerowane wtyczkiChoose Install suggested plugins
  • Utwórz pierwszego użytkownika administratora.Create the first admin user. Wprowadź nazwę użytkownika, taką jak azureuser, a następnie podaj własne bezpieczne hasło.Enter a username, such as azureuser, then provide your own secure password. Na koniec wpisz pełną nazwę i adres e-mail.Finally, type a full name and e-mail address.
  • Wybierz pozycję Zapisz i zakończ.Select Save and Finish
  • Gdy narzędzie Jenkins będzie gotowe, wybierz pozycję Rozpocznij korzystanie z narzędzia Jenkins.Once Jenkins is ready, select Start using Jenkins
    • Jeśli po rozpoczęciu korzystania z narzędzia Jenkins w przeglądarce internetowej zostanie wyświetlona pusta strona, uruchom ponownie usługę Jenkins.If your web browser displays a blank page when you start using Jenkins, restart the Jenkins service. Aby ponownie uruchomić usługę, SSH do publicznego adresu sudo service jenkins restartIP wystąpienia usługi Jenkins i wpisz .To restart the service, SSH to the public IP address of your Jenkins instance and type sudo service jenkins restart. Po ponownym uruchomieniu usługi odśwież przeglądarkę internetową.Once the service has restarted, refresh you web browser.
  • Zaloguj się do usługi Jenkins przy użyciu nazwy użytkownika i hasła utworzonego w procesie instalacji.Sign in to Jenkins with the username and password you created in the install process.

Tworzenie zmiennej środowiskowej usługi JenkinsCreate a Jenkins environment variable

Zmienna środowiskowa usługi Jenkins jest używana do przechowywania nazwy serwera logowania usługi ACR.A Jenkins environment variable is used to hold the ACR login server name. Do tej zmiennej odwołuje się podczas zadania kompilacji jenkins.This variable is referenced during the Jenkins build job. Aby utworzyć tę zmienną środowiskową, wykonaj następujące czynności:To create this environment variable, complete the following steps:

  • Po lewej stronie portalu usługi Jenkins wybierz pozycję Zarządzaj > systemem konfigurowania usługi JenkinsOn the left-hand side of the Jenkins portal, select Manage Jenkins > Configure System

  • W obszarze Właściwości globalnewybierz pozycję Zmienne środowiskowe.Under Global Properties, select Environment variables. Dodaj zmienną o ACR_LOGINSERVER nazwie i wartości serwera logowania ACR.Add a variable with the name ACR_LOGINSERVER and the value of your ACR login server.

    Zmienne środowiskowe usługi Jenkins

  • Po zakończeniu kliknij przycisk Zapisz u dołu strony konfiguracji usługi Jenkins.When complete, click Save at the bottom of the Jenkins configuration page.

Tworzenie poświadczeń usługi Jenkins dla usługi ACRCreate a Jenkins credential for ACR

Aby zezwolić jenkins do tworzenia, a następnie wypychania zaktualizowanych obrazów kontenerów do usługi ACR, należy określić poświadczenia dla usługi ACR.To allow Jenkins to build and then push updated container images to ACR, you need to specify credentials for ACR. To uwierzytelnianie może używać podmiotów usługi Azure Active Directory.This authentication can use Azure Active Directory service principals. W wymaganiach wstępnych skonfigurowano jednostkę usługi dla klastra AKS z uprawnieniami czytnika do rejestru usługi ACR.In the pre-requisites, you configured the service principal for your AKS cluster with Reader permissions to your ACR registry. Uprawnienia te umożliwiają klastrowi AKS ściąganie obrazów z rejestru ACR.These permissions allow the AKS cluster to pull images from the ACR registry. Podczas procesu ciągłej integracji/ciągłego wdrażania jenkins tworzy nowe obrazy kontenerów na podstawie aktualizacji aplikacji, a następnie wypycha te obrazy do rejestru usługi ACR.During the CI/CD process, Jenkins builds new container images based on application updates, and needs to then push those images to the ACR registry. W przypadku rozdzielania ról i uprawnień należy teraz skonfigurować jednostkę usługi dla usługi Jenkins z uprawnieniami współautora do rejestru usługi ACR.For separation of roles and permissions, now configure a service principal for Jenkins with Contributor permissions to your ACR registry.

Tworzenie jednostki usługi dla usługi Jenkins do używania usługi ACRCreate a service principal for Jenkins to use ACR

Najpierw utwórz jednostkę usługi za pomocą polecenia az ad sp create-for-rbac:First, create a service principal using the az ad sp create-for-rbac command:

$ az ad sp create-for-rbac --skip-assignment

{
  "appId": "626dd8ea-042d-4043-a8df-4ef56273670f",
  "displayName": "azure-cli-2018-09-28-22-19-34",
  "name": "http://azure-cli-2018-09-28-22-19-34",
  "password": "1ceb4df3-c567-4fb6-955e-f95ac9460297",
  "tenant": "72f988bf-86f1-41af-91ab-2d7cd011db48"
}

Zanotuj appId i hasło wyświetlane w danych wyjściowych.Make a note of the appId and password shown in your output. Te wartości są używane w następujących krokach, aby skonfigurować zasób poświadczeń w u jenkins.These values are used in following steps to configure the credential resource in Jenkins.

Pobierz identyfikator zasobu rejestru ACR za pomocą polecenia az acr show i przechowuj go jako zmienną.Get the resource ID of your ACR registry using the az acr show command, and store it as a variable. Podaj nazwę grupy zasobów i nazwę ACR:Provide your resource group name and ACR name:

ACR_ID=$(az acr show --resource-group myResourceGroup --name <acrLoginServer> --query "id" --output tsv)

Teraz utwórz przypisanie roli, aby przypisać prawa współautora usługi do rejestru usługi ACR.Now create a role assignment to assign the service principal Contributor rights to the ACR registry. W poniższym przykładzie podaj własny appId wyświetlane w danych wyjściowych poprzednie polecenie, aby utworzyć jednostkę usługi:In the following example, provide your own appId shown in the output a previous command to create the service principal:

az role assignment create --assignee 626dd8ea-042d-4043-a8df-4ef56273670f --role Contributor --scope $ACR_ID

Tworzenie zasobu poświadczeń w usłudze Jenkins dla jednostki usługi ACRCreate a credential resource in Jenkins for the ACR service principal

Po utworzeniu przypisania roli na platformie Azure należy teraz przechowywać poświadczenia usługi ACR w obiekcie poświadczeń usługi Jenkins.With the role assignment created in Azure, now store your ACR credentials in a Jenkins credential object. Te poświadczenia są odwoływane podczas zadania kompilacji jenkins.These credentials are referenced during the Jenkins build job.

Po powrocie po lewej stronie portalu jenkins kliknij pozycję Poświadczeniaglobalne poświadczeń > Credentials > usługi Jenkins > (nieograniczone)Dodawanie poświadczeńBack on the left-hand side of the Jenkins portal, click Credentials > Jenkins > Global credentials (unrestricted) > Add Credentials

Upewnij się, że rodzaj poświadczeń to Nazwa użytkownika z hasłem i wprowadź następujące elementy:Ensure that the credential kind is Username with password and enter the following items:

  • Nazwa użytkownikaappId jednostki usługi utworzonej do uwierzytelniania za pomocą rejestru ACR.Username - The appId of the service principal created for authentication with your ACR registry.
  • Hasłohasło jednostki usługi utworzonej do uwierzytelniania za pomocą rejestru ACR.Password - The password of the service principal created for authentication with your ACR registry.
  • Identyfikator — identyfikator poświadczeń, taki jak poświadczenia acrID - Credential identifier such as acr-credentials

Po zakończeniu formularz poświadczeń wygląda następująco:When complete, the credentials form looks like the following example:

Tworzenie obiektu poświadczeń usługi Jenkins z informacjami o jednostki usługi

Kliknij przycisk OK i wróć do portalu jenkins.Click OK and return to the Jenkins portal.

Tworzenie projektu usługi JenkinsCreate a Jenkins project

Na stronie głównej portalu usługi Jenkins wybierz pozycję Nowy element po lewej stronie:From the home page of your Jenkins portal, select New item on the left-hand side:

  1. Wprowadź azure-vote jako nazwę zadania.Enter azure-vote as job name. Wybierz projekt Freestyle, a następnie wybierz przycisk OKChoose Freestyle project, then select OK

  2. W sekcji Ogólne wybierz projekt GitHub i wprowadź rozwidlony adres URL repozytorium, na przykład /https: /github.com/<your-github-account>/azure-voting-app-redisUnder the General section, select GitHub project and enter your forked repo URL, such as https://github.com/<your-github-account>/azure-voting-app-redis

  3. W sekcji Zarządzanie kodem źródłowym wybierz git, wprowadź rozwidlony adres URL repozytorium .git, na przykład /https: /github.com/<your-github-account>/azure-voting-app-redis.gitUnder the Source code management section, select Git, enter your forked repo .git URL, such as https://github.com/<your-github-account>/azure-voting-app-redis.git

  4. W sekcji Wyzwalacze kompilacji wybierz wyzwalacz haka GitHub dla sondowania GITCMUnder the Build Triggers section, select GitHub hook trigger for GITscm polling

  5. W obszarze Środowisko kompilacjiwybierz pozycję Użyj tajnych tekstów lub plikówUnder Build Environment, select Use secret texts or files

  6. W obszarze Powiązaniawybierz pozycję Dodaj > nazwę użytkownika i hasło (oddzielone)Under Bindings, select Add > Username and password (separated)

    • Wprowadź ACR_ID zmienną nazwy ACR_PASSWORD użytkownika i zmienną hasłaEnter ACR_ID for the Username Variable, and ACR_PASSWORD for the Password Variable

      Powiązania jenkins

  7. Wybierz, aby dodać krok kompilacji typu Wykonaj powłokę i użyj następującego tekstu.Choose to add a Build Step of type Execute shell and use the following text. Ten skrypt tworzy nowy obraz kontenera i wypycha go do rejestru usługi ACR.This script builds a new container image and pushes it to your ACR registry.

    # Build new image and push to ACR.
    WEB_IMAGE_NAME="${ACR_LOGINSERVER}/azure-vote-front:kube${BUILD_NUMBER}"
    docker build -t $WEB_IMAGE_NAME ./azure-vote
    docker login ${ACR_LOGINSERVER} -u ${ACR_ID} -p ${ACR_PASSWORD}
    docker push $WEB_IMAGE_NAME
    
  8. Dodaj kolejny krok kompilacji typu Wykonaj powłokę i użyj następującego tekstu.Add another Build Step of type Execute shell and use the following text. Ten skrypt aktualizuje wdrożenie aplikacji w aks z nowym obrazem kontenera z usługi ACR.This script updates the application deployment in AKS with the new container image from ACR.

    # Update kubernetes deployment with new image.
    WEB_IMAGE_NAME="${ACR_LOGINSERVER}/azure-vote-front:kube${BUILD_NUMBER}"
    kubectl set image deployment/azure-vote-front azure-vote-front=$WEB_IMAGE_NAME --kubeconfig /var/lib/jenkins/config
    
  9. Po zakończeniu kliknij przycisk Zapisz.Once completed, click Save.

Testowanie kompilacji jenkinsaTest the Jenkins build

Przed zautomatyzowaniem zadania na podstawie zatwierdzania GitHub najpierw ręcznie przetestować kompilację usługi Jenkins.Before you automate the job based on GitHub commits, first manually test the Jenkins build. Ta kompilacja ręczna sprawdza, czy zadanie zostało poprawnie skonfigurowane, odpowiedni plik uwierzytelniania Kubernetes jest na miejscu i czy uwierzytelnianie za pomocą usługi ACR działa.This manual build validates that the job has been correctly configured, the proper Kubernetes authentication file is in place, and that the authentication with ACR works.

W menu po lewej stronie projektu wybierz pozycję Buduj teraz.On the left-hand menu of the project, select Build Now.

Kompilacja testna jenkinsa

Pierwsza kompilacja trwa minutę lub dwie, jak warstwy obrazu platformy Docker są ściągane w dół do serwera jenkins.The first build takes a minute or two as the Docker image layers are pulled down to the Jenkins server. Kolejne kompilacje można użyć warstw obrazu w pamięci podręcznej, aby poprawić czas kompilacji.Subsequent builds can use the cached image layers to improve the build times.

Podczas procesu kompilacji repozytorium GitHub jest klonowane do serwera kompilacji jenkins.During the build process, the GitHub repository is cloned to the Jenkins build server. Nowy obraz kontenera jest zbudowany i wypychany do rejestru ACR.A new container image is built and pushed to the ACR registry. Na koniec aplikacja głosowania platformy Azure uruchomiona w klastrze AKS jest aktualizowana w celu użycia nowego obrazu.Finally, the Azure vote application running on the AKS cluster is updated to use the new image. Ponieważ nie wprowadzono żadnych zmian w kodzie aplikacji, aplikacja nie zostanie zmieniona, jeśli wyświetlisz przykładową aplikację w przeglądarce sieci Web.Because no changes have been made to the application code, the application is not changed if you view the sample app in a web browser.

Po zakończeniu zadania kompilacji kliknij na kompilacji #1 w historii kompilacji.Once the build job is complete, click on build #1 under build history. Wybierz wyjście konsoli i wyświetl dane wyjściowe z procesu kompilacji.Select Console Output and view the output from the build process. Końcowy wiersz powinien wskazywać pomyślną kompilację.The final line should indicate a successful build.

Tworzenie elementu webhook usługi GitHubCreate a GitHub webhook

Po pomyślnym zakończeniu ręcznej kompilacji teraz zintegruj gitHub z kompilacją usługi Jenkins.With a successful manual build complete, now integrate GitHub into the Jenkins build. Element webhook może służyć do uruchamiania zadania kompilacji usługi Jenkins za każdym razem, gdy zatwierdzenie kodu jest w gitHub.A webhook can be used to run the Jenkins build job each time a code commit is made in GitHub. Aby utworzyć element webhook Usługi GitHub, wykonaj następujące kroki:To create the GitHub webhook, complete the following steps:

  1. Przejdź do rozwidlonego repozytorium GitHub w przeglądarce internetowej.Browse to your forked GitHub repository in a web browser.

  2. Wybierz pozycję Ustawienia, a następnie wybierz pozycję Elementy webhook po lewej stronie.Select Settings, then select Webhooks on the left-hand side.

  3. Wybierz opcję Dodaj element webhook.Choose to Add webhook. W przypadku adresu URL ładunkuwprowadź http://<publicIp:8080>/github-webhook/, gdzie <publicIp> znajduje się adres IP serwera Jenkins.For the Payload URL, enter http://<publicIp:8080>/github-webhook/, where <publicIp> is the IP address of the Jenkins server. Upewnij się, że na końcu /.Make sure to include the trailing /. Pozostaw inne ustawienia domyślne dla typu zawartości i wyzwolić na zdarzenia wypychania.Leave the other defaults for content type and to trigger on push events.

  4. Wybierz pozycję Dodaj element webhook.Select Add webhook.

    Tworzenie elementu webhook usługi GitHub dla usługi Jenkins

Testowanie kompletnego potoku ciągłej integracji/ciągłego wdrażaniaTest the complete CI/CD pipeline

Teraz możesz przetestować cały potok ciągłej integracji/ciągłego wdrażania.Now you can test the whole CI/CD pipeline. Po wypchnięciu zatwierdzenia kodu do gitHub, następujące kroki się zdarzyć:When you push a code commit to GitHub, the following steps happen:

  1. Element webhook GitHub dociera do usługi Jenkins.The GitHub webhook reaches out to Jenkins.
  2. Jenkins uruchamia zadanie kompilacji i pobiera najnowsze zatwierdzenie kodu z usługi GitHub.Jenkins starts the build job and pulls the latest code commit from GitHub.
  3. Kompilacja platformy Docker jest uruchamiana przy użyciu zaktualizowanego kodu, a nowy obraz kontenera jest oznaczony najnowszym numerem kompilacji.A Docker build is started using the updated code, and the new container image is tagged with the latest build number.
  4. Ten nowy obraz kontenera jest wypychany do rejestru kontenerów platformy Azure.This new container image is pushed to Azure Container Registry.
  5. Aplikacja wdrożona w usłudze Azure Kubernetes service jest aktualizowana przy zastosowaniu najnowszego obrazu kontenera z rejestru kontenerów platformy Azure.Your application deployed to Azure Kubernetes Service updates with the latest container image from the Azure Container Registry registry.

Na komputerze deweloperskim otwórz sklonowaną aplikację za pomocą edytora kodu.On your development machine, open up the cloned application with a code editor. W katalogu /azure-vote/azure-vote otwórz plik o nazwie config_file.cfg.Under the /azure-vote/azure-vote directory, open the file named config_file.cfg. Zaktualizuj wartości głosowania w tym pliku do czegoś innego niż koty i psy, jak pokazano w poniższym przykładzie:Update the vote values in this file to something other than cats and dogs, as shown in the following example:

# UI Configurations
TITLE = 'Azure Voting App'
VOTE1VALUE = 'Blue'
VOTE2VALUE = 'Purple'
SHOWHOST = 'false'

Po zaktualizowaniu zapisz plik, zaobję zmiany i wypchnij je do rozwidlonego repozytorium GitHub.When updated, save the file, commit the changes, and push these to your fork of the GitHub repository. Element webhook GitHub wyzwala nowe zadanie kompilacji w usłudze Jenkins.The GitHub webhook triggers a new build job in Jenkins. Na pulpicie nawigacyjnym sieci Web usługi Jenkins monitoruj proces kompilacji.In the Jenkins web dashboard, monitor the build process. Trwa kilka sekund, aby wyciągnąć najnowszy kod, utworzyć i wypchnąć zaktualizowany obraz i wdrożyć zaktualizowaną aplikację w uzywu usługi AKS.It takes a few seconds to pull the latest code, create and push the updated image, and deploy the updated application in AKS.

Po zakończeniu kompilacji odśwież przeglądarkę sieci Web przykładowej aplikacji do głosowania platformy Azure.Once the build is complete, refresh your web browser of the sample Azure vote application. Zmiany są wyświetlane, jak pokazano w poniższym przykładzie:Your changes are displayed, as shown in the following example:

Przykładowe głosowanie na platformie Azure w usłudze AKS zaktualizowane przez zadanie kompilacji usługi Jenkins

Następne krokiNext steps