次の方法で共有


Python アプリをビルドして発行する

Azure DevOps Services |Azure DevOps Server |Azure DevOps Server 2022 |Azure DevOps Server 2020

このクイック スタートでは、Python アプリをビルドしてテストするパイプラインを作成します。 Azure Pipelines を使用して、継続的インテグレーションおよび継続的デリバリー (CI/CD) システムの一部として Python アプリとスクリプトを構築、テスト、デプロイする方法について説明します。

前提条件

Python は、Linux、macOS、および Windows 用の Microsoft でホストされるエージェント にプレインストールされています。 Python プロジェクトをビルドするために、これ以上何も設定する必要はありません。 プレインストールされている Python バージョンを確認するには、「 ソフトウェア」を参照してください。

製品 要件
Azure DevOps - Azure DevOps プロジェクト
- Microsoft がホストするエージェントでパイプラインを実行する機能。 並列ジョブを購入するか、Free レベルを要求できます。
- YAML と Azure Pipelines に関する基本的な知識。 詳細については、「最初のパイプラインの作成」を参照してください。
- アクセス許可:
     - パイプラインを作成するには、 共同作成者 グループに含まれている必要があり、グループには [ ビルド パイプラインの作成 ] アクセス許可が [許可] に設定されている必要があります。 プロジェクト管理者グループのメンバーは、パイプラインを管理できます。
    - サービス接続を作成するには、サービス接続の管理者ロールまたは作成者ロールが必要です。
GitHubの - GitHub アカウント。
- Azure Pipelines を承認するための GitHub サービス接続
製品 要件
Azure DevOps - Azure DevOps プロジェクト
- Python 3.12 またはその他の Python バージョンがインストールされているセルフホステッド エージェント。 作成する方法については、「セルフホステッド エージェント」を参照してください。
- YAML と Azure Pipelines に関する基本的な知識。 詳細については、「最初のパイプラインの作成」を参照してください。
- アクセス許可:
    - パイプラインを作成するには、 共同作成者 グループに含まれている必要があり、グループには [ ビルド パイプラインの作成 ] アクセス許可が [許可] に設定されている必要があります。 プロジェクト管理者グループのメンバーは、パイプラインを管理できます。
    - サービス接続を作成するには、サービス接続の管理者ロールまたは作成者ロールが必要です。
GitHubの - GitHub アカウント。
- Azure Pipelines を承認するための GitHub サービス接続

重要

GitHub の手順では、GitHub で次のアクションの 1 つ以上を実行する必要がある場合があります。

  • サインイン。
  • Azure Pipelines を承認します。
  • GitHub 組織に対して認証を行います。
  • Azure Pipelines アプリをインストールします。

手順に従って、必要なプロセスを完了します。 詳細については、「Github リポジトリへのアクセス」を参照してください。

サンプル コードをフォークする

サンプル Python リポジトリを GitHub アカウントにフォークします。

  1. python-sample-vscode-flask-tutorial リポジトリに移動します。
  2. 右上にある [フォーク ] を選択します。
  3. [所有者] で GitHub アカウント名が選択されていることを確認し、[フォークの作成] を選択します。 フォークの名前は既定では親リポジトリと同じですが、別の名前を付けることができます。

パイプラインを作成する

  1. Azure DevOps プロジェクトで、左側のナビゲーション メニューから [ パイプライン ] を選択し、[ 新しいパイプライン] を選択します。このパイプラインがプロジェクトの最初のパイプラインの場合は [パイプラインの作成 ] を選択します。
  2. [コードの場所] 画面で、ソース コードの場所として GitHub を選択します。
  3. [ リポジトリの選択 ] 画面で、フォークした Python サンプル リポジトリを選択します。
  4. [パイプラインの構成] 画面で、[スタート パイプライン] を選択します。

パイプラインをカスタマイズする

パイプライン YAML の確認画面で、生成されたazure-pipelines.yml ファイルの内容を次のコードに置き換えます。 このコードは、3 つの異なるバージョンの Python で次のアクションを実行します。

  1. 必要な Python バージョンと依存関係をインストールします。
  2. ビルド成果物を ZIP アーカイブにパッケージします。
  3. アーカイブをパイプラインに発行します。
  4. テストを実行します。
trigger:
- main

pool:
  vmImage: ubuntu-latest

strategy:
  matrix:
    Python310:
      python.version: '3.10'
    Python311:
      python.version: '3.11'
    Python312:
      python.version: '3.12'

