教學課程:使用 Jenkins 部署至 Azure Functions
重要
許多 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-3
Jenkins 需要 Azure 服務主體來驗證和存取 Azure 資源。 如需 逐步指示,請參閱部署至Azure App 服務 。
請確定已安裝認證 外掛程式 。
從功能表中,選取 [ 管理 Jenkins ]。
在 [系統設定] 底 下,選取 [ 管理外掛程式 ]。
選取 [已安裝] 索引標籤。
在 篩選 欄位中,輸入
credentials
。確認已安裝認證 外掛程式 。 如果沒有,您必須從 [ 可用的 ] 索引標籤安裝它。
從功能表中,選取 [ 管理 Jenkins ]。
在 [安全性] 底下 ,選取 [ 管理認證 ]。
在 [認證] 底下 ,選取 [全域]。
從功能表中,選取 [ 新增認證 ]。
為您的 Microsoft Azure 服務主體 輸入下列值 :
- 種類 :選取值: 具有密碼的使用者名稱 。
- 使用者名稱 :指定
appId
所建立之服務主體的 。 - 密碼 :指定
password
服務主體的 (secret) 。 - 識別碼 :指定認證識別碼,例如
azuresp
。
選取 [確定]。
分支範例 GitHub 存放庫
登入奇數或甚至範例應用程式的 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>