update-scheduled-release-version.yml 3.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. name: Update Scheduled Release Version
  2. on:
  3. workflow_dispatch: # Manual trigger only. Triggered by release-scheduler.yml on main.
  4. env:
  5. SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK_URL }}
  6. GRADLE_ENTERPRISE_CACHE_USER: ${{ secrets.GRADLE_ENTERPRISE_CACHE_USER }}
  7. GRADLE_ENTERPRISE_CACHE_PASSWORD: ${{ secrets.GRADLE_ENTERPRISE_CACHE_PASSWORD }}
  8. GRADLE_ENTERPRISE_SECRET_ACCESS_KEY: ${{ secrets.GRADLE_ENTERPRISE_SECRET_ACCESS_KEY }}
  9. jobs:
  10. update_scheduled_release_version:
  11. name: Initiate Release If Scheduled
  12. if: ${{ github.repository == 'spring-projects/spring-security' }}
  13. runs-on: ubuntu-latest
  14. steps:
  15. - id: checkout-source
  16. name: Checkout Source Code
  17. uses: actions/checkout@v2
  18. with:
  19. token: ${{ secrets.GH_ACTIONS_REPO_TOKEN }}
  20. - id: setup-jdk
  21. name: Set up JDK 17
  22. uses: actions/setup-java@v1
  23. with:
  24. java-version: '17'
  25. - name: Setup gradle user name
  26. run: |
  27. mkdir -p ~/.gradle
  28. echo 'systemProp.user.name=spring-builds+github' >> ~/.gradle/gradle.properties
  29. - name: Setup Gradle
  30. uses: gradle/gradle-build-action@v2
  31. env:
  32. GRADLE_USER_HOME: ~/.gradle
  33. - id: check-release-due
  34. name: Check Release Due
  35. run: |
  36. export GRADLE_ENTERPRISE_CACHE_USERNAME="$GRADLE_ENTERPRISE_CACHE_USER"
  37. export GRADLE_ENTERPRISE_CACHE_PASSWORD="$GRADLE_ENTERPRISE_CACHE_PASSWORD"
  38. export GRADLE_ENTERPRISE_ACCESS_KEY="$GRADLE_ENTERPRISE_SECRET_ACCESS_KEY"
  39. ./gradlew gitHubCheckNextVersionDueToday
  40. echo "::set-output name=is_due_today::$(cat build/github/milestones/is-due-today)"
  41. - id: check-open-issues
  42. name: Check for open issues
  43. if: steps.check-release-due.outputs.is_due_today == 'true'
  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 gitHubCheckMilestoneHasNoOpenIssues
  49. echo "::set-output name=is_open_issues::$(cat build/github/milestones/is-open-issues)"
  50. - id: validate-release-state
  51. name: Validate State of Release
  52. if: steps.check-release-due.outputs.is_due_today == 'true' && steps.check-open-issues.outputs.is_open_issues == 'true'
  53. run: |
  54. echo "The release is due today but there are open issues"
  55. exit 1
  56. - id: update-version-and-push
  57. name: Update version and push
  58. if: steps.check-release-due.outputs.is_due_today == 'true' && steps.check-open-issues.outputs.is_open_issues == 'false'
  59. run: |
  60. export GRADLE_ENTERPRISE_CACHE_USERNAME="$GRADLE_ENTERPRISE_CACHE_USER"
  61. export GRADLE_ENTERPRISE_CACHE_PASSWORD="$GRADLE_ENTERPRISE_CACHE_PASSWORD"
  62. export GRADLE_ENTERPRISE_ACCESS_KEY="$GRADLE_ENTERPRISE_SECRET_ACCESS_KEY"
  63. git config user.name 'github-actions[bot]'
  64. git config user.email 'github-actions[bot]@users.noreply.github.com'
  65. ./gradlew :updateProjectVersion
  66. ./gradlew :spring-security-docs:antoraUpdateVersion
  67. updatedVersion=$(cat gradle.properties | grep "version=" | awk -F'=' '{print $2}')
  68. git commit -am "Release $updatedVersion"
  69. git tag $updatedVersion
  70. git push
  71. git push origin $updatedVersion
  72. - id: send-slack-notification
  73. name: Send Slack message
  74. if: failure()
  75. uses: Gamesight/slack-workflow-status@v1.0.1
  76. with:
  77. repo_token: ${{ secrets.GITHUB_TOKEN }}
  78. slack_webhook_url: ${{ secrets.SLACK_WEBHOOK_URL }}
  79. channel: '#spring-security-ci'
  80. name: 'CI Notifier'