Testowanie i debugowanie HTTP w dodatkach do Google Workspace

Jako programista dodatków do Google Workspace możesz potrzebować debugowania kodu, aby przetestować zmiany lub rozwiązać złożone problemy. Debugowanie dodatków do Google Workspace można przeprowadzać na wiele różnych sposobów w zależności od architektury aplikacji, jej funkcji, sposobu wdrażania i Twoich preferencji.

Na tej stronie dowiesz się, jak debugować dodatek HTTP do Google Workspace za pomocą ngrok, czyli ujednoliconej platformy wejścia, której możesz używać do testowania lokalnych środowisk programistycznych. W tym przewodniku przetestujesz zmiany w kodzie w środowisku lokalnym i rozwiążesz problemy w środowisku zdalnym.

Debugowanie w lokalnym środowisku programistycznym

W tej sekcji możesz korzystać z dodatku do Google Workspace, który działa w środowisku lokalnym.

Debugowanie w lokalnym środowisku programistycznym.
Rysunek 1. Debugowanie w lokalnym środowisku programistycznym.

Wymagania wstępne

Node.js

Python

Java

Udostępnianie usługi localhost publicznie

Musisz połączyć środowisko lokalne z internetem, aby dodatek Google Workspace mógł uzyskać do niego dostęp. ngrok Aplikacja służy do przekierowywania żądań HTTP wysyłanych pod publiczny adres URL do środowiska lokalnego.

  1. W przeglądarce w środowisku lokalnym zaloguj się na konto ngrok.
  2. Zainstaluj aplikację i skonfiguruj authtoken w środowisku lokalnym.
  3. Utwórz domenę statyczną na koncie ngrok. W instrukcjach w tym przewodniku jest ona oznaczona jako NGROK_STATIC_DOMAIN.

Tworzenie i instalowanie wdrożenia dodatku

  1. Skonfiguruj dodatek do Google Workspace tak, aby wysyłał wszystkie żądania HTTP do Twojej statycznej domeny. Plik wdrożenia powinien wyglądać tak:

    {
      "oauthScopes": [
        "https://www.googleapis.com/auth/workspace.linkpreview",
        "https://www.googleapis.com/auth/workspace.linkcreate"
      ],
      "addOns": {
        "common": {
          "name": "Manage support cases",
          "logoUrl": "https://developers.google.com/workspace/add-ons/images/support-icon.png",
          "layoutProperties": {
            "primaryColor": "#dd4b39"
          }
        },
        "docs": {
          "linkPreviewTriggers": [
            {
              "runFunction": "NGROK_STATIC_DOMAIN",
              "patterns": [
                {
                  "hostPattern": "example.com",
                  "pathPrefix": "support/cases"
                },
                {
                  "hostPattern": "*.example.com",
                  "pathPrefix": "cases"
                },
                {
                  "hostPattern": "cases.example.com"
                }
              ],
              "labelText": "Support case",
              "localizedLabelText": {
                "es": "Caso de soporte"
              },
              "logoUrl": "https://developers.google.com/workspace/add-ons/images/support-icon.png"
            }
          ],
          "createActionTriggers": [
            {
              "id": "createCase",
              "labelText": "Create support case",
              "localizedLabelText": {
                "es": "Crear caso de soporte"
              },
              "runFunction": "$URL2",
              "logoUrl": "https://developers.google.com/workspace/add-ons/images/support-icon.png"
            }
          ]
        },
        "httpOptions": {
          "granularOauthPermissionSupport": "OPT_IN"
        }
      }
    }
    

    Zastąp NGROK_STATIC_DOMAIN statyczną domeną na koncie ngrok.

  2. Ustaw projekt Google Cloud, którego chcesz używać:

    gcloud config set project PROJECT_ID
  3. Uzyskaj nowe dane logowania użytkownika, aby używać ich w domyślnych danych logowania aplikacji:

    gcloud auth application-default login

    Zastąp PROJECT_ID identyfikatorem projektu projektu Google Cloud aplikacji.

  4. Utwórz wdrożenie:

    gcloud workspace-add-ons deployments create manageSupportCases \
        --deployment-file=DEPLOYMENT_FILE_PATH

    Zastąp DEPLOYMENT_FILE_PATH ścieżką do pliku wdrożenia.

  5. Zainstaluj wdrożenie:

    gcloud workspace-add-ons deployments install manageSupportCases
    Dodatek do Google Workspace wysyła wszystkie żądania HTTP do domeny statycznej.
    Rysunek 2. Dodatek do Google Workspace wysyła wszystkie żądania HTTP do domeny statycznej. Usługa publiczna `ngrok` działa jako pomost między dodatkiem do Google Workspace a kodem aplikacji, który jest wykonywany lokalnie.

