continuous-integration-workflow.yml 3.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  1. name: CI
  2. on:
  3. push:
  4. branches-ignore:
  5. - "dependabot/**"
  6. schedule:
  7. - cron: '0 10 * * *' # Once per day at 10am UTC
  8. workflow_dispatch: # Manual trigger
  9. env:
  10. DEVELOCITY_ACCESS_KEY: ${{ secrets.DEVELOCITY_ACCESS_KEY }}
  11. permissions:
  12. contents: read
  13. jobs:
  14. build:
  15. name: Build
  16. uses: spring-io/spring-security-release-tools/.github/workflows/build.yml@v1
  17. strategy:
  18. matrix:
  19. os: [ ubuntu-latest, windows-latest ]
  20. jdk: [ 17 ]
  21. with:
  22. runs-on: ${{ matrix.os }}
  23. java-version: ${{ matrix.jdk }}
  24. distribution: temurin
  25. secrets: inherit
  26. test:
  27. name: Test Against Snapshots
  28. uses: spring-io/spring-security-release-tools/.github/workflows/test.yml@v1
  29. strategy:
  30. matrix:
  31. include:
  32. - java-version: 21-ea
  33. toolchain: 21
  34. - java-version: 17
  35. toolchain: 17
  36. with:
  37. java-version: ${{ matrix.java-version }}
  38. test-args: --refresh-dependencies -PforceMavenRepositories=snapshot,https://oss.sonatype.org/content/repositories/snapshots -PisOverrideVersionCatalog -PtestToolchain=${{ matrix.toolchain }} -PspringFrameworkVersion=7.+ -PreactorVersion=2025.+ -PspringDataVersion=2025.+ --stacktrace
  39. secrets: inherit
  40. deploy-artifacts:
  41. name: Deploy Artifacts
  42. needs: [ build, test]
  43. uses: spring-io/spring-security-release-tools/.github/workflows/deploy-artifacts.yml@v1
  44. with:
  45. should-deploy-artifacts: ${{ needs.build.outputs.should-deploy-artifacts }}
  46. secrets: inherit
  47. deploy-docs:
  48. name: Deploy Docs
  49. needs: [ build, test ]
  50. uses: spring-io/spring-security-release-tools/.github/workflows/deploy-docs.yml@v1
  51. with:
  52. should-deploy-docs: ${{ needs.build.outputs.should-deploy-artifacts }}
  53. secrets: inherit
  54. deploy-schema:
  55. name: Deploy Schema
  56. needs: [ build, test ]
  57. uses: spring-io/spring-security-release-tools/.github/workflows/deploy-schema.yml@v1
  58. with:
  59. should-deploy-schema: ${{ needs.build.outputs.should-deploy-artifacts }}
  60. secrets: inherit
  61. perform-release:
  62. name: Perform Release
  63. needs: [ deploy-artifacts, deploy-docs, deploy-schema ]
  64. uses: spring-io/spring-security-release-tools/.github/workflows/perform-release.yml@v1
  65. with:
  66. should-perform-release: ${{ needs.deploy-artifacts.outputs.artifacts-deployed }}
  67. project-version: ${{ needs.deploy-artifacts.outputs.project-version }}
  68. milestone-repo-url: https://repo.spring.io/artifactory/milestone
  69. release-repo-url: https://repo1.maven.org/maven2
  70. artifact-path: org/springframework/security/spring-security-core
  71. slack-announcing-id: spring-security-announcing
  72. secrets: inherit
  73. send-notification:
  74. name: Send Notification
  75. needs: [ perform-release ]
  76. if: ${{ !success() }}
  77. runs-on: ubuntu-latest
  78. steps:
  79. - name: Send Notification
  80. uses: spring-io/spring-security-release-tools/.github/actions/send-notification@v1
  81. with:
  82. webhook-url: ${{ secrets.SPRING_SECURITY_CI_GCHAT_WEBHOOK_URL }}