release-next-version.yml 4.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121
  1. name: Release Next Version
  2. on:
  3. schedule:
  4. - cron: '0 17 * * MON' # Every Monday at 5pm UTC
  5. workflow_dispatch: # Manual trigger
  6. env:
  7. SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK_URL }}
  8. GRADLE_ENTERPRISE_CACHE_USER: ${{ secrets.GRADLE_ENTERPRISE_CACHE_USER }}
  9. GRADLE_ENTERPRISE_CACHE_PASSWORD: ${{ secrets.GRADLE_ENTERPRISE_CACHE_PASSWORD }}
  10. GRADLE_ENTERPRISE_SECRET_ACCESS_KEY: ${{ secrets.GRADLE_ENTERPRISE_SECRET_ACCESS_KEY }}
  11. RUN_JOBS: ${{ github.repository == 'spring-projects/spring-security' }}
  12. jobs:
  13. prerequisites:
  14. name: Pre-requisites for building
  15. runs-on: ubuntu-latest
  16. outputs:
  17. runjobs: ${{ steps.continue.outputs.runjobs }}
  18. steps:
  19. - id: continue
  20. name: Determine if should continue
  21. if: env.RUN_JOBS == 'true'
  22. run: echo "::set-output name=runjobs::true"
  23. check_release_due:
  24. name: Check if the release is due today
  25. needs: [prerequisites]
  26. runs-on: ubuntu-latest
  27. if: needs.prerequisites.outputs.runjobs
  28. steps:
  29. - uses: actions/checkout@v2
  30. - name: Set up JDK 17
  31. uses: actions/setup-java@v1
  32. with:
  33. java-version: '17'
  34. - name: Setup gradle user name
  35. run: |
  36. mkdir -p ~/.gradle
  37. echo 'systemProp.user.name=spring-builds+github' >> ~/.gradle/gradle.properties
  38. - name: Setup Gradle
  39. uses: gradle/gradle-build-action@v2
  40. env:
  41. GRADLE_USER_HOME: ~/.gradle
  42. - name: Check release
  43. run: |
  44. export GRADLE_ENTERPRISE_CACHE_USERNAME="$GRADLE_ENTERPRISE_CACHE_USER"
  45. export GRADLE_ENTERPRISE_CACHE_PASSWORD="$GRADLE_ENTERPRISE_CACHE_PASSWORD"
  46. export GRADLE_ENTERPRISE_ACCESS_KEY="$GRADLE_ENTERPRISE_SECRET_ACCESS_KEY"
  47. ./gradlew gitHubCheckNextVersionDueToday
  48. check_open_issues:
  49. name: Ensure there are no open issues
  50. needs: [check_release_due]
  51. runs-on: ubuntu-latest
  52. steps:
  53. - uses: actions/checkout@v2
  54. - name: Set up JDK 17
  55. uses: actions/setup-java@v1
  56. with:
  57. java-version: '17'
  58. - name: Setup gradle user name
  59. run: |
  60. mkdir -p ~/.gradle
  61. echo 'systemProp.user.name=spring-builds+github' >> ~/.gradle/gradle.properties
  62. - name: Setup Gradle
  63. uses: gradle/gradle-build-action@v2
  64. env:
  65. GRADLE_USER_HOME: ~/.gradle
  66. - name: Check for open issues
  67. run: |
  68. export GRADLE_ENTERPRISE_CACHE_USERNAME="$GRADLE_ENTERPRISE_CACHE_USER"
  69. export GRADLE_ENTERPRISE_CACHE_PASSWORD="$GRADLE_ENTERPRISE_CACHE_PASSWORD"
  70. export GRADLE_ENTERPRISE_ACCESS_KEY="$GRADLE_ENTERPRISE_SECRET_ACCESS_KEY"
  71. ./gradlew gitHubCheckMilestoneHasNoOpenIssues
  72. release:
  73. name: Release next version
  74. needs: [check_release_due, check_open_issues]
  75. runs-on: ubuntu-latest
  76. steps:
  77. - uses: actions/checkout@v2
  78. - name: Set up JDK
  79. uses: actions/setup-java@v1
  80. with:
  81. java-version: '17'
  82. - name: Setup gradle user name
  83. run: |
  84. mkdir -p ~/.gradle
  85. echo 'systemProp.user.name=spring-builds+github' >> ~/.gradle/gradle.properties
  86. - name: Setup Gradle
  87. uses: gradle/gradle-build-action@v2
  88. env:
  89. GRADLE_USER_HOME: ~/.gradle
  90. - name: Setup git config
  91. run: |
  92. git config user.name 'github-actions[bot]'
  93. git config user.email 'github-actions[bot]@users.noreply.github.com'
  94. - name: Update version and push
  95. # antoraUpdateVersion can only be run after updateProjectVersion completes, in order get the updated project version
  96. run: |
  97. export GRADLE_ENTERPRISE_CACHE_USERNAME="$GRADLE_ENTERPRISE_CACHE_USER"
  98. export GRADLE_ENTERPRISE_CACHE_PASSWORD="$GRADLE_ENTERPRISE_CACHE_PASSWORD"
  99. export GRADLE_ENTERPRISE_ACCESS_KEY="$GRADLE_ENTERPRISE_SECRET_ACCESS_KEY"
  100. ./gradlew :updateProjectVersion
  101. ./gradlew :spring-security-docs:antoraUpdateVersion
  102. updatedVersion=$(cat gradle.properties | grep "version=" | awk -F'=' '{print $2}')
  103. git commit -am "Release $updatedVersion"
  104. git tag $updatedVersion
  105. git push
  106. notify_result:
  107. name: Check for failures
  108. needs: [release]
  109. if: failure()
  110. runs-on: ubuntu-latest
  111. steps:
  112. - name: Send Slack message
  113. uses: Gamesight/slack-workflow-status@v1.0.1
  114. with:
  115. repo_token: ${{ secrets.GITHUB_TOKEN }}
  116. slack_webhook_url: ${{ secrets.SLACK_WEBHOOK_URL }}
  117. channel: '#spring-security-ci'
  118. name: 'CI Notifier'