variables:
  - template: templates/variables.yml

stages:
- stage: build
  jobs:
  - job: Build
    pool:
      vmImage: ${{ variables.vmImage }}
    steps:
    - template: templates/build-steps.yml

- stage: publish
  jobs:
  - job:
    strategy:
      matrix:
        win10-x64:
          runtime: win10-x64
          format: zip
          compression: zip
        win10-x86:
          runtime: win10-x86
          format: zip
          compression: zip
        osx-x64:
          runtime: osx-x64
          format: tar.gz
          compression: tar
        linux-x64:
          runtime: linux-x64
          format: tar.gz
          compression: tar
        linux-arm:
          runtime: linux-arm
          format: tar.gz
          compression: tar
        linux-arm64:
          runtime: linux-arm64
          format: tar.gz
          compression: tar
    pool:
      vmImage: ${{ variables.vmImage }}
    steps:
      - template: templates/publish-os-steps.yml

- stage: deploy
  jobs:
  - job:
    condition: and(succeeded(), eq(variables.isMain, true))
    steps:
    - task: DownloadPipelineArtifact@2
      inputs:
        buildType: 'current'
        targetPath: '$(System.ArtifactsDirectory)'

    - task: PowerShell@2
      displayName: 'Get Release Notes'
      inputs:
        targetType: 'inline'
        script: |
          $response = Invoke-WebRequest -Uri "https://ombireleasenote.azurewebsites.net/api/ReleaseNotesFunction?buildId=$(Build.BuildId)"
          Write-Host "##vso[task.setvariable variable=ReleaseNotes;]$response"

    - task: GitHubRelease@1
      displayName: 'Ombi.Releases Release'
      inputs:
        gitHubConnection: 'PAT'
        repositoryName: 'Ombi-app/Ombi.Releases'
        action: 'create'
        target: 'c7fcbb77b58aef1076d635a9ef99e4374abc8672'
        tagSource: 'userSpecifiedTag'
        tag: '$(gitTag)'
        releaseNotesSource: 'inline'
        releaseNotesInline: '$(ReleaseNotes)'
        assets: |
          $(System.ArtifactsDirectory)/**/*.zip
          $(System.ArtifactsDirectory)/**/*.tar.gz
        isPreRelease: true
        changeLogCompareToRelease: 'lastNonDraftRelease'
        changeLogType: 'commitBased'

    - task: GitHubRelease@1
      displayName: 'Ombi Release'
      inputs:
        gitHubConnection: 'PAT'
        repositoryName: 'Ombi-app/Ombi'
        action: 'create'
        target: '$(Build.SourceVersion)'
        tagSource: 'userSpecifiedTag'
        tag: '$(gitTag)'
        releaseNotesSource: 'inline'
        releaseNotesInline: '$(ReleaseNotes)'
        assets: |
          $(System.ArtifactsDirectory)/**/*.zip
          $(System.ArtifactsDirectory)/**/*.tar.gz
        isPreRelease: true
        changeLogCompareToRelease: 'lastNonDraftRelease'
        changeLogType: 'commitBased'

    - task: PowerShell@2
      displayName: "Trigger APT build"
      inputs:
        targetType: 'inline'
        script: |
          $body = @{
            "ref"="main"
            "inputs"= @{"version"= "$(gitTag)"}
          } | ConvertTo-Json

          $header = @{
            "Accept"="application/vnd.github.v3+json"
            "Authorization"="Bearer $(APTPAT)"
            "User-Agent"="Ombi"
          } 

          Invoke-RestMethod -Uri "https://api.github.com/repos/Ombi-app/Ombi.Apt/actions/workflows/build-deb.yml/dispatches" -Method 'Post' -Body $body -Headers $header