Azure DevOpsを使ってみた

#### Azure DevOpsとは
Azure DevOpsとは5つのメイン機能で、**CI/CDサイクルのプランニング、トラッキング、開発、テスト、デプロイメント、監視、運用のフェイズを最初から最後まで管理するサービスです。**

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2752288/1ea120be-d0bd-8677-ac0c-c1e95d280f32.png)




**5人ユーザーまでは無料**で使用でき、**6人以上**になると一人当たり**867.5円**掛かります。
(2022年10月15日現在)

Test Plan機能を使うには別途課金が必要で、無料トライアルで30日間使用も可能です。


**※CI/CDとは**
Continuous Integration/Continuous Deliveryのことで継続的インテグレーション、継続的デリバリーと言います。

従来の開発方法はウォーターフォール型で設計、開発、テストを順番にやってきました。ですが途中で仕様変更が生じた際の手戻りが発生すると、コスト増加・スケジュール遅延など大きな影響を及ぼします。そこで短いスパンの設計、開発、テスト、リリースを繰り返すことで柔軟に対応出来るようにして品質を確保するアジャイル型という手法が取り上げられるようになりました。

そのため開発から本番リリースまでを迅速かつ自動的に行うための仕組みをここでは指します。

# 登録の仕方

MicrosoftまたはGithubアカウントにより以下から登録を行います。
https://azure.microsoft.com/ja-jp/products/devops/
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2752288/c4b4db46-d956-4e25-0abc-1dca5a29e5c9.png)

Microsoftアカウントの場合以下を入力。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2752288/f4aeef63-15b1-ffe8-8a74-4dd117f0523b.png)

Githubアカウントの場合以下を入力。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2752288/6bc33719-947a-48b4-3679-fef9e415738e.png)

ログイン後、プロジェクトの作成を行います。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2752288/d0ecec24-ffaa-4224-cd5d-4e702f62ac01.png)

左一覧のアイコンがメインの機能になります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2752288/6e6b190d-c8eb-a9ae-2272-45940d10c3e8.png)

# 機能紹介
ここからは各主要機能について解説していきます。

### OverView

ここではプロジェクトに全体に関わる概要等について見れる機能になります。

#### ・Summary

後程の機能でブランチを作成して、その中にあるマークアップ言語のファイルを使用してプロジェクト内容を表示が出来ます。

他に現在進行中、完了済みの作業タスク数、プルリクエスト数、コミット数が確認できます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2752288/a6d1a0d6-8936-6f26-3fb4-a28217af2116.png)

#### ・Dashboards

プロジェクトに関わる情報のウェッジをカスタマイズして表示出来ます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2752288/eddfc83f-b5fb-4116-ddf2-c19ba74bc4d8.png)


#### ・Wiki

必要な情報を纏めて管理できるwiki機能もあります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2752288/1e4eac23-3975-84b6-2fd0-fe506f95b2f6.png)


### Boards

ここでは作業タスクの設定、スケジュールの管理を行います。

#### ・Work items

Work itemは作業タスクにあたり、3種類あります。
階層として一番上に位置するのが**Epic**、次に**issue**、**task**の順番があります。

**Epic**にプロジェクト名、**issue**でしなければならない大枠作業、**task**は更に細分化した作業というイメージです。

現在の作業ステータス、スプリント(時期)、作業時間、作業担当者をそれぞれ設定することが出来ます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2752288/68b72d01-b57b-f945-36f0-8311d23a5677.png)


#### ・Boards

epic、issue単位で管理できる機能です。issue自体を動かしDoingやDoneに移動することが出来、直感的に操作やすい画面になっています。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2752288/b953960d-bce2-eb5a-8ea4-a4043b85b2b5.png)


#### ・Backlogs

work item画面でも操作可能ですが、「…」から作業タスクの編集、削除等の操作が出来ます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2752288/929b65ed-4017-fb78-11a3-1d91284fd0e1.png)



#### ・Sprints

