pool:
  name: Azure Pipelines
# このパイプラインは開発環境にあるソリューションをAzure DevOps上のGitでソース管理を行います。
#「SolutionName」という変数を利用しています。このパイプラインを実行する前に、画面右上のVariablesから追加してください。
steps:
- checkout: self
  persistCredentials: true
- task: PowerPlatformToolInstaller@2
  displayName: 'Power Platform ツールのインストール '

# 開発環境のDataverseへ接続確認を行います
- task: PowerPlatformWhoAmi@2
  displayName: '接続確認（開発環境） '
  inputs:
    authenticationType: 'PowerPlatformSPN'
    PowerPlatformSPN: 'Power Platform ALM Dev' #開発環境のSPNを指定します

# 開発環境内のソリューションを発行します
- task: PowerPlatformPublishCustomizations@2
  displayName: 'ソリューション発行'
  inputs:
    authenticationType: 'PowerPlatformSPN'
    PowerPlatformSPN: 'Power Platform ALM Dev' #開発環境のSPNを指定します
    AsyncOperation: true
    MaxAsyncWaitTime: '60'

# 指定したソリューションをアンマネージドソリューションとしてエクスポートします    
- task: PowerPlatformExportSolution@2
  displayName: 'ソリューションエクスポート（アンマネージド）'
  inputs:
    authenticationType: PowerPlatformSPN
    PowerPlatformSPN: 'Power Platform ALM Dev' #開発環境のSPNを指定します
    SolutionName: '$(SolutionName)'
    SolutionOutputFile: '$(Build.ArtifactStagingDirectory)/$(SolutionName)-Unmanaged.zip'

# エクスポートしたアンマネージドソリューションをGitレポジトリへ展開します
- task: PowerPlatformUnpackSolution@2
  displayName: 'ソリューションのアンパック（アンマネージド）'
  inputs:
    SolutionInputFile: '$(Build.ArtifactStagingDirectory)/$(SolutionName)-Unmanaged.zip'
    SolutionTargetFolder: '$(Build.SourcesDirectory)/$(SolutionName)/Unmanaged'

# 指定したソリューションをマネージドソリューションとしてエクスポートします    
- task: PowerPlatformExportSolution@2
  displayName: 'ソリューションエクスポート（マネージド）'
  inputs:
    authenticationType: PowerPlatformSPN
    PowerPlatformSPN: 'Power Platform ALM Dev' #開発環境のSPNを指定します
    SolutionName: '$(SolutionName)'
    SolutionOutputFile: '$(Build.ArtifactStagingDirectory)/$(SolutionName)-Managed.zip'
    Managed: true

# エクスポートしたマネージドソリューションをGitレポジトリへ展開します
- task: PowerPlatformUnpackSolution@2
  displayName: 'ソリューションのアンパック（マネージド）'
  inputs:
    SolutionInputFile: '$(Build.ArtifactStagingDirectory)/$(SolutionName)-Managed.zip'
    SolutionTargetFolder: '$(Build.SourcesDirectory)/$(SolutionName)/Managed'
    SolutionType: Managed

# 変更内容をコミットします
# user.email と user.name を変更してください
- script: |
   echo commit all changes
   git config user.email "メールアドレスを変更してください"
   git config user.name "お名前を変更してください" 
   git checkout -B main
   git add --all
   git commit -m "adds source code files from DEV"
   git push --set-upstream origin main   
  displayName: 'コマンドラインスクリプトの実行（変更内容のコミット）'
