SharePoint Framework のデプロイを自動化する
はじめに
2017 年 11 月に SharePoint ALM API が提供されました。これにより、SharePoint アプリ (アドイン) や SharePoint Framework のアプリのビルドとデプロイを自動化できるようになりました。
実際にどのようになるかを試してみました。
サンプル コード
実行手順
前提として gulp がインストールされている必要があります。
- マニフェストの cdnBasePath を書き換える
- npm パッケージを復元する
- ソース ファイルをビルド (gulp bundle) する
- ソリューション パッケージを作成 (gulp package-solution) する
- ソース ファイルをアップロードしする
- ソリューション パッケージをアプリ カタログにアップロードする
- ソリューション パッケージを展開する
- ソリューション パッケージをインストールする
OAuth について
SharePoint の場合、Azure AD に登録したアプリではクライアント シークレットを使った Client Credentials Grant は利用できません。正確にはアクセス トークンは取得できますが、アクセス トークンを使って API を呼び出すと Unsupported app only token.
というエラー メッセージが返されます。
証明書を使う方法もありますが、手順が煩雑なため、SharePoint で提供されている OAuth (Azure ACS に基づいた承認フロー) を使用します。
AppRegNew.aspx からアプリを登録します。
AppInv.aspx からアクセス許可を設定します。AllowAppOnlyPolicy="true"
とする必要があります。
アクセス許可を付与します。
これでクライアント シークレットを使ってアクセス トークンを取得する準備が整いました。URL は https://login.microsoftonline.com
ではなく https://accounts.accesscontrol.windows.net
となります。また client_id や resource に設定する値も Azure AD とは異なるため注意が必要です。[1]
おわりに
SharePoint Framework でも CI/CD を実現できるようになったことは非常に有用です。今回はすべてスクリプトで実装しましたが、Azure DevOps などの CI/CD サービスでも同様に実行できます。
-
このあたりの実装を詳しく知りたい場合は TokenHelper.cs を確認してください。 ↩︎
Discussion