割り当てられているスプリントで作業タスクを表示します。
全体の作業量、各々のタスク時間がどれだけ割当たっているかも確認できます。
設定時間を超えると赤く表示されます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2752288/205a6138-5308-8dce-7037-85fea33c92e5.png)

![スクリーンショット 2023-02-26 124039.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2752288/220d1d59-53ee-30f5-8df7-2ee0aafdb13e.jpeg)


#### ・Queries

作業タスクからクエリで抽出する機能になります。
定期ミーティングの際は全体の作業タスクを抽出して、これを見ながら進捗を説明、確認していくイメージになります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2752288/7ab48cfc-8e1b-378a-5fec-98d6105db496.png)


#### ・Delivery Plans

設定されているスプリントでepic、issueを時系列で表示できる機能になります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2752288/384e6178-3be3-f811-eb08-319ccfc64859.png)


### Repos

GitHubと同じ機能が搭載され、一般的な操作がGUIから出来るようになっています。

#### ・Files

リポジトリのブランチにあるファイルを変更出来ます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2752288/6c4afeeb-8e2b-fb16-85de-5d76ac7eedeb.png)


#### ・Commits

コミットしたファイルの差異を確認出来ます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2752288/9db5dc0f-9b45-7939-d0a8-44dcdde5b741.png)


#### ・Pushes

プッシュしたファイル操作の履歴が確認できます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2752288/cc8c765c-2351-8fb8-f12a-43ddbd073237.png)


#### ・Branches

ブランチの新規作成、セキュリティ管理の操作が行えます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2752288/4860bebf-55fc-d516-7b44-4292ad28a7b2.png)


#### ・Tags

ある地点にあるブランチのコミットにタグを付けて保存できる機能になります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2752288/2a6e4dbf-b973-7482-5611-cabc9a49f2cd.png)

#### ・Pull Requests

ブランチをマージする際にプルリクエストを作成します。
レビュアーの承認、プルリクエスト作成のメール送信、修正箇所のコメントが出来ます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2752288/4b07a548-23a4-d6ee-70fb-15d7ed844a96.png)

### Pipelines

Microsoftのネットワーク内で仮想マシンが起動し、その中でパイプラインで設定された処理が実行されます。パイプラインにはビルドパイプライン、リリースパイプラインと分かれています。ビルドパイプラインではビルドに必要な処理を行い、アーティファクトと呼ばれるストレージに成果物を置きます。その後リリースパイプラインで実際の環境に反映していく流れとなります。

他のオプションとしてAzureに ***自前の仮想マシン*** を用意し、必要なパッケージをインストールしセルフホステッドという形でその環境内で処理を実行させることも可能です。

#### ・Pipelines

ビルドパイプラインと呼ばれる機能になります。
作成時にまず取得元リソースを選択します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2752288/4c4331b5-30bf-a752-ce72-933387619c05.png)

パイプラインの書き方はyaml形式で記入していきます。
詳細な記載は以下のリンクにあります。

https://learn.microsoft.com/ja-jp/azure/devops/pipelines/yaml-schema/pipeline?view=azure-pipelines#remarks

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2752288/d4164cb6-2077-a6d1-16ea-4f574cc203a8.png)

クラシックバージョンも選択でき、画面からの操作で実装が可能です。
ここではパイプラインでPowerShellを実行するタスクを入れています。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2752288/55b0a6c1-40ee-0895-97d0-314f14b63cdb.png)

実際にパイプラインを実行すると以下のエラーが発生する場合があります。

``` ##[error]No hosted parallelism has been purchased or granted. To request a free parallelism grant, please fill out the following form https://aka.ms/azpipelines-parallelism-request ```

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2752288/fe2ac7f3-0d9f-2641-9aee-b9ee002212c3.png)

これは仮想マシンがマイニングで使用される恐れがあるため、Microsoftに使用申請が必要になりました。

以下から申請し、後日使用許可のメールが届きます。

https://aka.ms/azpipelines-parallelism-request

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2752288/747e570b-ac47-836f-3ab7-3d860c00255e.png)

