Rainbow Engine

IT技術を分かりやすく簡潔にまとめることによる学習の効率化、また日常の気付きを記録に残すことを目指します。

Azure Microsoft

Azure DevOpsのPipelineの使い方をご紹介(入門編)

投稿日:2022年8月6日 更新日:

 

<目次>

(1) Azure DevOpsのPipelineの使い方をご紹介(入門編)
 (1-1) 概要
 (1-2) Pipeline疎通の手順

(1) Azure DevOpsのPipelineの使い方をご紹介(入門編)

(1-1) 概要

Azure Pipelineはコードを自動的にビルド・テストできるクラウドサービスです。代表的な機能の例として、「CI/CD」の実現のために、ビルド・テスト・デプロイを自動化できます。CI/CDはContinuoius Integration/Contiuous Deploymentの略で、開発と運用のGAPを埋めて、アプリのビルド/テスト/デプロイを自動化する事です。
 
(主な特徴)
・①バージョン管理システムと連携
GitHub、Azure Repos Git、Subversionなど多様なバージョン管理システムと連携。
 
・②多様な言語やアプリケーションに対応
Azure Piplineは殆どの言語で使用できます。Java、JavaScript、Node.js、Python、C++、Go、PHPなどなど。
 
・③デプロイ先も多様に選択可能
デプロイ先は、仮想マシンでも、コンテナでも、Azureサービスでも、オンプレミスのサービスでも様々可能。
 

(1-2) Pipeline疎通の手順

今回はMicrosoftが提供しているこちらのページに沿って、実際にハンズオンした流れをご紹介します。
 
Azure DevOpsのパイプラインを使う事でJavaのプロジェクトを自動でビルド・テストする事ができます。デプロイしたら、Azure App ServiceやAzure FunctionsといったAzureのサービスへのデプロイが可能になります。
 
今回のサンプルも①Javaプロジェクトのビルド⇒②Apache Mavenでテストを実行という流れを自動化するものです。
 

●前提

 

●STEP1:サンプルGitHubリポジトリの用意

・①下記URLのリポジトリを開いて「Fork」を押下。
https://github.com/MicrosoftDocs/pipelines-java
→ForkによりGitHub側にある特定のリポジトリを自アカウントのリポジトリにコピーできます。
 
(図111)
(図112)Forkが完了

●STEP2:パイプラインの作成

・①Azure DevOpsの左メニュー「Pipelines」→「Pipelines」を押下
(図121)
・②「Create Pipeline」を押下
(図122)
・③ご自身のソースコードの保存場所を選択
Azure DevOpsのGitリポジトリやGitHubやSubVersionなど各種サービスから選択できます。今回は「GitHub」を選択します。
(図123)
・④GitHubとAzureDevOpsの連携を許可します。
Azure PipelinesとGitHubが連携して、リポジトリの情報、リポジトリのWebHookやサービス、個人データへにアクセスすることを許可します。
(図124①)
(図124②)
→認証が完了すると、ご自身の全てのPrivate/Publicのリポジトリが表示されます。
 
・⑤先ほどForkしたリポジトリを選択します。
(図125①)
(図125②)
・⑥Gitのページにリダイレクトされた場合は、Git側でAzure Pipelinesのアプリのインストールを許可します。
(図126①)
↓ログイン
(図126②)
・⑦テンプレートは「Maven」を選択
→Azure Pipelinesはリポジトリ内部のコードを解析し、最適なテンプレートを提案してくれます。
 
(図127①)
 
(参考)Mavenの概要
Javaプロジェクトの「ビルドを自動化」したり、「依存性を解決」したりする機能で、POM(Project Object Model)ファイルを使用して制御します。主な機能の例として以下のようなものがあります↓
 
・jar追加や依存性の追加をpom.xmlに追記する事で簡単に行える
・プロジェクトのメタデータを提供(ログ、依存性、単体テストレポートなど)
・プロジェクトを簡単にJARやWARの形式でビルドできます。
→異なる環境においても、プロジェクトを移植しやすい

●STEP3:YAMLファイルの実行

・①YAMLファイルの確認と実行
 
(図131①)
 
(補足)YAMLファイルの内容
trigger:
– master
パイプラインをトリガー起動させるためのパラメータです。
デフォルトでは全ブランチがトリガーを受け取るが、当該パラメータで対象ブランチを指定可能。
pool:
  vmImage: ubuntu-latest
