CI/CD パイプラインを設定する

TeamsFx は、Microsoft Teams アプリケーションの構築中に開発ワークフローを自動化するのに役立ちます。 CI/CD パイプラインを設定するためのツールとテンプレートは、GitHub、Azure DevOps、Jenkins、およびその他のプラットフォームを使用して、ワークフロー テンプレートを作成し、CI/CD ワークフローをカスタマイズします。 リソースをプロビジョニングするには、Azure サービス プリンシパルを作成し、プロビジョニング パイプラインを使用するか、bicep ファイルを使用して手動で実行します。 Teams アプリを発行するには、発行パイプラインを使用するか、 Teams 用開発者ポータルを利用して手動で実行できます。

ツールとテンプレート

ツールとテンプレート 説明
TeamsFx-CLI-Action TeamsFx CLI と統合される GitHub アクション。
Visual Studio Code 用 Microsoft Teams ツールキット GitHub、Azure DevOps、Jenkins の Teams アプリと自動化ワークフローを開発するのに役立つ Microsoft Visual Studio Code 拡張機能。
CLI 用 Microsoft Teams Toolkit Teams アプリや、GitHub、Azure DevOps、および Jenkins の自動化ワークフローの開発に役立つコマンドライン ツール。
github/ci.yml
github/cd.azure.yml
github/cd.spfx.yml
github/provision.azure.yml
github/provision.spfx.yml
github/publish.yml
GitHub の自動化用テンプレート。
azdo/ci.yml
azdo/cd.azure.yml
azdo/cd.spfx.yml
azdo/provision.azure.yml
azdo/provision.spfx.yml
azdo/publish.yml
Azure DevOps の自動化用テンプレート。
jenkins/Jenkinsfile.ci
jenkins/Jenkinsfile.azure.cd
jenkins/Jenkinsfile.spfx.cd
jenkins/Jenkinsfile.azure.provision
jenkins/Jenkinsfile.spfx.provision
jenkins/Jenkinsfile.publish
Jenkins の自動化用テンプレート。
others/ci.sh
others/cd.azure.sh
others/cd.spfx.sh
others/provision.azure.sh
others/provision.spfx.sh
others/publish.sh
GitHub、Azure DevOps、または Jenkins 以外の自動化用のスクリプト テンプレート。

CI/CD パイプラインを設定する

パイプラインは、次のプラットフォームで設定できます。

  1. GitHub を使用してワークフローを設定する
  2. Azure DevOps を使用してパイプラインを設定する
  3. Jenkins を使用してパイプラインを設定する
  4. 他のプラットフォームのパイプラインを設定する

ワークフロー テンプレートの種類

TeamsFx では、次の 4 種類のワークフロー テンプレートがサポートされています。

  • CI: コードのチェックアウト、ビルド、テストの実行に役立ちます。
  • CD: コードのチェックアウト、ビルド、テスト、クラウドへのデプロイに役立ちます。
  • プロビジョニング: クラウドと Teams アプリの登録でリソースを作成または更新するのに役立ちます。
  • 発行: Teams アプリをテナントに発行するのに役立ちます。

資格情報を準備する

サインイン資格情報の 2 つのカテゴリは、CI/CD ワークフローに関係します。

  • Microsoft 365: プロビジョニング、発行、SPFx ベースのプロジェクトの CD ワークフローを実行するために、Microsoft 365 資格情報が必要です。
  • Azure: Azure でホストされているプロジェクトのプロビジョニングと CD ワークフローを実行するために、Azure 資格情報が必要です。

注:

プロビジョニング ワークフローを実行する前に、環境変数または env/.env.* ファイルに Azure サブスクリプション ID を設定する必要があります。 使用される変数名は です AZURE_SUBSCRIPTION_ID。 また、既定ではファイルによって.gitignore無視されるため、ファイルenv/.env.*をコミットして Git リポジトリにプッシュするか、パイプラインの環境変数を設定することを忘れないでください。