エラーが無く、正常終了した場合は以下になります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2752288/7eb416a8-24b1-345f-c2f4-c12d43a47213.png)


#### ・Releases

リリースパイプラインと呼ばれるものになります。
ビルドパイプラインと実装は同じような形になります。

取得元のリソースから仮想マシン内に複製を行い処理を行います。
リリースパイプライン実行時にレビュアーを設定することことで、リリースパイプライン作成時メールが送信されレビュアーの承認を得られれば実行できるフローが作成できます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2752288/ca803990-2ad2-1fe0-6eec-5c6d3fc1fd84.png)


#### ・Library

ビルドパイプライン・リリースパイプラインで実行する際の共通するグループ変数を設定することが出来ます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2752288/c6d5153e-700e-b0d9-e320-dd413aecacb2.png)


### Test Plan

この機能は有料機能となり、通常表示項目は以下の画像となります。
お試しで30日間無料でも使用可能。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2752288/752047f5-5e02-ec61-7f6f-89f03a4e0dd2.png)

有料版だと以下の画像になります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2752288/5d4c99f0-9f67-f601-8d06-30d2a6ab99d6.png)


#### ・Test plans

この機能ではTest Suites（テストケースのまとまり）を作成していきます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2752288/65a12f3f-b1d9-2ecb-d3c0-42a76980082e.png)

作成からテストケースをそれぞれ作成します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2752288/d547a6a8-c446-7e62-00e4-017fd66f2cbc.png)

上記を作成後、実際のテストを行います。
2種類ありWebベース画面のアプリと、デスクトップアプリとしてインストールして行うものがあります。
キャプチャ機能やBoardsのWorkitemと紐づけることも可能です。

Webベース版
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2752288/13258b5e-fdf1-2e79-44f6-eb13c947da87.png)

デスクトップアプリ版
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2752288/e5afa8e3-b5bc-fa54-f48c-a95fb625d64b.png)


#### ・Progress report

テスト全体の進捗を確認出来る画面です。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2752288/6f6a2b59-73a9-8a24-8570-4065a0bfdaad.png)

#### ・Parameters

他のテストケースと共通して使用できるパラメーターシートです。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2752288/35ef24be-ffe0-f06d-4cd9-960601aa351e.png)

#### ・Configurations

テストで使用する環境の設定を行うことが出来ます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2752288/2d124755-8454-83b0-28bc-ac0985a020a2.png)


#### ・Runs

テスト結果について具体的なKPIを元に表示できる機能です。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2752288/7b3c460e-90b9-29c2-964c-f8a34e39b1a8.png)


### Artifact
プロジェクト内でオリジナルのライブラリを作成した際に、プライベートで共有出来るサービスになります。容量は2GBまで無料で、ビルドパイプラインの成果物を配置する場所としても使用できます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2752288/4e801387-b05d-25a3-9d76-f84ddd6729a0.png)


下記のパッケージ管理ソフトが対応しています。
・dotnet
・NuGet
・Visual Studio
・npm
・Maven
・Gradle
・pip
・twine
・universal Packages

「Connect to feed」を選択し、それぞれのパッケージの設定を行います。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2752288/30c07fd0-b378-6810-9186-b8ed7b3e23a8.png)



# 全体図
全体の流れをまとめると下記のようになります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2752288/3314a80a-057b-8ec3-2cbc-72972f239444.png)

アジャイル開発と非常に相性の良いツールであり、一定ではありますが無料で利用できるのも凄く嬉しいです。

# 参考にしたサイト様
https://www.winserver.ne.jp/column/about-devops/

https://rainbow-engine.com/azure-no-hosted-parallelism/

https://learn.microsoft.com/ja-jp/azure/devops/organizations/billing/billing-faq?view=azure-devops&tabs=new-nav&viewFallbackFrom=vsts

https://learn.microsoft.com/ja-jp/azure/devops/test/overview?view=azure-devops

https://learn.microsoft.com/ja-jp/azure/devops/artifacts/start-using-azure-artifacts?view=azure-devops&tabs=maven

これで以上となります。
見て下さりありがとうございました。