Testowanie dodatku do Google Workspace

Dodatek do Google Workspace możesz wdrażać, testować, debugować i automatycznie przeładowywać lokalnie.

Node.js

  1. Visual Studio Code IDE zainstalowanym w środowisku lokalnym wykonaj te czynności:

    1. W nowym oknie otwórz folder add-ons-samples/node/3p-resources.
    2. Skonfiguruj aplikację do lokalnego uruchamiania i automatycznego przeładowywania debugowania, dodając 1 zależność i 2 skrypty w pliku package.json:

      {
          ...
          "dependencies": {
            ...
            "@google-cloud/functions-framework": "^3.3.0"
          },
          "scripts": {
              ...
              "start": "npx functions-framework --target=createLinkPreview --port=9000",
              "debug-watch": "nodemon --watch ./ --exec npm start"
          }
          ...
      }
      
    3. Zainstaluj aplikację z katalogu głównego:

      npm install
    4. Utwórz i skonfiguruj uruchomienie o nazwie Debug Watch, które wywołuje skrypt debug-watch, tworząc plik .vscode/launch.json w katalogu głównym:

      {
          "version": "0.2.0",
          "configurations": [{
              "type": "node",
              "request": "launch",
              "name": "Debug Watch",
              "cwd": "${workspaceRoot}",
              "runtimeExecutable": "npm",
              "runtimeArgs": ["run-script", "debug-watch"]
          }]
      }
      
    5. Dodaj punkt przerwania, który wstrzymuje przetwarzanie żądania HTTP w pliku index.js, i rozpocznij uruchamianie i debugowanie za pomocą dodanej wcześniej konfiguracji Debug Watch. Aplikacja działa i nasłuchuje żądań HTTP na porcie 9000.

      Aplikacja działa i nasłuchuje żądań HTTP na porcie 9000.
      Rysunek 3. Aplikacja działa i nasłuchuje żądań HTTP na porcie 9000.
  2. Uruchom aplikację ngrok w środowisku lokalnym:

    ngrok http --domain=NGROK_STATIC_DOMAIN 9000

    Zastąp NGROK_STATIC_DOMAIN statyczną domeną na koncie ngrok. Wszystkie żądania są teraz przekierowywane do środowiska lokalnego i portu używanego przez aplikację.

    Terminal z działającym serwerem ngrok i przekierowaniem.
    Rysunek 4. Terminal z ngrokdziałającym serwerem i przekierowaniem
    .
  3. Aplikacja ngrok uruchamia też interfejs internetowy na Twoim lokalnym hoście. Możesz monitorować wszystkie działania, otwierając go w przeglądarce.

    Interfejs internetowy hostowany przez aplikację ngrok, który nie pokazuje żadnych żądań HTTP.
    Rysunek 5. Interfejs internetowy hostowany przez aplikację ngrok, który nie pokazuje żadnych żądań HTTP.
  4. Przetestuj dodatek do Google Workspace, wyświetlając podgląd adresu URL zgłoszenia w nowym dokumencie Google z kontem testera:

    • Utwórz dokument Google.

      Utwórz dokument Google

    • Wpisz ten link i naciśnij enter:

      https://example.com/support/case/?name=Name1&description=Description1&priority=P1
      
    • Kliknij link.

  5. Visual Studio Code w środowisku lokalnym możesz zobaczyć, że wykonanie zostało wstrzymane w ustawionym punkcie przerwania.

    Wykonywanie jest wstrzymane w ustawionym punkcie przerwania.
    Rysunek 6. Wykonywanie jest wstrzymane w ustawionym punkcie przerwania.
  6. Gdy wznowisz wykonywanie w Visual Studio Code debuggerze zanim dodatki do Google Workspace przekroczą limit czasu, dodatek do Google Workspace wyświetli podgląd linku w Dokumencie Google z pamięci podręcznej.

  7. Dzienniki żądań i odpowiedzi HTTP możesz sprawdzić w interfejsie internetowym hostowanym przez aplikację ngrok w środowisku lokalnym.

    Żądanie HTTP z interfejsu internetowego hostowanego przez aplikację ngrok.
    Rysunek 7. Żądanie HTTP z interfejsu internetowego hostowanego przez aplikację ngrok.
  8. Aby zmienić działanie aplikacji, zastąp Case ciągiem Case: w wierszu 51 w pliku index.js. Gdy zapiszesz plik, nodemon automatycznie ponownie załaduje aplikację ze zaktualizowanym kodem źródłowym, a Visual Studio Code pozostanie w trybie debugowania.

    Aplikacja działa i nasłuchuje żądań HTTP na porcie 9000 ze wczytaną zmianą kodu.
    Rysunek 8. Aplikacja działa i nasłuchuje żądań HTTP na porcie 9000 ze wczytaną zmianą kodu.
  9. Tym razem zamiast klikać link i czekać kilka sekund w nowym dokumencie Google możesz wybrać ostatnie żądanie HTTP zarejestrowane w interfejsie internetowym hostowanym przez aplikację ngrok w środowisku lokalnym i kliknąć Replay. Podobnie jak ostatnio, dodatek do Google Workspace nie odpowiada, ponieważ jest aktywnie debugowany.

  10. Gdy wznowisz wykonywanie w debuggerze Visual Studio Code, w interfejsie internetowym hostowanym przez aplikację ngrok w środowisku lokalnym zobaczysz, że aplikacja generuje odpowiedź ze zaktualizowaną wersją karty podglądu.