名前 説明
AZURE_SERVICE_PRINCIPAL_NAME リソースのプロビジョニングに使用される Azure のサービス プリンシパル名。
AZURE_SERVICE_PRINCIPAL_PASSWORD Azure サービス プリンシパルのパスワード。
AZURE_SUBSCRIPTION_ID リソースをプロビジョニングするサブスクリプションを識別する。
AZURE_TENANT_ID サブスクリプションが存在するテナントを識別する。
M365_ACCOUNT_NAME Teams アプリを作成および発行するための Microsoft 365 アカウント。
M365_ACCOUNT_PASSWORD Microsoft 365 アカウントのパスワード。
M365_TENANT_ID Teams アプリが作成または発行されるテナントを特定する。 マルチテナント アカウントがあり、別のテナントを使用する場合を除き、この値は省略可能です。 Microsoft 365 テナント ID を見つける方法の詳細については、こちらをご覧ください。

注:

  • 現在、MICROSOFT 365 の非対話型認証スタイルは CI/CD ワークフローで使用されるため、Microsoft 365 アカウントにテナントで十分な特権があり、多要素認証やその他の高度なセキュリティ機能が有効になっていないことを確認してください。 ワークフローで使用される資格情報に対して多要素認証とセキュリティの既定値が無効になっていることを確認するには、「 Microsoft 365 資格情報の構成 」を参照してください。
  • 現在、Azure のサービス プリンシパルは CI/CD ワークフローで使用され、使用する Azure サービス プリンシパルを作成するには、こちらを参照 してください

ホストの種類

テンプレートは、プロビジョニングおよび CD ワークフロー テンプレートがコピーに分割されるホストの種類 (Azure または SPFx) によって異なります。 CI、発行ワークフロー テンプレートはホスト型に依存しません。 Azure でホストされているプロジェクトで作業している場合は、ファイル名がインフィックスの azure テンプレートをダウンロードします。 SPFx でホストされているプロジェクトで作業している場合は、ファイル名 spfx が infix のテンプレートをダウンロードします。

GitHub を使用してワークフローを設定する

CI/CD で GitHub を使用してパイプラインを設定するには:

  • CI/CD ワークフローを作成します。
  • CI/CD ワークフローをカスタマイズします。

CI/CD ワークフローを作成する

  1. [ツールとテンプレート] から対応するテンプレート ファイルをダウンロードします。
  2. 必要に応じて、ダウンロードしたテンプレート ファイルの名前を変更します。
  3. それらを の下.github/workflowsに置きます。これは、GitHub Actionsの指定されたフォルダーです。
  4. これらのテンプレート ファイルをコミットしてリモート リポジトリにプッシュします。
  5. ワークフローに必要な 暗号化されたシークレット を追加します。
  6. ワークフローをトリガーします。 GitHub でワークフローをトリガーする方法の 詳細 を確認してください。

CI ワークフローをカスタマイズする

CI ワークフローをカスタマイズするには、次の操作を行います。

  1. トリガーを変更する: 既定では、ブランチに対して dev 新しいプル要求が作成されると、CI ワークフローがトリガーされます。
  2. プロジェクトをビルドするためのスクリプトを追加する: 既定では、 Build the project ステップはコメントされます。
  3. 単体テストを実行するためのスクリプトの追加: 既定では、 Run unit test 手順はコメントされます。

CD ワークフローをカスタマイズする

CD ワークフローをカスタマイズするには、次の操作を行います。

  1. トリガーを変更する: 既定では、新しいコミットがブランチに main プッシュされたときに CD ワークフローがトリガーされます。
  2. 環境変数 TEAMSFX_ENV_NAMEの値を変更する: 既定では、値は です dev
  3. 環境変数 TEAMSFX_CLI_VERSIONの値を変更する: 既定では、値は です 2.*
  4. プロジェクトをビルドするためのスクリプトを追加する: 既定では、 Build the project ステップはコメントされます。
  5. 単体テストを実行するためのスクリプトの追加: 既定では、 Run unit test 手順はコメントされます。

プロビジョニングと発行ワークフローをカスタマイズする

