Linux 仮想マシンにデプロイする
Azure DevOps Services | Azure DevOps Server 2022 | Azure DevOps Server 2020
1 つの環境と仮想マシン リソースを使用するマルチ仮想マシンのデプロイ用に Azure DevOps パイプラインを設定する方法について説明します。
Web 展開パッケージを発行するアプリについては、この記事の手順を使用します。
前提条件
- アクティブなサブスクリプションが含まれる Azure アカウント。 無料でアカウントを作成できます。
- アクティブな Azure DevOps 組織。 Azure Pipelines にサインアップします。
- Azure にホストされている Linux 仮想マシン (VM)。
- JavaScript または Node.js アプリをインストールし、Azure で Nginx を使用して Linux VM を設定する方法については、Azure CLI を使用した Linux VM の作成に関するページを参照してください。
- Java Spring Boot および Spring Cloud に基づくアプリをデプロイする場合は、Ubuntu 20.04 にインストールされた Java 13 用のテンプレートを使用して、Azure に Linux VM を作成します。このテンプレートでは、完全にサポートされている OpenJDK ベースのランタイムが提供されます。
サンプル コードを取得する
デプロイするアプリが GitHub に既にある場合は、そのコード用のパイプラインを作成できます。
新しいユーザーの場合は、GitHub でこのリポジトリをフォークします。
https://github.com/MicrosoftDocs/pipelines-javascript
仮想マシンを使用して環境を作成する
仮想マシンを環境内のリソースとして追加し、マルチ VM デプロイの対象にすることができます。 デプロイ履歴ビューでは、VM からコミットまで追跡できます。
Azure DevOps 組織にサインインし、プロジェクトに移動します。
[パイプライン] ページに移動し、[環境]>[環境の作成] の順に選択します。
環境の [名前] (必須) と、 [説明] を指定します。
環境に追加する [リソース] として [仮想マシン] を選択し、[次へ] を選択します。
[オペレーティング システム] で [Linux] を選択し、登録スクリプトをコピーします。
環境に登録されている各ターゲット VM で登録スクリプトを実行します。
注意
- サインインしているユーザーの個人用アクセス トークン (PAT) は、スクリプトに事前に挿入され、3 時間後に期限切れになります。
- お使いの VM でエージェントが既に実行されている場合は、環境に登録するために一意の名前を指定します。
VM が登録されると、[リソース] の下に環境リソースとして表示されるようになります。
VM をさらに追加するには、もう一度スクリプトをコピーします。 [リソースの追加] を選択し、[仮想マシン] を選択します。 このスクリプトは、同じ環境に追加するすべての VM で同じです。
各マシンは Azure Pipelines と対話して、アプリのデプロイを調整します。
VM のタグを追加または削除できます。 [リソース] の各 VM リソースの末尾にあるドットを選択します。
タグは、環境がデプロイ ジョブで使用されている場合に、デプロイを特定の VM に制限します。 各タグで使用できる文字数は最大で 256 文字です。 作成できるタグの数に制限はありません。
CI ビルド パイプラインを定義する
Web アプリを発行する CI ビルド パイプラインが必要です。 Ubuntu サーバーのローカルで実行できるデプロイ スクリプトも必要です。 使用するランタイムに基づいて、CI ビルド パイプラインを設定します。
Azure DevOps 組織にサインインし、プロジェクトに移動します。
プロジェクトで [パイプライン] ページに移動し、アクションを選択して新しいパイプラインを作成します。
ソース コードの場所として [GitHub] を選択します。
サインインするために GitHub にリダイレクトされる場合があります。 その場合は、GitHub の資格情報を入力します。
リポジトリの一覧が表示されたら、使用するサンプル アプリのリポジトリを選択します。
Azure Pipelines によってリポジトリが分析され、適切なパイプライン テンプレートが推奨されます。
starter テンプレートを選択し、npm で一般的な Node.js プロジェクトをビルドする次の YAML スニペットをコピーします。 この YAML は、後続の手順で追加します。
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 にデプロイするための CD 手順を定義する
前の手順で作成した環境と VM リソースを参照するように、パイプラインを編集し、デプロイ ジョブを追加します。 仮想マシンのタグを参照するように
tags
を更新します。jobs: - deployment: VMDeploy displayName: Web deploy environment: name: <environment name> resourceType: VirtualMachine tags: web1 # Update or remove value to match your tag strategy:
environment
キーワードとデプロイ ジョブの対象となるリソースの詳細については、YAML スキーマに関するページを参照してください。
環境内の各 VM に対して定義したタグを指定することにより、デプロイを受け取る特定の VM セットを環境から選択できます。
詳細については、デプロイ ジョブの完全な YAML スキーマに関するページを参照してください。
runOnce
またはrolling
をデプロイ戦略として指定します。runOnce
は最も単純なデプロイ戦略です。 すべてのライフサイクル フック (つまりpreDeploy
deploy
、routeTraffic
、およびpostRouteTraffic
) は、1 回実行されます。 その後、on:
success
またはon:
failure
が実行されます。runOnce
のデプロイ ジョブに関する次の例を参照してください。jobs: - deployment: VMDeploy displayName: Web deploy environment: name: <environment name> resourceType: VirtualMachine strategy: runOnce: deploy: steps: - script: echo my first deployment
Java パイプラインを使用したローリング戦略については、次の YAML スニペットの例を参照してください。 各イテレーションで取得されるターゲットを最大 5 つ更新できます。
maxParallel
によって、同時にデプロイできるターゲットの数が決まります。 選択するときは、デプロイされているターゲットを除いて、常に使用可能な状態にしておく必要があるターゲットの絶対数または割合を考慮します。 それはまた、デプロイの間に成功と失敗の条件を判断するためにも使用されます。jobs: - deployment: VMDeploy displayName: web environment: name: <environment name> resourceType: VirtualMachine 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 を作成して登録した
<environment name>
環境に対してデプロイ履歴が記録されます。
環境内のパイプラインを追跡できるビュー
[デプロイ] ビューでは、コミットと作業項目の完全な追跡、および環境ごとのクロスパイプライン デプロイ履歴が提供されます。
次のステップ
関連記事
フィードバック
https://aka.ms/ContentUserFeedback」を参照してください。
以下は間もなく提供いたします。2024 年を通じて、コンテンツのフィードバック メカニズムとして GitHub の issue を段階的に廃止し、新しいフィードバック システムに置き換えます。 詳細については、「フィードバックの送信と表示