Python

  1. Visual Studio Code IDE zainstalowanym w środowisku lokalnym wykonaj te czynności:

    1. W nowym oknie otwórz folder add-ons-samples/python/3p-resources/create_link_preview.
    2. Utwórz środowisko wirtualne dla Pythona env i aktywuj je:

      virtualenv env
      source env/bin/activate
    3. Zainstaluj wszystkie zależności projektu za pomocą polecenia pip w środowisku wirtualnym:

      pip install -r requirements.txt
    4. Utwórz w katalogu głównym plik .vscode/launch.json i skonfiguruj uruchomienie o nazwie Debug Watch, które uruchamia aplikację z modułu functions-framework na porcie 9000 w trybie debugowania w środowisku wirtualnym env:

      {
          "version": "0.2.0",
          "configurations": [{
              "type": "python",
              "request": "launch",
              "name": "Debug Watch",
              "python": "${workspaceFolder}/env/bin/python3",
              "module": "functions_framework",
              "args": [
                  "--target", "create_link_preview",
                  "--port", "9000",
                  "--debug"
              ]
          }]
      }
      
    5. Dodaj punkt przerwania, który wstrzymuje przetwarzanie żądania HTTP w pliku main.py, i rozpocznij uruchamianie i debugowanie za pomocą dodanej wcześniej konfiguracji Debug Watch. Aplikacja działa i nasłuchuje żądań HTTP na porcie 9000.

      Aplikacja działa i nasłuchuje żądań HTTP na porcie 9000.
      Rysunek 3. Aplikacja działa i nasłuchuje żądań HTTP na porcie 9000.
  2. Uruchom aplikację ngrok w środowisku lokalnym:

    ngrok http --domain=NGROK_STATIC_DOMAIN 9000

    Zastąp NGROK_STATIC_DOMAIN statyczną domeną na koncie ngrok. Wszystkie żądania są teraz przekierowywane do środowiska lokalnego i portu używanego przez aplikację.

    Terminal z działającym serwerem ngrok i przekierowaniem.
    Rysunek 4. Terminal z ngrokdziałającym serwerem i przekierowaniem
    .
  3. Aplikacja ngrok uruchamia też interfejs internetowy na Twoim lokalnym hoście. Monitoruj wszystkie działania, otwierając go w przeglądarce.

    Interfejs internetowy hostowany przez aplikację ngrok, który nie pokazuje żadnych żądań HTTP.
    Rysunek 5. Interfejs internetowy hostowany przez aplikację ngrok, który nie pokazuje żadnych żądań HTTP.
  4. Przetestuj dodatek do Google Workspace, wyświetlając podgląd adresu URL zgłoszenia w nowym dokumencie Google z kontem testera:

    • Utwórz dokument Google.

      Utwórz dokument Google

    • Wpisz ten link i naciśnij enter:

      https://example.com/support/case/?name=Name1&description=Description1&priority=P1
      
    • Kliknij link.

  5. Visual Studio Code w środowisku lokalnym możesz zobaczyć, że wykonanie zostało wstrzymane w ustawionym punkcie przerwania.

    Wykonywanie jest wstrzymane w ustawionym punkcie przerwania.
    Rysunek 6. Wykonywanie jest wstrzymane w ustawionym punkcie przerwania.
  6. Gdy wznowisz wykonywanie w Visual Studio Code debuggerze zanim dodatki do Google Workspace przekroczą limit czasu, dodatek do Google Workspace wyświetli podgląd linku w Dokumencie Google z pamięci podręcznej.

  7. Dzienniki żądań i odpowiedzi HTTP możesz sprawdzić w interfejsie internetowym hostowanym przez aplikację ngrok w środowisku lokalnym.

    Żądanie HTTP z interfejsu internetowego hostowanego przez aplikację ngrok.
    Rysunek 7. Żądanie HTTP z interfejsu internetowego hostowanego przez aplikację ngrok.
  8. Aby zmienić działanie aplikacji, zastąp Case ciągiem Case: w wierszu 56 w pliku main.py. Gdy zapiszesz plik, Visual Studio Code aplikacja automatycznie wczyta się ponownie ze zaktualizowanym kodem źródłowym i  pozostanie w trybie debugowania.

    Aplikacja działa i nasłuchuje żądań HTTP na porcie 9000 ze wczytaną zmianą kodu.
    Rysunek 8. Aplikacja działa i nasłuchuje żądań HTTP na porcie 9000 ze wczytaną zmianą kodu.
  9. Tym razem zamiast klikać link i czekać kilka sekund w nowym dokumencie Google możesz wybrać ostatnie żądanie HTTP zarejestrowane w interfejsie internetowym hostowanym przez aplikację ngrok w środowisku lokalnym i kliknąć Replay. Podobnie jak ostatnio, dodatek do Google Workspace nie odpowiada, ponieważ jest aktywnie debugowany.

  10. Gdy wznowisz wykonywanie w debuggerze Visual Studio Code, w interfejsie internetowym hostowanym przez aplikację ngrok w środowisku lokalnym zobaczysz, że aplikacja generuje odpowiedź ze zaktualizowaną wersją karty podglądu.