プロビジョニングと発行ワークフローをカスタマイズするには、次の操作を行います。

  1. トリガーを変更する: 既定では、ワークフローは手動でトリガーされます。
  2. 環境変数 TEAMSFX_ENV_NAMEの値を変更する: 既定では、値は です dev
  3. 環境変数 TEAMSFX_CLI_VERSIONの値を変更する: 既定では、値は です 2.*

Azure DevOps を使用してパイプラインを設定する

CI/CD で Azure DevOps を使用してパイプラインを設定するには:

  • CI/CD パイプラインを作成します。
  • CI/CD パイプラインをカスタマイズします。

CI/CD パイプラインを作成する

  1. [ツールとテンプレート] から対応するテンプレート ファイルをダウンロードします。
  2. 必要に応じて、ダウンロードしたテンプレート ファイルの名前を変更します。
  3. それらを の下 .azure/pipelinesに置きます。これは、Azure Pipelines の従来のフォルダーです。
  4. これらのテンプレート ファイルをコミットしてリモート リポジトリにプッシュします。
  5. 「初めての Azure DevOps パイプラインを作成する」に従って、対応する Azure DevOps パイプラインを作成します
  6. パイプラインに必要な Azure DevOps パイプライン変数 を追加します。
  7. パイプラインを自動的にトリガーするか、手動で、またはカスタマイズします (yml ファイルの または pr: セクションを確認trigger:してトリガーを見つけます)。 Azure DevOps のトリガーの詳細については、「Azure パイプラインのトリガー」を参照してください。

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

CI パイプラインをカスタマイズするには、次の操作を行います。

  1. トリガーを変更する: 既定では、ブランチに対して dev 新しいプル要求が作成されると、CI パイプラインがトリガーされます。
  2. プロジェクトをビルドするためのスクリプトを追加する: 既定では、 Build the project ステップはコメントされます。
  3. 単体テストを実行するためのスクリプトの追加: 既定では、 Run unit test 手順はコメントされます。

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

CD パイプラインをカスタマイズするには、次の操作を行います。

  1. トリガーを変更する: 既定では、新しいコミットがブランチに main プッシュされたときに CD パイプラインがトリガーされます。
  2. 環境変数 TEAMSFX_ENV_NAMEの値を変更する: 既定では、値は です dev
  3. 環境変数 TEAMSFX_CLI_VERSIONの値を変更する: 既定では、値は です 2.*
  4. プロジェクトをビルドするためのスクリプトを追加する: 既定では、 Build the project ステップはコメントされます。
  5. 単体テストを実行するためのスクリプトの追加: 既定では、 Run unit test 手順はコメントされます。

プロビジョニングパイプラインと発行パイプラインをカスタマイズする

プロビジョニングと発行のパイプラインをカスタマイズするには、次の操作を行います。

  1. トリガーを変更する: 既定では、ワークフローは手動でトリガーされます。
  2. 環境変数 TEAMSFX_ENV_NAMEの値を変更する: 既定では、値は です dev
  3. 環境変数 TEAMSFX_CLI_VERSIONの値を変更する: 既定では、値は です 2.*

Jenkins を使用してパイプラインを設定する

CI/CD で Jenkins を使用してパイプラインを設定するには:

  • CI/CD パイプラインを作成します。
  • CI/CD パイプラインをカスタマイズします。

CI/CD パイプラインを作成する

  1. [ツールとテンプレート] から対応するテンプレート ファイルをダウンロードします。
  2. 必要に応じて、ダウンロードしたテンプレート ファイルの名前を変更します。
  3. それらを の下に .jenkins/pipelines置きます。これは、Jenkins Pipelines の従来のフォルダーにすることができます。

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

CI パイプラインをカスタマイズするには、次の操作を行います。

  1. トリガーを変更する: 既定では、CI パイプラインは定期的にトリガーされます。
  2. プロジェクトをビルドするためのスクリプトを追加する: 既定では、 Build the project ステップはコメントされます。
  3. 単体テストを実行するためのスクリプトの追加: 既定では、 Run unit test 手順はコメントされます。

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

