update-scheduled-release-version.yml 3.6 KB

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