Java

  1. Visual Studio Code IDE zainstalowanym w środowisku lokalnym wykonaj te czynności:

    1. W nowym oknie otwórz folder add-ons-samples/java/3p-resources.
    2. Skonfiguruj projekt Maven, aby uruchamiać aplikacjęCreateLinkPreview lokalnie na porcie 9000, dodając wtyczkę kompilacji Cloud Functions Framework function-maven-plugin do plikupom.xml:

      ...
      <plugin>
          <groupId>com.google.cloud.functions</groupId>
          <artifactId>function-maven-plugin</artifactId>
          <version>0.11.0</version>
          <configuration>
              <functionTarget>CreateLinkPreview</functionTarget>
              <port>9000</port>
          </configuration>
      </plugin>
      ...
      
    3. Teraz możesz uruchomić go lokalnie w trybie debugowania:

      mvnDebug function:run
      Preparing to execute Maven in debug mode
      Listening for transport dt_socket at address: 8000
    4. Utwórz w katalogu głównym plik .vscode/launch.json i skonfiguruj uruchomienie o nazwie Remote Debug Watch, które dołącza do aplikacji uruchomionej wcześniej na porcie 8000:

      {
          "version": "0.2.0",
          "configurations": [{
              "type": "java",
              "request": "attach",
              "name": "Remote Debug Watch",
              "projectName": "http-function",
              "hostName": "localhost",
              "port": 8000
          }]
      }
      
    5. Dodaj punkt przerwania, który wstrzymuje przetwarzanie żądania HTTP w pliku CreateLinkPreview.java, i rozpocznij dołączanie i debugowanie za pomocą dodanej wcześniej konfiguracji Remote Debug Watch. Aplikacja działa i nasłuchuje żądań HTTP na porcie 9000.

      Aplikacja działa i nasłuchuje żądań HTTP na porcie 9000.
      Rysunek 3. Aplikacja działa i nasłuchuje żądań HTTP na porcie 9000.

  2. Uruchom aplikację ngrok w środowisku lokalnym:

    ngrok http --domain=NGROK_STATIC_DOMAIN 9000

    Zastąp NGROK_STATIC_DOMAIN statyczną domeną na koncie ngrok. Wszystkie żądania są teraz przekierowywane do środowiska lokalnego i portu używanego przez aplikację.

    Terminal z działającym serwerem ngrok i przekierowaniem.
    Rysunek 4. Terminal z ngrokdziałającym serwerem i przekierowaniem
    .
  3. Aplikacja ngrok uruchamia też interfejs internetowy na Twoim lokalnym hoście. Monitoruj wszystkie działania, otwierając go w przeglądarce.

    Interfejs internetowy hostowany przez aplikację ngrok, który nie pokazuje żadnych żądań HTTP.
    Rysunek 5. Interfejs internetowy hostowany przez aplikację ngrok, który nie pokazuje żadnych żądań HTTP.
  4. Przetestuj dodatek do Google Workspace, wyświetlając podgląd adresu URL zgłoszenia w nowym dokumencie Google z kontem testera:

    • Utwórz dokument Google.

      Utwórz dokument Google

    • Wpisz ten link i naciśnij enter:

      https://example.com/support/case/?name=Name1&description=Description1&priority=P1
      
    • Kliknij link.

  5. Visual Studio Code w środowisku lokalnym możesz zobaczyć, że wykonanie zostało wstrzymane w ustawionym punkcie przerwania.

    Wykonywanie jest wstrzymane w ustawionym punkcie przerwania.
    Rysunek 6. Wykonywanie jest wstrzymane w ustawionym punkcie przerwania.
  6. Gdy wznowisz wykonywanie w Visual Studio Code debuggerze zanim dodatki do Google Workspace przekroczą limit czasu, dodatek do Google Workspace wyświetli podgląd linku w Dokumencie Google z pamięci podręcznej.

  7. Dzienniki żądań i odpowiedzi HTTP możesz sprawdzić w interfejsie internetowym hostowanym przez aplikację ngrok w środowisku lokalnym.

    Żądanie HTTP z interfejsu internetowego hostowanego przez aplikację ngrok.
    Rysunek 7. Żądanie HTTP z interfejsu internetowego hostowanego przez aplikację ngrok.
  8. Aby zmienić działanie aplikacji, zastąp Case słowem Case: w wierszu 78 w pliku CreateLinkPreview.java, uruchom ponownie proces mvnDebug i ponownie uruchom Remote Debug Watch, aby ponownie podłączyć i uruchomić debugowanie.

  9. Tym razem zamiast klikać link i czekać kilka sekund w nowym dokumencie Google możesz wybrać ostatnie żądanie HTTP zarejestrowane w interfejsie internetowym hostowanym przez aplikację ngrok w środowisku lokalnym i kliknąć Replay. Podobnie jak ostatnio, dodatek do Google Workspace nie odpowiada, ponieważ jest aktywnie debugowany.

  10. Gdy wznowisz wykonywanie w debuggerze Visual Studio Code, w interfejsie internetowym hostowanym przez aplikację ngrok w środowisku lokalnym zobaczysz, że aplikacja generuje odpowiedź ze zaktualizowaną wersją karty podglądu.

