Udostępnij za pośrednictwem


Wdrażanie na maszynach wirtualnych z systemem Linux w środowisku

Azure DevOps Services | Azure DevOps Server 2022 | Azure DevOps Server 2020

Z tego przewodnika Szybki start dowiesz się, jak skonfigurować potok usługi Azure DevOps na potrzeby wdrażania do wielu zasobów maszyny wirtualnej z systemem Linux w środowisku. Możesz użyć tych instrukcji dla dowolnej aplikacji, która publikuje pakiet wdrażania sieci Web.

Wymagania wstępne

W przypadku aplikacji JavaScript lub Node.js co najmniej dwie maszyny wirtualne z systemem Linux skonfigurowane za pomocą serwera Nginx na platformie Azure.

Sforkuj przykładowy kod

Jeśli masz już aplikację w usłudze GitHub, którą chcesz wdrożyć, możesz utworzyć potok dla tego kodu.

Jeśli jesteś nowym użytkownikiem, forkować to repozytorium na GitHubie:

https://github.com/MicrosoftDocs/pipelines-javascript

Tworzenie środowiska przy użyciu maszyn wirtualnych z systemem Linux

Maszyny wirtualne można dodawać jako zasoby w środowiskach i kierować do nich wdrożenia z wieloma maszynami wirtualnymi. Historia wdrażania środowiska zapewnia możliwość śledzenia z maszyny wirtualnej do zatwierdzenia.

Dodawanie zasobu maszyny wirtualnej

  1. W projekcie usługi Azure DevOps przejdź do pozycji Środowiska potoków>, a następnie wybierz pozycję Utwórz środowisko lub Nowe środowisko.

  2. Na ekranie Nowe środowisko dodaj nazwę oraz opcjonalnie opis.

  3. W obszarze Zasób wybierz pozycję Maszyny wirtualne, a następnie wybierz pozycję Dalej.

  4. Na następnym ekranie Nowe środowisko wybierz pozycję Linux w obszarze System operacyjny.

  5. Skopiuj skrypt rejestracji systemu Linux. Skrypt jest taki sam dla wszystkich maszyn wirtualnych z systemem Linux dodanych do środowiska.

    Zrzut ekranu przedstawiający tworzenie maszyny wirtualnej.

    Uwaga

    Osobisty token dostępu (PAT) zalogowanego użytkownika jest wstępnie wstawiany w skrypcie i wygasa po trzech godzinach.

  6. Wybierz pozycję Zamknij i zanotuj, że nowe środowisko zostało utworzone.

  7. Uruchom skopiowany skrypt na każdej docelowej maszynie wirtualnej, którą chcesz zarejestrować w środowisku.

    Uwaga

    Jeśli maszyna wirtualna ma już na nim uruchomionego innego agenta, podaj unikatową nazwę agenta do zarejestrowania się w środowisku.

Po zarejestrowaniu maszyny wirtualnej jest ona wyświetlana jako zasób na karcie Zasoby środowiska.

Zrzut ekranu przedstawiający widok zasobów maszyny wirtualnej.

Aby ponownie skopiować skrypt do tworzenia większej liczby zasobów, na przykład w przypadku wygaśnięcia tokenu dostępu wybierz pozycję Dodaj zasób na stronie środowiska.

Dodawanie tagów i zarządzanie nimi

Tagi to sposób kierowania określonego zestawu maszyn wirtualnych w środowisku do wdrożenia. Nie ma limitu liczby tagów, których można użyć. Tagi są ograniczone do 256 znaków.

Tagi można dodawać lub usuwać dla maszyn wirtualnych w interaktywnym skrypcie rejestracji lub za pośrednictwem interfejsu użytkownika, wybierając opcję Więcej akcji dla zasobu maszyny wirtualnej. W tym przewodniku szybkiego startu przypisz różny tag każdej maszynie wirtualnej w środowisku.

Zrzut ekranu przedstawiający widok tagów.

Zdefiniuj potok budowy CI

Potrzebujesz potoku kompilacji ciągłej integracji (CI), który publikuje aplikację internetową, oraz skrypt wdrożenia, który będzie uruchamiany lokalnie na serwerze z systemem Linux. Skonfiguruj potok kompilacji ciągłej integracji na podstawie środowiska uruchomieniowego, którego chcesz użyć.

Ważne

Podczas procedur usługi GitHub może zostać wyświetlony monit o utworzenie połączenia usługi GitHub lub przekierowanie do usługi GitHub w celu zalogowania się, zainstalowania usługi Azure Pipelines lub autoryzowania usługi Azure Pipelines. Postępuj zgodnie z instrukcjami wyświetlanymi na ekranie, aby ukończyć proces. Aby uzyskać więcej informacji, zobacz Dostęp do repozytoriów GitHub.

  1. W projekcie usługi Azure DevOps wybierz Pipelines>Utwórz potok, a następnie wybierz GitHub jako lokalizację kodu źródłowego.
  2. Na ekranie Wybierz repozytorium wybierz swoje sforkowane przykładowe repozytorium.
  3. Na ekranie „Konfigurowanie potoku” wybierz opcję Potok startowy. Usługa Azure Pipelines generuje plik YAML o nazwie azure-pipelines.yml dla potoku.
  4. Wybierz listę rozwijaną obok Zapisz i uruchom, wybierz Zapisz, a następnie ponownie wybierz Zapisz. Plik jest zapisywany w rozwidlonym repozytorium GitHub.