CD パイプラインをカスタマイズするには、次の操作を行います。

  1. トリガーを変更する: 既定では、CD パイプラインは定期的にトリガーされます。
  2. 環境変数 TEAMSFX_ENV_NAMEの値を変更する: 既定では、値は です dev
  3. 環境変数 TEAMSFX_CLI_VERSIONの値を変更する: 既定では、値は です 2.*
  4. プロジェクトをビルドするためのスクリプトを追加する: 既定では、 Build the project ステップはコメントされます。
  5. 単体テストを実行するためのスクリプトの追加: 既定では、 Run unit test 手順はコメントされます。

プロビジョニングパイプラインと発行パイプラインをカスタマイズする

プロビジョニングと発行のパイプラインをカスタマイズするには、次の操作を行います。

  1. トリガーを変更する: 既定では、パイプラインは定期的にトリガーされます。
  2. 環境変数 TEAMSFX_ENV_NAMEの値を変更する: 既定では、値は です dev
  3. 環境変数 TEAMSFX_CLI_VERSIONの値を変更する: 既定では、値は です 2.*

他のプラットフォームのパイプラインを設定する

ツールとテンプレートの定義済みの bash スクリプトの例に従って、他のプラットフォームで CI/CD パイプラインを構築およびカスタマイズできます。

これらのスクリプトは、クロスプラットフォームの TeamsFx コマンド ライン ツール TeamsFx-CLI に基づいています。 npm install -g @microsoft/teamsfx-cli でインストールして、ドキュメントに従ってスクリプトをカスタマイズできます。

注:

  • CI モードで @microsoft/teamsfx-cli の実行を有効にするには、export CI_ENABLED=true を使用して CI_ENABLED をオンにします。 CI モードでは、@microsoft/teamsfx-cli は CI/CD に適しています。
  • 非対話型モードで @microsoft/teamsfx-cli の実行を有効にするには、次のコマンドを使用してグローバル構成を設定します: teamsfx config set -g interactive false。 非対話型モードでは、 @microsoft/teamsfx-cli 入力を求められません。

必ず環境変数に Azure と Microsoft 365 の資格情報を安全に設定してください。 たとえば、ソース コード リポジトリとして GitHub を使用している場合は、「GitHub シークレット」を参照してください。

使用する Azure サービス プリンシパルを作成する方法

CI/CD 内で Azure を対象とするリソースをプロビジョニングおよび展開するには、使用する Azure サービス プリンシパルを作成する必要があります。

Azure サービス プリンシパルを作成するには、次の手順に従います。

  1. シングル テナントにMicrosoft Entra アプリケーションを登録します。
  2. Azure サブスクリプションにアクセスするには、Microsoft Entra アプリケーションにロールを割り当てます。 Contributor ロールをお勧めします。
  3. 新しいMicrosoft Entraアプリケーション シークレットを作成します。

ヒント

今後使用できるように、テナント ID、アプリケーション ID (AZURE_SERVICE_PRINCIPAL_NAME)、シークレット (AZURE_SERVICE_PRINCIPAL_PASSWORD) を保存します。

詳細については、「Azure サービス プリンシパルのガイドライン」を参照してください。 サービス プリンシパルを作成する 3 つの方法を次に示します。

Teams 開発者ポータルを使用して Teams アプリを発行する

Teams アプリのマニフェスト ファイルに関連する変更がある場合は、マニフェストを更新して、Teams アプリをもう一度発行できます。 Teams アプリを手動で発行するには、 Teams 用開発者ポータルを使用できます。

アプリを発行するには、次の手順に従います。

  1. 対応するアカウントを使用して Teams 開発者ポータルにサインインします。
  2. zip 形式でアプリ パッケージをインポートし、[アプリの>インポート>][置換] を選択します。
  3. アプリの一覧でターゲット アプリを選択します。
  4. アプリを発行するには、[発行>] を選択して組織に発行します

関連項目