Debugowanie w środowisku zdalnym

W tej sekcji możesz korzystać z dodatku do Google Workspace, który działa w środowisku zdalnym.

Debuguj środowisko zdalnie.
Rysunek 9. Debugowanie w środowisku zdalnym.

Wymagania wstępne

  • Dodatek do Google Workspace zostanie wdrożony i zainstalowany.
  • Aplikacja działa w środowisku zdalnym z włączonym debugerem na danym porcie i jest oznaczona jako REMOTE_DEBUG_PORT w instrukcjach tego przewodnika.
  • Środowisko lokalne może ssh ze środowiskiem zdalnym.
  • W środowisku lokalnym skonfigurowano środowisko IDE, które może debugować. W tym przewodniku używamy Visual Studio Code IDE i jego domyślnych funkcji debugowania w celach ilustracyjnych.

Łączenie środowisk lokalnego i zdalnego

W środowisku lokalnym, z którego chcesz zainicjować połączenie klienta debugowania, skonfiguruj tunel SSH:

ssh -L LOCAL_DEBUG_PORT:localhost:REMOTE_DEBUG_PORT REMOTE_USERNAME@REMOTE_ADDRESS

Zastąp następujące elementy:

  • LOCAL_DEBUG_PORT: Port debugowania w środowisku lokalnym.
  • REMOTE_USERNAME: Nazwa użytkownika w środowisku zdalnym.
  • REMOTE_ADDRESS: Adres zdalnego środowiska.
  • REMOTE_DEBUG_PORT: Port debugowania w środowisku zdalnym.