Edytowanie kodu

Wybierz pozycję Edytuj i zastąp zawartość pliku azure-pipelines.yml następującym kodem. Dodasz do tego pliku YAML w kolejnych krokach.

Poniższy kod kompiluje projekt Node.js za pomocą narzędzia npm.

    trigger:
    - main
    
    pool:
      vmImage: ubuntu-latest
    
    stages:
    - stage: Build
      displayName: Build stage
      jobs:  
      - job: Build
        displayName: Build
        steps:
        - task: UseNode@1
          inputs:
            version: '16.x'
          displayName: 'Install Node.js'
        - script: |
            npm install
            npm run build --if-present
            npm run test --if-present
          displayName: 'npm install, build and test'
        - task: ArchiveFiles@2
          displayName: 'Archive files'
          inputs:
            rootFolderOrFile: '$(System.DefaultWorkingDirectory)'
            includeRootFolder: false
            archiveType: zip
            archiveFile: $(Build.ArtifactStagingDirectory)/$(Build.BuildId).zip
            replaceExistingArchive: true
        - upload: $(Build.ArtifactStagingDirectory)/$(Build.BuildId).zip
          artifact: drop

Aby uzyskać więcej informacji, zapoznaj się z krokami w temacie Build your Node.js app with gulp for creating a build (Tworzenie aplikacji Node.js za pomocą narzędzia gulp na potrzeby tworzenia kompilacji).

Uruchom swój potok

Wybierz pozycję Zweryfikuj i zapisz, a następnie wybierz pozycję Zapisz, wybierz pozycję Uruchom, a następnie wybierz pozycję Uruchom ponownie.

Po uruchomieniu potoku sprawdź, czy zadanie zostało uruchomione pomyślnie i czy widzisz opublikowany artefakt.

Wdrażanie na maszynach wirtualnych z systemem Linux

  1. Edytuj potok, aby dodać następujące zadanie wdrożeniowe. Zastąp <environment name> nazwą utworzonego wcześniej środowiska. Wybierz określone maszyny wirtualne ze środowiska, aby przeprowadzić wdrożenie, określając <VM tag> zdefiniowane dla każdej maszyny wirtualnej.

    jobs:  
    - deployment: VMDeploy
      displayName: Web deploy
      environment:
        name:  <environment name>
        resourceType: VirtualMachine
        tags: <VM tag> # Update value for VMs to deploy to
      strategy:
    

    Aby uzyskać więcej informacji, zobacz pełną definicję jobs.deployment.

    Aby uzyskać więcej informacji na temat słowa kluczowego environment i zasobów, na które ukierunkowane jest zadanie wdrożeniowe, zobacz definicję jobs.deployment.environment.

  2. Określ element runOnce lub rolling jako element wdrożeniowy strategy.

    • runOnce jest najprostszą strategią wdrażania. Hooki preDeploy, deploy, routeTraffic i postRouteTraffic cyklu życia są wykonywane raz. Następnie wykonaj polecenie on:success lub on:failure .

      Poniższy kod przedstawia zadanie wdrożenia dla runOnce:

      jobs:
      - deployment: VMDeploy
        displayName: Web deploy
        environment:
          name: <environment name>
          resourceType: VirtualMachine
          tags: <VM tag>
        strategy:
          runOnce:
            deploy:
              steps:
              - script: echo my first deployment
      
    • Poniższy kod przedstawia fragment kodu YAML dla rolling strategii wdrażania za pomocą potoku Java. W każdej iteracji można zaktualizować maksymalnie pięć elementów docelowych. Parametr maxParallel określa liczbę obiektów docelowych, które można wdrożyć równolegle.

      Wybór maxParallel odpowiada bezwzględnej liczbie lub procentowi obiektów docelowych, które muszą pozostać dostępne w dowolnym momencie, z wyłączeniem wdrożonych obiektów docelowych i określa warunki powodzenia i niepowodzenia podczas wdrażania.

      jobs: 
      - deployment: VMDeploy
        displayName: web
        environment:
          name: <environment name>
          resourceType: VirtualMachine
          tags: <VM tag>
        strategy:
            rolling:
              maxParallel: 2  #for percentages, mention as x%
              preDeploy:
                steps:
                - download: current
                  artifact: drop
                - script: echo initialize, cleanup, backup, install certs
              deploy:
                steps:
                - task: Bash@3
                  inputs:
                    targetType: 'inline'
                    script: |
                      # Modify deployment script based on the app type
                      echo "Starting deployment script run"
                      sudo java -jar '$(Pipeline.Workspace)/drop/**/target/*.jar'
              routeTraffic:
                steps:
                - script: echo routing traffic
              postRouteTraffic:
                steps:
                - script: echo health check post-route traffic
              on:
                failure:
                  steps:
                  - script: echo Restore from backup! This is on failure
                success:
                  steps:
                  - script: echo Notify! This is on success
      

      Po każdym uruchomieniu tego zadania historia wdrożenia jest rejestrowana w odniesieniu do środowiska, w którym utworzyłeś i zarejestrowałeś maszyny wirtualne.

Uzyskiwanie dostępu do śledzenia rurociągu w środowisku

Widok Wdrożenia środowisk zapewnia pełną śledzialność zatwierdzeń i elementów roboczych oraz historię wdrożeń w różnych potokach dla środowiska.

Zrzut ekranu przedstawiający widok wdrożeń.