diff --git a/.github/workflows/release-next-version.yml b/.github/workflows/release-next-version.yml index 0a0cb48939..5412b1862c 100644 --- a/.github/workflows/release-next-version.yml +++ b/.github/workflows/release-next-version.yml @@ -13,24 +13,18 @@ env: RUN_JOBS: ${{ github.repository == 'spring-projects/spring-security' }} jobs: - prerequisites: - name: Pre-requisites for building + release-next-version: + name: Initiate Release If Scheduled + if: env.RUN_JOBS == 'true' runs-on: ubuntu-latest - outputs: - runjobs: ${{ steps.continue.outputs.runjobs }} steps: - - id: continue - name: Determine if should continue - if: env.RUN_JOBS == 'true' - run: echo "::set-output name=runjobs::true" - check_release_due: - name: Check if the release is due today - needs: [prerequisites] - runs-on: ubuntu-latest - if: needs.prerequisites.outputs.runjobs - steps: - - uses: actions/checkout@v2 - - name: Set up JDK 17 + - id: checkout-source + name: Checkout Source Code + uses: actions/checkout@v2 + with: + token: ${{ secrets.GH_ACTIONS_REPO_TOKEN }} + - id: setup-jdk + name: Set up JDK 17 uses: actions/setup-java@v1 with: java-version: '17' @@ -42,66 +36,38 @@ jobs: uses: gradle/gradle-build-action@v2 env: GRADLE_USER_HOME: ~/.gradle - - name: Check release + - id: check-release-due + name: Check Release Due run: | export GRADLE_ENTERPRISE_CACHE_USERNAME="$GRADLE_ENTERPRISE_CACHE_USER" export GRADLE_ENTERPRISE_CACHE_PASSWORD="$GRADLE_ENTERPRISE_CACHE_PASSWORD" export GRADLE_ENTERPRISE_ACCESS_KEY="$GRADLE_ENTERPRISE_SECRET_ACCESS_KEY" ./gradlew gitHubCheckNextVersionDueToday - check_open_issues: - name: Ensure there are no open issues - needs: [check_release_due] - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v2 - - name: Set up JDK 17 - uses: actions/setup-java@v1 - with: - java-version: '17' - - name: Setup gradle user name - run: | - mkdir -p ~/.gradle - echo 'systemProp.user.name=spring-builds+github' >> ~/.gradle/gradle.properties - - name: Setup Gradle - uses: gradle/gradle-build-action@v2 - env: - GRADLE_USER_HOME: ~/.gradle - - name: Check for open issues + echo "::set-output name=is_due_today::$(cat build/github/milestones/is-due-today)" + - id: check-open-issues + name: Check for open issues + if: steps.check-release-due.outputs.is_due_today == true run: | export GRADLE_ENTERPRISE_CACHE_USERNAME="$GRADLE_ENTERPRISE_CACHE_USER" export GRADLE_ENTERPRISE_CACHE_PASSWORD="$GRADLE_ENTERPRISE_CACHE_PASSWORD" export GRADLE_ENTERPRISE_ACCESS_KEY="$GRADLE_ENTERPRISE_SECRET_ACCESS_KEY" ./gradlew gitHubCheckMilestoneHasNoOpenIssues - release: - name: Release next version - needs: [check_release_due, check_open_issues] - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v2 - with: - token: ${{ secrets.GH_ACTIONS_REPO_TOKEN }} - - name: Set up JDK - uses: actions/setup-java@v1 - with: - java-version: '17' - - name: Setup gradle user name + echo "::set-output name=is_open_issues::$(cat build/github/milestones/is-open-issues)" + - id: validate-release-state + name: Validate State of Release + if: steps.check-release-due.outputs.is_due_today == true && steps.check-release-due.outputs.is_open_issues == true run: | - mkdir -p ~/.gradle - echo 'systemProp.user.name=spring-builds+github' >> ~/.gradle/gradle.properties - - name: Setup Gradle - uses: gradle/gradle-build-action@v2 - env: - GRADLE_USER_HOME: ~/.gradle - - name: Setup git config - run: | - git config user.name 'github-actions[bot]' - git config user.email 'github-actions[bot]@users.noreply.github.com' - - name: Update version and push - # antoraUpdateVersion can only be run after updateProjectVersion completes, in order get the updated project version + echo "The release is due today but there are open issues" + exit 1 + - id: update-version-and-push + name: Update version and push + if: steps.check-release-due.outputs.is_due_today == true && steps.check-release-due.outputs.is_open_issues == false run: | export GRADLE_ENTERPRISE_CACHE_USERNAME="$GRADLE_ENTERPRISE_CACHE_USER" export GRADLE_ENTERPRISE_CACHE_PASSWORD="$GRADLE_ENTERPRISE_CACHE_PASSWORD" export GRADLE_ENTERPRISE_ACCESS_KEY="$GRADLE_ENTERPRISE_SECRET_ACCESS_KEY" + git config user.name 'github-actions[bot]' + git config user.email 'github-actions[bot]@users.noreply.github.com' ./gradlew :updateProjectVersion ./gradlew :spring-security-docs:antoraUpdateVersion updatedVersion=$(cat gradle.properties | grep "version=" | awk -F'=' '{print $2}') @@ -109,13 +75,9 @@ jobs: git tag $updatedVersion git push git push origin $updatedVersion - notify_result: - name: Check for failures - needs: [release] - if: failure() - runs-on: ubuntu-latest - steps: - - name: Send Slack message + - id: send-slack-notification + name: Send Slack message + if: failure() uses: Gamesight/slack-workflow-status@v1.0.1 with: repo_token: ${{ secrets.GITHUB_TOKEN }}