Ćwiczenie — tworzenie akcji usługi GitHub w celu utworzenia obrazu kontenera

Ukończone

W tej lekcji wykonasz następujące zadania:

  • Utwórz akcję GitHub w celu zaimplementowania potoku kompilacji.
  • Zmodyfikuj kod usługi kuponu, aby uruchomić proces budowania.
  • Monitoruj postęp przepływu pracy kompilacji w czasie rzeczywistym.

Utwórz akcję kompilacji

Kod YAML w tej procedurze definiuje akcję usługi GitHub, która:

  • Wyzwalane, gdy zatwierdzenie jest wypchnięte do kodu źródłowego usługi kuponowej lub testów jednostkowych w gałęzi main.
  • Definiuje zmienne środowiskowe specyficzne dla kroku.
  • Ma jedno zadanie lub zestaw kroków, które są wykonywane w ramach tego samego modułu uruchamiającego przepływ pracy, o nazwie Build and push image to ACR.

Ważny

Warunki wyzwalania i inne artefakty funkcji GitHub Actions lub przepływów pracy zależą od aplikacji i środowisk. Aby ułatwić zrozumienie, szczegółowe informacje są proste w tym przykładzie. Zarówno kompilacja, jak i przepływy pracy dotyczące wdrażania są ograniczone do zmian dotyczących usługi w ramach produktu, ponieważ wszystkie mikrousługi są przechowywane w jednym repozytorium. W rzeczywistym scenariuszu produkcyjnym każda mikrousługa będzie przechowywana we własnym oddzielnym repozytorium.

Wykonaj następujące kroki, aby utworzyć akcję kompilacji funkcji GitHub Actions:

  1. Przejdź do rozwidlenia repozytorium w usłudze GitHub, wybierz kartę Actions.

  2. Na stronie Get started with GitHub Actions wybierz link set up a workflow yourself.

    Zrzut ekranu przedstawiający kartę Akcje w repozytorium GitHub z wyróżnionym linkiem tworzenia przepływu pracy.

  3. Na następnej stronie wklej następujący kod YAML do edytora.

    name: Build and deploy an app to AKS
    
    on:
      push:
        branches: ["main"]
      workflow_dispatch:
    
    env:
      # Local environment variables used later in the workflow
      AZURE_CONTAINER_REGISTRY: 'name of your Azure Container Registry'
      CONTAINER_NAME: 'productservice'
      RESOURCE_GROUP: 'rg-eshop'
      CLUSTER_NAME: 'aks-eshop'
      DEPLOYMENT_MANIFEST_PATH: './product.yml'
      DOCKER_PATH: './DockerfileProducts.acr'
    
    jobs:
      buildImage:
        permissions:
          contents: read
          id-token: write
        runs-on: ubuntu-latest
        steps:
          # Checks out the repository this file is in
          - uses: actions/checkout@v3
    
          # Logs in with your Azure credentials stored in GitHub secrets
          - name: Azure login
            uses: azure/login@v1.4.6
            with:
              creds: '${{ secrets.AZURE_CREDENTIALS }}'
    
          # Builds and pushes an image up to your Azure Container Registry
          - name: Build and push image to ACR
            run: |
              az acr build --file ${{ env.DOCKER_PATH }} --image ${{ env.AZURE_CONTAINER_REGISTRY }}.azurecr.io/${{ env.CONTAINER_NAME }}:${{ github.sha }} --registry ${{ env.AZURE_CONTAINER_REGISTRY }} -g ${{ env.RESOURCE_GROUP }} .
    
    

    Zastąp nazwę usługi Azure Container Registry nazwą usługi ACR utworzoną w poprzedniej lekcji; na przykład acseshop186748394.

  4. Zastąp domyślną nazwę pliku przepływu pracy main.yml nazwą azure-kubernetes-service.yml, a następnie wybierz pozycję Commit changes.

  5. Na ekranie Commit changes wybierz pozycję Commit directly to the main branch, a następnie wybierz pozycję Commit changes.

    Ukończyłeś tworzenie przepływu pracy dla swojej infrastruktury CI/CD.

  6. W terminalu uruchom to polecenie, aby wyświetlić bieżące wersje usługi produktu przechowywane w repozytorium ACR:

    az acr repository show-tags -n AZURE_CONTAINER_REGISTRY --repository productservice --orderby time_desc --output table
    

    Zastępując AZURE_CONTAINER_REGISTRY nazwą usługi ACR, powinien być wyświetlony wynik podobny do poniższego.

    Result
    ----------------------------------------
    v1
    

Wyzwalanie kompilacji

Przepływ pracy kompilacji jest wyzwalany automatycznie po zatwierdzeniu pliku roboczego. Możesz również ręcznie wyzwolić kompilację.

  1. W repozytorium wybierz kartę Actions.
  2. Po lewej stronie w obszarze All workflowswybierz przepływ pracy Build and deploy an app to AKS, a następnie wybierz pozycję Run workflow.

Monitorowanie kompilacji

Aby wyświetlić postęp kompilacji w czasie rzeczywistym:

  1. W repozytorium wybierz zakładkę Actions.

  2. Wybierz najnowszy przebieg przepływu pracy wymieniony dla przepływu pracy Build and deploy an app to AKS. Nazwa uruchomienia to komunikat zatwierdzenia, którego użyłeś w poprzednim kroku.

  3. Wybierz zadanie buildImage.

    Zrzut ekranu przedstawiający postęp przepływu pracy usługi GitHub.

  4. Jeśli zaczekasz kilka minut, kroki w zadaniu powinny zakończyć się pomyślnie.

  5. W swoim terminalu uruchom ponownie to polecenie, aby wyświetlić wersje usługi produktu przechowywane w ACR.

    az acr repository show-tags -n AZURE_CONTAINER_REGISTRY --repository productservice --orderby time_desc --output table
    

    Powinny zostać wyświetlone dane wyjściowe podobne do następujących, które pokazują, że nowa wersja obrazu została dodana do usługi ACR z przepływu pracy usługi GitHub:

    Result
    ----------------------------------------
    8c75edb7a349ec570bd4eac397015bc3c547186e
    v1