Port debugowania w środowisku lokalnym jest teraz połączony z portem debugowania w środowisku zdalnym.

Rozpoczynanie debugowania

W środowisku Visual Studio Code IDE zainstalowanym w środowisku lokalnym wykonaj te czynności:

  1. W nowym oknie otwórz kod źródłowy aplikacji.
  2. Utwórz w katalogu głównym plik .vscode/launch.json i skonfiguruj uruchomienie o nazwie Debug Remote, które będzie się łączyć z portem debugowania w środowisku lokalnym:

    Node.js

    {
        "version": "0.2.0",
        "configurations": [{
            "type": "node",
            "request": "attach",
            "name": "Debug Remote",
            "address": "127.0.0.1",
            "port": LOCAL_DEBUG_PORT
        }]
    }
    

    Python

    {
        "version": "0.2.0",
        "configurations": [{
            "type": "python",
            "request": "attach",
            "name": "Debug Remote",
            "connect": {
                "host": "127.0.0.1",
                "port": LOCAL_DEBUG_PORT
            }
        }]
    }
    

    Java

    {
        "version": "0.2.0",
        "configurations": [{
            "type": "java",
            "request": "attach",
            "name": "Debug Remote",
            "hostName": "127.0.0.1",
            "port": LOCAL_DEBUG_PORT
        }]
    }
    

    Zastąp LOCAL_DEBUG_PORT portem debugowania w środowisku lokalnym.

  3. Dodaj w kodzie źródłowym aplikacji punkt przerwania, który wstrzyma przetwarzanie żądania HTTP, a następnie uruchom i debuguj aplikację za pomocą dodanej wcześniej konfiguracji Debug Remote.

    Korzystaj z zainstalowanego dodatku do Google Workspace. Dodatek do Google Workspace nie odpowiada, ponieważ jest aktywnie debugowanyVisual Studio Code IDE.