部署至環境中的Linux VM
Azure DevOps Services |Azure DevOps Server 2022 |Azure DevOps Server 2020
在本快速入門中,您將瞭解如何設定 Azure DevOps 管線,以部署至環境中的多個 Linux 虛擬機 (VM) 資源。 您可以針對任何發佈 Web 部署套件的應用程式使用這些指示。
必要條件
- 具有有效訂用帳戶的 Azure 帳戶。 免費建立帳戶。
- Azure DevOps 組織與專案。 註冊 Azure Pipelines。
針對 JavaScript 或Node.js應用程式, 至少有兩個在 Azure 上使用 Nginx 設定的 Linux VM。
派生範例程序代碼
如果您已在想要部署的 GitHub 中擁有應用程式,您可以建立該程式碼的管線。
如果您是新使用者,請在 GitHub 中派生此存放庫:
https://github.com/MicrosoftDocs/pipelines-javascript
使用 Linux VM 建立環境
您可以將 VM 新增為環境內的資源,並將其目標設為多 VM 部署。 環境的部署歷程記錄可從 VM 到認可提供可追蹤性。
新增 VM 資源
在您的 Azure DevOps 專案中,移至 [管線>環境],然後選取 [建立環境] 或 [新增環境]。
在第一個 [新增環境] 畫面上,新增 [ 名稱 ] 和選擇性 [描述]。
在 [資源] 下,選取 [虛擬機],然後選取 [下一步]。
在下一個 [新增環境] 畫面上,選擇 [操作系統] 下的 [Linux]。
複製 Linux 註冊腳本。 針對新增至環境的所有 Linux VM,腳本都相同。
注意
已登入用戶的個人存取令牌 (PAT) 會在腳本中預先插入,並在三小時后到期。
選取 [ 關閉],並記下新環境已建立。
在您想要向環境註冊的每個目標 VM 上執行複製的腳本。
注意
如果 VM 上已經有另一個代理程式正在執行,請為代理程式提供唯一的名稱,以向環境註冊。
註冊 VM 之後,它就會顯示為環境 [資源] 索引標籤下的資源。
若要再次複製腳本以建立更多資源,例如,如果您的 PAT 到期,請選取 環境頁面上的 [新增資源 ]。
新增和管理標籤
標籤是一種在環境中以特定 VM 作為部署目標的方法。 您可以使用的標籤數目沒有限制。 標籤各限制為 256 個字元。
您可以在互動式註冊腳本或透過UI中新增標籤或移除 VM 的標籤,方法是選取 VM 資源的 [更多動作]。 在本快速入門中,請將不同的標籤指派給您環境中的每個 VM。
定義 CI 組建管線
您需要持續整合 (CI) 建置管線來發佈 Web 應用程式,以及部署腳本,以在 Linux 伺服器上本機執行。 根據您想要使用的運行時間來設定 CI 組建管線。
重要
在 GitHub 程式期間,系統可能會提示您建立 GitHub 服務連線 ,或重新導向至 GitHub 以登入、安裝 Azure Pipelines 或授權 Azure Pipelines。 請遵循畫面上的指示來完成此程式。 如需詳細資訊,請參閱 存取 GitHub 存放庫。
- 在您的 Azure DevOps 專案中,選取 [管線建立管線>],然後選取 [GitHub] 作為原始程式碼的位置。
- 在 [ 選取存放庫 ] 畫面上,選取分支範例存放庫。
- 在 [設定您的管線] 畫面上,選取 [入門管線]。 Azure Pipelines 會為您的管線產生稱為 azure-pipelines.yml 的 YAML 檔案。
- 選取 [儲存並執行] 旁的下拉式插入號,選取 [儲存],然後再次選取 [儲存]。 檔案會儲存至分支 GitHub 存放庫。
編輯程式碼
選取 [編輯],並以下列程式代碼取代azure-pipelines.yml檔案的內容。 您會在未來的步驟中新增至此 YAML。
下列程式代碼會使用 npm 建置您的Node.js專案。
trigger:
- main
pool:
vmImage: ubuntu-latest
stages:
- stage: Build
displayName: Build stage
jobs:
- job: Build
displayName: Build
steps:
- task: UseNode@1
inputs:
version: '16.x'
displayName: 'Install Node.js'
- script: |
npm install
npm run build --if-present
npm run test --if-present
displayName: 'npm install, build and test'
- task: ArchiveFiles@2
displayName: 'Archive files'
inputs:
rootFolderOrFile: '$(System.DefaultWorkingDirectory)'
includeRootFolder: false
archiveType: zip
archiveFile: $(Build.ArtifactStagingDirectory)/$(Build.BuildId).zip
replaceExistingArchive: true
- upload: $(Build.ArtifactStagingDirectory)/$(Build.BuildId).zip
artifact: drop
如需詳細資訊,請檢閱使用 gulp 建置 Node.js 應用程式中的步驟,以建立組建。
執行您的管線
選取 [驗證並儲存],然後選取 [儲存],選取 [執行],然後再次選取 [執行]。
在管線執行之後,請確認作業已成功執行,且您看到已發佈的成品。
部署至Linux VM
編輯管線以新增下列 部署作業。 將取代
<environment name>
為您稍早建立的環境名稱。 從環境中選取特定的 VM,以指定<VM tag>
您為每個 VM 定義的 ,以接收部署。jobs: - deployment: VMDeploy displayName: Web deploy environment: name: <environment name> resourceType: VirtualMachine tags: <VM tag> # Update value for VMs to deploy to strategy:
如需詳細資訊,請參閱完整的 jobs.deployment 定義。
如需部署作業目標關鍵詞和資源的詳細資訊
environment
,請參閱 jobs.deployment.environment 定義。runOnce
將或rolling
指定為部署strategy
。runOnce
是最簡單的部署策略。preDeploy
deploy
、routeTraffic
和postRouteTraffic
生命週期會攔截每個執行一次。 然後執行on:
success
或on:
failure
。下列程式代碼顯示 的
runOnce
部署作業:jobs: - deployment: VMDeploy displayName: Web deploy environment: name: <environment name> resourceType: VirtualMachine tags: <VM tag> strategy: runOnce: deploy: steps: - script: echo my first deployment
下列程式代碼示範使用 Java 管線部署策略的
rolling
YAML 代碼段。 您可以在每個反覆專案中更新最多五個目標。 參數maxParallel
會指定可以平行部署的目標數目。選取
maxParallel
專案會考慮隨時必須維持可用之目標的絕對數目或百分比,但不包括要部署的目標,並決定部署期間的成功和失敗狀況。jobs: - deployment: VMDeploy displayName: web environment: name: <environment name> resourceType: VirtualMachine tags: <VM tag> strategy: rolling: maxParallel: 2 #for percentages, mention as x% preDeploy: steps: - download: current artifact: drop - script: echo initialize, cleanup, backup, install certs deploy: steps: - task: Bash@3 inputs: targetType: 'inline' script: | # Modify deployment script based on the app type echo "Starting deployment script run" sudo java -jar '$(Pipeline.Workspace)/drop/**/target/*.jar' routeTraffic: steps: - script: echo routing traffic postRouteTraffic: steps: - script: echo health check post-route traffic on: failure: steps: - script: echo Restore from backup! This is on failure success: steps: - script: echo Notify! This is on success
每次執行此作業時,都會針對您所建立和註冊 VM 的環境記錄部署歷程記錄。
存取環境中的管線可追蹤性
環境 部署 檢視提供認可和工作專案的完整可追蹤性,以及環境的跨管線部署歷程記錄。