Samouczek: wdrażanie w usłudze Azure Functions przy użyciu narzędzia Jenkins

Ważne

Wiele usług platformy Azure ma wtyczki Jenkins. Niektóre z tych wtyczek nie będą obsługiwane od 29 lutego 2024 r. Interfejs wiersza polecenia platformy Azure to obecnie zalecany sposób integracji serwera Jenkins z usługami platformy Azure. Aby uzyskać więcej informacji, zapoznaj się z artykułem Wtyczki serwera Jenkins dla platformy Azure.

Azure Functions to usługa obliczeniowa niewymagająca użycia serwera. Dzięki usłudze Azure Functions możesz uruchamiać kod na żądanie bez konieczności aprowizowania infrastruktury lub zarządzania nią. W tym samouczku pokazano, jak wdrożyć funkcję Java w usłudze Azure Functions przy użyciu wtyczki usługi Azure Functions.

Wymagania wstępne

Wyświetlanie kodu źródłowego

Kod źródłowy użyty w tym samouczku znajduje się w repozytorium GitHub Visual Studio China.

Tworzenie funkcji w języku Java

Funkcję w języku Java z użyciem stosu środowiska uruchomieniowego w języku Java można utworzyć w witrynie Azure Portal lub za pomocą interfejsu wiersza polecenia platformy Azure.

W poniższych krokach pokazano, w jaki sposób utworzyć funkcję w języku Java przy użyciu interfejsu wiersza polecenia platformy Azure:

  1. Utwórz grupę zasobów, zastępując <symbol zastępczy resource_group> nazwą grupy zasobów.

    az group create --name <resource_group> --location eastus
    
  2. Utwórz konto magazynu platformy Azure, zastępując symbole zastępcze odpowiednimi wartościami.

    az storage account create --name <storage_account> --location eastus --resource-group <resource_group> --sku Standard_LRS    
    
  3. Utwórz testową aplikację funkcji, zastępując symbole zastępcze odpowiednimi wartościami.

    az functionapp create --resource-group <resource_group> --runtime java --consumption-plan-location eastus --name <function_app> --storage-account <storage_account> --functions-version 2
    

Przygotowanie serwera Jenkins

W poniższych krokach wyjaśniono, jak przygotować serwer Jenkins:

  1. Wdróż serwer Jenkins na platformie Azure. Jeśli nie masz jeszcze zainstalowanego wystąpienia serwera Jenkins, ten proces opisano w artykule Tworzenie serwera Jenkins na platformie Azure.

  2. Zaloguj się do wystąpienia serwera Jenkins przy użyciu protokołu SSH.

  3. W wystąpieniu serwera Jenkins zainstaluj interfejs wiersza polecenia Az w wersji 2.0.67 lub nowszej.

  4. Zainstaluj narzędzie maven przy użyciu następującego polecenia:

    sudo apt install -y maven
    
  5. W wystąpieniu serwera Jenkins zainstaluj zestaw narzędzi Azure Functions Core Tools, wydając następujące polecenia po pojawieniu się monitu terminala:

    curl https://packages.microsoft.com/keys/microsoft.asc | gpg --dearmor > microsoft.gpg
    sudo mv microsoft.gpg /etc/apt/trusted.gpg.d/microsoft.gpg
    sudo sh -c 'echo "deb [arch=amd64] https://packages.microsoft.com/repos/microsoft-ubuntu-$(lsb_release -cs)-prod $(lsb_release -cs) main" > /etc/apt/sources.list.d/dotnetdev.list'
    cat /etc/apt/sources.list.d/dotnetdev.list
    sudo apt-get update
    sudo apt-get install azure-functions-core-tools-3
    
  6. Serwer Jenkins wymaga jednostki usługi platformy Azure w celu uwierzytelniania zasobów platformy Azure i uzyskania do nich dostępu. Zapoznaj się z artykułem Deploy to Azure App Service (Wdrażanie w usłudze Azure App Service), aby uzyskać instrukcje krok po kroku.

  7. Upewnij się, że wtyczka Credentials jest zainstalowana.

    1. Z menu wybierz pozycję Zarządzaj serwerem Jenkins.

    2. W obszarze Konfiguracja systemu wybierz pozycję Zarządzaj wtyczką.

    3. Wybierz kartę Zainstalowano.

    4. W polu filtru wprowadź wartość credentials.

    5. Sprawdź, czy wtyczka Credentials jest zainstalowana. Jeśli nie, musisz zainstalować go z poziomu karty Dostępne .

    The Credentials Plug-in needs to be installed.

  8. Z menu wybierz pozycję Zarządzaj serwerem Jenkins.

  9. W obszarze Zabezpieczenia wybierz pozycję Zarządzaj poświadczeniami.

  10. W obszarze Poświadczenia wybierz pozycję (globalne).

  11. Z menu wybierz pozycję Dodaj poświadczenia.

  12. Wprowadź następujące wartości dla jednostki usługi platformy Microsoft Azure:

    • Rodzaj: wybierz wartość: Nazwa użytkownika z hasłem.
    • Nazwa użytkownika: określ appId utworzoną jednostkę usługi.
    • Hasło: określ password (wpis tajny) jednostki usługi.
    • Identyfikator: określ identyfikator poświadczeń, taki jak azuresp.
  13. Wybierz przycisk OK.

