這很重要
雖然許多 Azure 服務都有 Jenkins 外掛程式,但這些外掛程式大部分已於 2024 年 2 月 29 日終止支援。 Azure CLI 目前是整合 Jenkins 與 Azure 服務的建議方式。 如需詳細資訊,請參閱 適用於 Azure 的 Jenkins 外掛程式一文。
Azure Functions 是無伺服器計算服務。 使用 Azure Functions,您可以視需要執行程式代碼,而不需布建或管理基礎結構。 本教學課程說明如何使用 Azure Functions 外掛程式將 Java 函式部署至 Azure Functions。
先決條件
- Azure 訂用帳戶:如果您沒有 Azure 訂用帳戶,請在開始前建立免費帳戶。
- Jenkins 伺服器:如果您沒有安裝 Jenkins 伺服器,請參閱在 Azure 上建立 Jenkins 伺服器一文。
檢視原始程式碼
本教學課程所使用的原始程式碼位於 Visual Studio China GitHub存放庫中。
建立Java函式
若要使用 Java 執行時間堆疊建立 Java 函式,請使用 Azure 入口網站或 Azure CLI。
下列步驟示範如何使用 Azure CLI 建立 Java 函式:
建立資源群組,並將 <resource_group> 佔位元取代為您的資源組名。
az group create --name <resource_group> --location eastus建立 Azure 記憶體帳戶,以適當的值取代佔位符。
az storage account create --name <storage_account> --location eastus --resource-group <resource_group> --sku Standard_LRS建立測試函式應用程式,以適當的值取代佔位元。
az functionapp create --resource-group <resource_group> --runtime java --consumption-plan-location eastus --name <function_app> --storage-account <storage_account> --functions-version 2
準備 Jenkins 伺服器
下列步驟說明如何準備 Jenkins 伺服器:
在 Azure 上部署 Jenkins 伺服器 。 如果您尚未安裝 Jenkins 伺服器的實例,文章: 在 Azure 上建立 Jenkins 伺服器 會引導您完成此程式。
使用 SSH 登入 Jenkins 實例。
在 Jenkins 實例上,安裝 Az CLI 2.0.67 版或更高版本。
使用下列命令安裝 maven:
sudo apt install -y maven在 Jenkins 實例上,在終端機提示字元發出下列命令,以安裝 Azure Functions Core Tools :
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 需要 Azure 服務主體來驗證和存取 Azure 資源。 如需分步指南,請參閱 部署至 Azure App Service。
請確定已安裝認證 外掛程式 。
從功能表中,選取 [管理 Jenkins]。
在 [系統設定] 底下,選取 [ 管理外掛程式]。
選取 [已安裝] 索引標籤。
在 篩選 欄位中, 輸入
credentials。確認已安裝認證 外掛程式 。 如果沒有,您必須從 [可用的 ] 索引標籤安裝它。
從功能表中,選取 [管理 Jenkins]。
在 [安全性] 底下,選取 [管理認證]。
在 [認證] 底下,選取 [全域]。
從功能表中,選取 [ 新增認證]。
請輸入下列 Azure Microsoft 服務主體的值:
- 種類:選取值: 具有密碼的用戶名稱。
-
使用者名稱:指定
appId所建立之服務主體的細節。 -
密碼: 指定服務主體的密鑰
password。 -
識別碼:指定認證識別碼,例如
azuresp。
請選擇 [確定]。
分叉範例 GitHub 存放庫
在 GitHub 的右上角,選擇 [分支]。
請依照提示選取您的 GitHub 帳戶並完成分叉。
建立 Jenkins 管線
在本節中,您會建立 Jenkins 管線。
在 Jenkins 儀錶板中,建立管線。
啟用 [準備執行環境]。
在 [管線定義]> 區段中,選取 從 SCM 的管線腳本。
輸入 GitHub 分支的 URL 和腳本路徑(“doc/resources/jenkins/JenkinsFile”),以在 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' } } }
建置和部署
現在是執行 Jenkins 作業的時候了。
首先,透過 Azure Functions HTTP 觸發程式和系結 一文中的指示取得授權密鑰。
在您的瀏覽器中,輸入應用程式的URL。 將佔位元替換為適當的值,並將<input_number>指定為 Java 函式的數值輸入。
https://<function_app>.azurewebsites.net/api/HttpTrigger-Java?code=<authorization_key>&number=<input_number>您會看到類似下列範例輸出的結果(其中奇數 - 365 - 用作測試):
The number 365 is Odd.
清理資源
如果您不打算繼續使用此應用程式,請刪除您使用下列步驟建立的資源:
az group delete -y --no-wait -n <resource_group>