見出し画像

⑥Azure DevOpsを利用してAllure x Pytestを使ったテスト自動化環境構築(Azure Pipelines構築編)

SHIFT Group 技術ブログ

はじめに

こんにちは、自動化エンジニアの竹川です。

前回のMicrosoft Teams通知設定編はいかがでしたか?今回も引き続き「Azure DevOpsを利用してAllure x Pytestを使ったテスト自動化環境構築」をご紹介したいと思います。

本記事の目的

前回の章ではパイプラインの結果通知をするためのMicrosoft Teamsの設定方法ついて解説させていただきました。

今回の章では「Azure Repos」、「Azure Pipelines」、「Azure Artiacts」利用してサンプルプログラムを動作させるための設定について解説させていただきます。

Azure ReposはGitレポジトリとなります。こちらにサンプルプログラムをコミットします。Azure Pipelinesはサンプルプログラムに内包されているazure-pipelines.ymlを実行するための機構となります。 Azure Artiactsは成果物を保存するストレージとなりますが、サンプルプログラムではAllureレポートを保存しておくためのものです。 Azure Storageを使ってるからいいのでは?と思われるかもしれませんが、Azure Storageでは最終実行結果、つまり最新のレポートが公開する目的でAzure Artiactsはパイプラインの実行時の状態を保存しておく目的が あるためです。これにより、パイプラインと結果が紐づくものをローカルにダウンロードして確認する事ができます。

資材のダウンロード

Azure Reposの準備で資材が必要となりますので以下リンクよりダウンロードをお願いいたします。

資材ダウンロード

解凍後の資材のフォルダ構成は以下となります。

PyTestPoc-mainazure-pipelines.yml # ①Pipelineを実装したファイル
    │  README.md
    │
    ├─src
    │  │  __init__.py
    │  │
    │  └─myapp #②テスト対象のソースコード
    │          mathlib.pywallet.py
    │          __init__.py
    │
    └─tests # ③Pytestのテストコード
            test_class.py
            test_mathlib.py
            test_wallet.py
            test_wallet_with_fixture.py
            __init__.py

Azure Reposの準備

Azure DevOpsのトップページからプロジェクトを選択

左メニューから「Repos」を選択

リポジトリURLをコピー

ローカル環境でPowershellを開き、ワークフォルダへ移動
※ワークフォルダは任意の場所でご対応ください。

前項で控えたURLでgit cloneコマンドを実行

git clone {控えたURL}
例) git clone https://xxxx@dev.azure.com/xxxxPyTestPoc/_git/PyTestPoc

認証画面が表示されるのでAzureを契約しているアカウントでログイン

クローンしたプロジェクトのディレクトリへ移動

cd .\PyTestPoc

資材を こちら よりダウンロードし、ローカルフォルダに解凍したフォルダ内のソースを上書きしてください。

以下コマンドを実行し、ソースをリモートレポジトリへコミット

git add .
git commit -m "初回コミット"
git push origin master

Azure DevOpsの画面へ戻り、左メニュー> Repos > Filesをクリックし、ファイルがコミットされている事を確認

Azure Pipelines編集

左メニュー > Pipelinesをクリックし、画面中央の「Create Pipeline」をクリック

Azure Repos Gitをクリック

Reposの項で対応したプロジェクトをクリック

azure-pipelines.ymlの編集画面で以下5箇所を編集してください。

1.poolにself-hosted-agentセットアップ編で控えたの「Agent Pool」名前を設定してください。

pool: 'AgentPool名'

2.azureSubscriptionにAzure Storage構築編で控えた「Service Connection名」を設定してください。

# Allureレポートを「Azure Storage」へアップロード
- task: AzureFileCopy@4
  inputs:
    SourcePath: '$(System.DefaultWorkingDirectory)/public'    
    azureSubscription: 'Service Connection名'

3.storageにAzure Storage構築編で控えた「ストレージアカウント名」を設定してください。

Destination: 'AzureBlob'
storage: 'ストレージアカウント名'

4.ContainerNameにAzure Storage構築編で控えた「コンテナ名」を設定してください。

 ContainerName: 'コンテナ名'

5.urlにMicrosoft Teams通知設定編で控えた「Incomming WebhookのURL」を設定してください。

# Pipeline結果をTeamsへ通知
- task: PostToOffice365Connector@1
  inputs:
    url: 'Incomming WebhookのURL'
    title: 'Azure Pipelines Complate'

6.allure reportのリンクにAzure Storage構築編で控えたプライマリ エンドポイント+/public/を設定してください。

 [allure report]('Azure Storage構築編でプライマリ エンドポイント+/public/')

赤枠の部分を編集後、「Save and run」ボタンをクリック

「Save and run」ボタンをクリック

パイプラインのジョブがすべてグリーンになれば成功です

Teamsを開くと実行されたPipelineの結果通知が表示されているので「allure report」のリンクをクリックしてください

Azure StorageにアップロードしたAllureレポートが表示されてますね。これでパイプライン一式が完成となります。

次回のお知らせ

今回はここまでとなります。

「Azure Repos」「Azure Pipelines」「Azure Artiacts」を使ったパイプラインの構築方法について対応いたしました。
パイプラインの全体像が見えた事と一通りパイプラインの実行ができた事で理解が深まったかと思います。

次回は、【⑦Azure DevOpsを利用してAllure x Pytestを使ったテスト自動化環境構築(Azure Pipelinesコーディング解説編)】 をご紹介したいと思います!

最後までお読みいただき、ありがとうございました。


執筆者プロフィール:Shinya Takekawa
前職ではERPパッケージのクラウドサービスの運用を3年経験 SHIFTでは、自動化エンジニアとして入社し、RPA、CI/CD、テストプログラム開発など案件に応じて従事しています。
得意な事としてはTerraform、Ansibleを使ったインフラ構築の自動化技術です。 CI/CDを中心とした自動化の技術に興味があり、日々勉強をしています。 研究した内容を広めて皆様に貢献できたらと思っています。


みんなにも読んでほしいですか?

オススメした記事はフォロワーのタイムラインに表示されます!
SHIFT Group 技術ブログ
「無駄をなくしたスマートな社会の実現」を目指し、ソフトウェア製品の開発、運用、マーケティングなどあらゆる立場から携わるSHIFT Groupの公式note。エンタメ・ゲーム業界から、Web系、金融/製造/小売りなどのエンタープライズ業界まで広い知見を活かした情報を発信しています。