release-next-version.yml 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109
  1. name: Release Next Version
  2. on:
  3. schedule:
  4. - cron: '0 13 * * MON' # Every Monday at 1pm 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: Cache Gradle packages
  39. uses: actions/cache@v2
  40. with:
  41. path: ~/.gradle/caches
  42. key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle') }}
  43. - name: Check release
  44. run: |
  45. export GRADLE_ENTERPRISE_CACHE_USERNAME="$GRADLE_ENTERPRISE_CACHE_USER"
  46. export GRADLE_ENTERPRISE_CACHE_PASSWORD="$GRADLE_ENTERPRISE_CACHE_PASSWORD"
  47. export GRADLE_ENTERPRISE_ACCESS_KEY="$GRADLE_ENTERPRISE_SECRET_ACCESS_KEY"
  48. ./gradlew gitHubCheckNextVersionDueToday
  49. check_open_issues:
  50. name: Ensure there are no open issues
  51. needs: [check_release_due]
  52. runs-on: ubuntu-latest
  53. steps:
  54. - uses: actions/checkout@v2
  55. - name: Set up JDK 17
  56. uses: actions/setup-java@v1
  57. with:
  58. java-version: '17'
  59. - name: Setup gradle user name
  60. run: |
  61. mkdir -p ~/.gradle
  62. echo 'systemProp.user.name=spring-builds+github' >> ~/.gradle/gradle.properties
  63. - name: Check for open issues
  64. run: |
  65. export GRADLE_ENTERPRISE_CACHE_USERNAME="$GRADLE_ENTERPRISE_CACHE_USER"
  66. export GRADLE_ENTERPRISE_CACHE_PASSWORD="$GRADLE_ENTERPRISE_CACHE_PASSWORD"
  67. export GRADLE_ENTERPRISE_ACCESS_KEY="$GRADLE_ENTERPRISE_SECRET_ACCESS_KEY"
  68. ./gradlew gitHubCheckMilestoneHasNoOpenIssues
  69. release:
  70. name: Release next version
  71. needs: [check_release_due, check_open_issues]
  72. runs-on: ubuntu-latest
  73. steps:
  74. - uses: actions/checkout@v2
  75. - name: Set up JDK
  76. uses: actions/setup-java@v1
  77. with:
  78. java-version: '17'
  79. - name: Setup gradle user name
  80. run: |
  81. mkdir -p ~/.gradle
  82. echo 'systemProp.user.name=spring-builds+github' >> ~/.gradle/gradle.properties
  83. - name: Setup git config
  84. run: |
  85. git config user.name 'github-actions[bot]'
  86. git config user.email 'github-actions[bot]@users.noreply.github.com'
  87. - name: Update version and push
  88. run: |
  89. export GRADLE_ENTERPRISE_CACHE_USERNAME="$GRADLE_ENTERPRISE_CACHE_USER"
  90. export GRADLE_ENTERPRISE_CACHE_PASSWORD="$GRADLE_ENTERPRISE_CACHE_PASSWORD"
  91. export GRADLE_ENTERPRISE_ACCESS_KEY="$GRADLE_ENTERPRISE_SECRET_ACCESS_KEY"
  92. ./gradlew updateProjectVersion -Pcommit=true
  93. git push
  94. notify_result:
  95. name: Check for failures
  96. needs: [release]
  97. if: failure()
  98. runs-on: ubuntu-latest
  99. steps:
  100. - name: Send Slack message
  101. uses: Gamesight/slack-workflow-status@v1.0.1
  102. with:
  103. repo_token: ${{ secrets.GITHUB_TOKEN }}
  104. slack_webhook_url: ${{ secrets.SLACK_WEBHOOK_URL }}
  105. channel: '#spring-security-ci'
  106. name: 'CI Notifier'