Rozwidlenie przykładowego repozytorium GitHub

  1. Zaloguj się do repozytorium GitHub dla dziwnej lub nawet przykładowej aplikacji.

  2. W prawym górnym rogu ekranu usługi GitHub wybierz pozycję Fork (Utwórz rozwidlenie).

  3. Postępuj zgodnie z monitami, aby wybrać konto usługi GitHub i zakończyć tworzenie rozwidlenia.

Tworzenie potoku serwera Jenkins

W tej sekcji utworzysz potok serwera Jenkins.

  1. Na pulpicie nawigacyjnym serwera Jenkins utwórz potok.

  2. Włącz ustawienie Prepare an environment for the run (Przygotuj środowisko dla uruchomienia).

  3. W sekcji Pipeline-Definition (Definicja potoku) wybierz pozycję Pipeline script from SCM (Skrypt potoku z narzędzia SCM).>

  4. Wprowadź adres URL i ścieżkę skryptu rozwidlenia usługi GitHub ("doc/resources/jenkins/JenkinsFile"), aby użyć go w przykładzie narzędzia JenkinsFile.

     node {
     withEnv(['AZURE_SUBSCRIPTION_ID=99999999-9999-9999-9999-999999999999',
             'AZURE_TENANT_ID=99999999-9999-9999-9999-999999999999']) {
         stage('Init') {
             cleanWs()
             checkout scm
         }
    
         stage('Build') {
             sh 'mvn clean package'
         }
    
         stage('Publish') {
             def RESOURCE_GROUP = '<resource_group>' 
             def FUNC_NAME = '<function_app>'
             // login Azure
             withCredentials([usernamePassword(credentialsId: 'azuresp', passwordVariable: 'AZURE_CLIENT_SECRET', usernameVariable: 'AZURE_CLIENT_ID')]) {
             sh '''
                 az login --service-principal -u $AZURE_CLIENT_ID -p $AZURE_CLIENT_SECRET -t $AZURE_TENANT_ID
                 az account set -s $AZURE_SUBSCRIPTION_ID
             '''
             }
             sh 'cd $PWD/target/azure-functions/odd-or-even-function-sample && zip -r ../../../archive.zip ./* && cd -'
             sh "az functionapp deployment source config-zip -g $RESOURCE_GROUP -n $FUNC_NAME --src archive.zip"
             sh 'az logout'
             }
         }
     }
    

Kompiluj i wdróż

Czas na uruchomienie zadania serwera Jenkins.

  1. Najpierw należy uzyskać klucz autoryzacji za pomocą instrukcji zawartych w artykule Azure Functions HTTP triggers and bindings (Wyzwalacze i powiązania protokołu HTTP w usłudze Azure Functions).

  2. W przeglądarce wprowadź adres URL aplikacji. Zastąp symbole zastępcze odpowiednimi wartościami i określ wartość liczbową dla <input_number> jako dane wejściowe dla funkcji Języka Java.

    https://<function_app>.azurewebsites.net/api/HttpTrigger-Java?code=<authorization_key>&number=<input_number>
    
  3. Zostaną wyświetlone wyniki podobne do następujących przykładowych danych wyjściowych (w przykładzie użyto liczby nieparzystej, 365):

    The number 365 is Odd.
    

Czyszczenie zasobów

Jeśli nie planujesz już korzystać z tej aplikacji, usuń utworzone zasoby, wykonując następujące czynności:

az group delete -y --no-wait -n <resource_group>

Następne kroki