name: Build and Deploy

on:
  push:
    branches:
      - '**'
  schedule:
    - cron: '0 10 * * *' # Once per day at 10am UTC
  workflow_dispatch:

jobs:
  build:
    name: Build
    uses: spring-io/spring-security-release-tools/.github/workflows/build.yml@v1
    strategy:
      matrix:
        os: [ubuntu-latest, windows-latest]
        jdk: [17]
    with:
      runs-on: ${{ matrix.os }}
      java-version: ${{ matrix.jdk }}
      distribution: temurin
    secrets: inherit
  test:
    name: Test Against Snapshots
    uses: spring-io/spring-security-release-tools/.github/workflows/test.yml@v1
    with:
      test-args: --refresh-dependencies --stacktrace -PforceMavenRepositories=snapshot -PspringFrameworkVersion=6.0.+ -PspringSecurityVersion=6.1.+
    secrets: inherit
  deploy-artifacts:
    name: Deploy Artifacts
    needs: [build, test]
    uses: spring-io/spring-security-release-tools/.github/workflows/deploy-artifacts.yml@v1
    with:
      should-deploy-artifacts: ${{ needs.build.outputs.should-deploy-artifacts }}
    secrets: inherit
  deploy-docs:
    name: Deploy Docs
    needs: [build, test]
    uses: spring-io/spring-security-release-tools/.github/workflows/deploy-docs.yml@v1
    with:
      should-deploy-docs: ${{ needs.build.outputs.should-deploy-artifacts }}
    secrets: inherit
  perform-release:
    name: Perform Release
    needs: [deploy-artifacts, deploy-docs]
    uses: spring-io/spring-security-release-tools/.github/workflows/perform-release.yml@v1
    with:
      should-perform-release: ${{ needs.deploy-artifacts.outputs.artifacts-deployed }}
      project-version: ${{ needs.deploy-artifacts.outputs.project-version }}
      milestone-repo-url: https://repo.spring.io/artifactory/milestone
      release-repo-url: https://repo1.maven.org/maven2
      artifact-path: org/springframework/security/spring-security-oauth2-authorization-server
      slack-announcing-id: spring-authorization-server-announcing
    secrets: inherit