steps:
  - task: UsePythonVersion@0
    inputs:
      versionSpec: '$(python.version)'
    displayName: 'Use Python $(python.version)'

  - script: |
      python -m pip install --upgrade pip
      pip install -r requirements.txt
    displayName: 'Install dependencies'

  - task: ArchiveFiles@2
    displayName: 'Archive files'
    inputs:
      rootFolderOrFile: $(System.DefaultWorkingDirectory)
      includeRootFolder: false
      archiveType: zip
      archiveFile: $(Build.ArtifactStagingDirectory)/$(Build.BuildId)-$(python.version).zip
      replaceExistingArchive: true

  - task: PublishBuildArtifacts@1
    inputs:
      PathtoPublish: '$(Build.ArtifactStagingDirectory)'
      ArtifactName: 'drop'
      publishLocation: 'Container'

  - script: |
      pip install pytest pytest-azurepipelines
      pytest
    displayName: 'pytest'

パイプライン YAML の確認画面で、生成されたazure-pipelines.yml ファイルの内容を次のコードに置き換えます。 このコードは、次のアクションを実行します。

  1. 必要な Python バージョンと依存関係をインストールします。
  2. ビルド成果物を ZIP アーカイブにパッケージします。
  3. アーカイブをパイプラインに発行します。
  4. テストを実行します。

プロジェクトの構成に合わせて azure-pipelines.yml をカスタマイズします。

  • 別のエージェント プールがある場合は、プール name プレースホルダーをプール名または defaultに置き換えます。
  • 必要に応じて、Python versionSpec をセルフホステッド エージェントにインストールされているバージョンに変更します。
  trigger:
  - main

  pool: 
    name: '<your-pool-name or default>'

  steps:
  - task: UsePythonVersion@0
    inputs:
      versionSpec: '3.12'
    displayName: 'Use Python 3.12'  

  - script: |
      python -m pip install --upgrade pip
      pip install -r requirements.txt
    displayName: 'Install dependencies'


  - task: ArchiveFiles@2
    displayName: 'Archive files'
    inputs:
      rootFolderOrFile: $(System.DefaultWorkingDirectory)
      includeRootFolder: false
      archiveType: zip
      archiveFile: $(Build.ArtifactStagingDirectory)/$(Build.BuildId).zip
      replaceExistingArchive: true

  - task: PublishBuildArtifacts@1
    inputs:
      PathtoPublish: '$(Build.ArtifactStagingDirectory)'
      ArtifactName: 'drop'
      publishLocation: 'Container'

  - script: |
      pip install pytest pytest-azurepipelines
      pytest
    displayName: 'pytest'

パイプラインを実行する

保存して実行を選択し、もう一度保存して実行を選択します。 [概要] 画面で [ジョブ] を選択すると、ジョブの動作を確認できます。

ジョブは、指定された Python バージョンごとに 1 回、3 回実行されます。 3 つのバージョンは、異なるエージェントで並列で実行できます。

複数のバージョンを持つ完了した Python ジョブのスクリーンショット。

完了した 1 つの Python ジョブのスクリーンショット。

成果物とテスト結果を表示する

ビルド成果物を表示するには、概要 タブの [N 発行済] リンクを選択します。

発行されたビルド成果物のリンクのスクリーンショット。

[成果物] ページに、発行されたビルド成果物が表示されます。

発行されたビルド成果物のスクリーンショット。

1 つのジョブに対して発行されたビルド成果物のスクリーンショット。

テスト結果を表示するには、[テスト] タブを選択します。

パイプラインのテスト結果のスクリーンショット。

クリーンアップ

作成したパイプラインの使用が完了したら、それを削除できます。

  1. プロジェクト の左側の ナビゲーション メニューから [パイプライン] を選択します。

  2. パイプラインの一覧で、作成したパイプラインにカーソルを合わせ、右側にある [その他のアクション ] アイコンを選択し、[削除] を選択 します

    または、パイプラインを選択し、パイプライン ページで右上にある [その他のアクション ] アイコンを選択し、[ 削除] を選択します。

  3. パイプライン名を入力し、もう一度 [削除 ] を選択します。

Python アプリをビルドしてテストするパイプラインを正常に作成して実行しました。 Azure Pipelines を使用して、CI/CD プロセスの一部として Python アプリとスクリプトをビルド、テスト、デプロイできるようになりました。

次のステップ