Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Importante
Sebbene molti servizi di Azure dispongano di plug-in Jenkins, la maggior parte di questi plug-in termina il supporto a partire dal 29 febbraio 2024. L'interfaccia della riga di comando di Azure è il modo attualmente consigliato per integrare Jenkins con i servizi di Azure. Per altre informazioni, vedere l'articolo Plug-in Jenkins per Azure.
Funzioni di Azure è un servizio di calcolo serverless. Usando Funzioni di Azure, è possibile eseguire codice su richiesta senza effettuare il provisioning o la gestione dell'infrastruttura. Questa esercitazione illustra come distribuire una funzione Java in Funzioni di Azure usando il plug-in Funzioni di Azure.
Prerequisiti
- Sottoscrizione di Azure: se non si ha una sottoscrizione di Azure, creare un account gratuito prima di iniziare.
- Server Jenkins: se non è installato un server Jenkins, vedere l'articolo Creare un server Jenkins in Azure.
Visualizzare il codice sorgente
Il codice sorgente usato per questa esercitazione si trova nel repository GitHub di Visual Studio Cina.
Creare una funzione Java
Per creare una funzione Java con lo stack di runtime Java, usare il portale di Azure o l'interfaccia della riga di comando di Azure.
I passaggi seguenti illustrano come creare una funzione Java usando l'interfaccia della riga di comando di Azure:
Creare un gruppo di risorse, sostituendo il <segnaposto resource_group> con il nome del gruppo di risorse.
az group create --name <resource_group> --location eastusCreare un account di archiviazione di Azure, sostituendo i segnaposto con i valori appropriati.
az storage account create --name <storage_account> --location eastus --resource-group <resource_group> --sku Standard_LRSCreare l'app per le funzioni di test, sostituendo i segnaposto con i valori appropriati.
az functionapp create --resource-group <resource_group> --runtime java --consumption-plan-location eastus --name <function_app> --storage-account <storage_account> --functions-version 2
Preparare il server Jenkins
La procedura seguente illustra come preparare il server Jenkins:
Distribuire un server Jenkins in Azure. Se non è già installata un'istanza del server Jenkins, l'articolo Creare un server Jenkins in Azure illustra il processo.
Accedere all'istanza di Jenkins con SSH.
Sull'istanza di Jenkins, installare Az CLI, versione 2.0.67 o successiva.
Installare maven usando il comando seguente:
sudo apt install -y mavenNell'istanza di Jenkins installare Azure Functions Core Tools eseguendo i comandi seguenti al prompt del terminale:
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-3Jenkins ha bisogno di un principale del servizio di Azure per autenticarsi e accedere alle risorse di Azure. Per istruzioni dettagliate, vedere Distribuire nel servizio app di Azure .
Assicurarsi che il plug-in Credenziali sia installato.
Scegliere Gestisci Jenkins dal menu.
In Configurazione di sistema selezionare Gestisci plug-in.
Selezionare la scheda Installato .
Nel campo filtro immettere
credentials.Verificare che il plug-in Credentials sia installato. In caso contrario, sarà necessario installarlo dalla scheda Disponibile .
Scegliere Gestisci Jenkins dal menu.
In Sicurezza selezionare Gestisci credenziali.
In Credenziali selezionare (globale).
Scegliere Aggiungi credenziali dal menu.
Immettere i seguenti valori per il principale del servizio di Microsoft Azure:
- Tipo: selezionare il valore Username with password (Nome utente con password).
-
Nome utente: specificare l'entità principale
appIddel servizio creato. -
Password: specificare il
passwordsegreto del principale del servizio. -
ID: specificare l'identificatore delle credenziali, ad esempio
azuresp.
Seleziona OK.
Esegui il fork del repository GitHub di esempio
Effettua l'accesso al repository GitHub dell'applicazione di esempio pari o dispari.
Nell'angolo in alto a destra in GitHub scegliere Fork.
Seguire le istruzioni per selezionare l'account GitHub e completare la fork.
Creare una pipeline di Jenkins
In questa sezione viene creata la pipeline jenkins.
Nel dashboard di Jenkins creare una pipeline.
Abilitare Preparare un ambiente per l'esecuzione.
Nella sezione Pipeline-Definition> (Definizione pipeline ) selezionare Pipeline script from SCM (Script pipeline da SCM).
Immettere l'URL e il percorso dello script di GitHub fork ("doc/resources/jenkins/JenkinsFile") da usare nell'esempio 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' } } }
Compilare e distribuire
È giunto il momento di avviare il job di Jenkins.
Per prima cosa, ottieni la chiave di autorizzazione seguendo le istruzioni nell'articolo Trigger e associazioni HTTP di Funzioni di Azure.
Nel browser immettere l'URL dell'app. Sostituire i segnaposto con i valori appropriati e specificare un valore numerico per <input_number> come input per la funzione Java.
https://<function_app>.azurewebsites.net/api/HttpTrigger-Java?code=<authorization_key>&number=<input_number>Verranno visualizzati risultati simili all'output di esempio seguente (dove è stato usato un numero dispari - 365 - come test):
The number 365 is Odd.
Pulire le risorse
Se non si intende continuare a usare questa applicazione, eliminare le risorse create con il passaggio seguente:
az group delete -y --no-wait -n <resource_group>