パイプラインを実行するための仮想マシンを指定しています。例では「ubuntu-latest」を指定しており、Microsoftが用意したUbuntuの仮想マシンを
steps:
– task: Maven@3
taskのビルディングブロックでは、Pipelineにおける自動化処理を定義します。
Jobにおいてはtaskがシリアル=直列に実行されます(パラレル=並列)に流す方法もあり。

また「Maven@3」はMavenプロジェクトのビルド&リリースのための「ビルドイン(標準装備)」のタスクです。

  inputs: 引数を渡すための宣言
    mavenPomFile: ‘pom.xml’  
    mavenOptions: ‘-Xmx3072m’  
    javaHomeOption: ‘JDKVersion’  
    jdkVersionOption: ‘1.8’  
    jdkArchitectureOption: ‘x64’  
    publishJUnitResults: true 当パラメータを指定すると、Mavenプロジェクトのビルド結果に対するJUnitのテスト結果ファイルをPipelineの結果として採用させる場合に指定。
(備考)
JUnitはJavaプログラムの単体テストをするためのフレームワークです。
    testResultsFiles: ‘**/surefire-reports/TEST-*.xml’ テスト結果ファイルの格納場所を指定します。
デフォルト値は「**/surefire-reports/TEST-*.xml」
ルートディレクトリの指定無い場合
→$(System.DefaultWorkingDirectory)とみなす
→つまり「/TEST- .xml」は「$(System.DefaultWorkingDirectory)/ /TEST-.xml」とみなす
    goals: ‘package’ 当パラメータは多くの場合「package」に指定されます(プログラムをコンパイルしてWARに固める場合など)
 
補足:(図131②)pom.xmlはForkしたGitリポジトリ内にあります
 
補足(図131③)triggerで指定しているmasterブランチ
 
・②コミット先のブランチを選択して「Save and run」を押下
 
(図132①)
(図132②)
(図132③)
 
CancelTimeoutInMinutes: 5
Expand:
  MaxConcurrency: 0
  ########## System Pipeline Decorator(s) ##########

  Begin evaluating template 'system-pre-steps.yml'
Evaluating: eq('true', variables['system.debugContext'])
Expanded: eq('true', Null)
Result: False
Evaluating: resources['repositories']['self']
Expanded: Object
Result: True
Evaluating: not(containsValue(job['steps']['*']['task']['id'], '6d15af64-176c-496d-b583-fd2ae21d4df4'))
Expanded: not(containsValue(Object, '6d15af64-176c-496d-b583-fd2ae21d4df4'))
Result: True
Evaluating: resources['repositories']['self']['checkoutOptions']
Result: Object
Finished evaluating template 'system-pre-steps.yml'
********************************************************************************
Template and static variable resolution complete. Final runtime YAML document:
steps:
- task: 6d15af64-176c-496d-b583-fd2ae21d4df4@1
  inputs:
    repository: self


  MaxConcurrency: 0
100% tests passed
 

Adsense審査用広告コード


Adsense審査用広告コード


-Azure, Microsoft

執筆者:


comment

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

関連記事

Azure Firewallの設定手順のご紹介

  <目次> (1) Azure Firewallの設定手順のご紹介  (1-1) Azure Firewallとは?  (1-2) Azure Firewallの設定・疎通の流れ   テス …

Azureリソースグループの作り方の手順について

  <目次> (1) Azureリソースグループの作り方の手順について  (1-1) Azureリソースグループとは?  (1-2) Azureリソースグループの作成手順  (1-3) Az …

PDFをテキスト化する方法(Azure Cognitive Service)

  <目次> (1) PDFをテキスト化する方法(Azure Cognitive Service)  やりたいこと  概要  STEP0:前提条件  STEP1:Azureのリソース作成   …

Azureで「subscription is not registered to use namespace ‘Microsoft.EventGrid’.」エラーが出た時の原因と対処

  <目次> (1) Azureで「subscription is not registered to use namespace ‘Microsoft.EventGrid&#8 …

Azure SQLServerが想定より高い?値段を抑えるための工夫についてご紹介

  <目次> (1) Azure SQLServerが想定より高い?値段を抑えるための工夫についてご紹介  (1-1) やりたいこと  (1-2) 概要  (1-3) 設定手順  (1-4) …

  • English (United States)
  • 日本語
Top