You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
109 lines
4.0 KiB
109 lines
4.0 KiB
name: Release Next Version |
|
|
|
on: |
|
schedule: |
|
- cron: '0 13 * * MON' # Every Monday at 1pm UTC |
|
workflow_dispatch: # Manual trigger |
|
|
|
env: |
|
SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK_URL }} |
|
GRADLE_ENTERPRISE_CACHE_USER: ${{ secrets.GRADLE_ENTERPRISE_CACHE_USER }} |
|
GRADLE_ENTERPRISE_CACHE_PASSWORD: ${{ secrets.GRADLE_ENTERPRISE_CACHE_PASSWORD }} |
|
GRADLE_ENTERPRISE_SECRET_ACCESS_KEY: ${{ secrets.GRADLE_ENTERPRISE_SECRET_ACCESS_KEY }} |
|
RUN_JOBS: ${{ github.repository == 'spring-projects/spring-security' }} |
|
|
|
jobs: |
|
prerequisites: |
|
name: Pre-requisites for building |
|
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 |
|
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: Cache Gradle packages |
|
uses: actions/cache@v2 |
|
with: |
|
path: ~/.gradle/caches |
|
key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle') }} |
|
- name: Check release |
|
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: Check for open issues |
|
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 |
|
- name: Set up JDK |
|
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 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 |
|
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 updateProjectVersion -Pcommit=true |
|
git push |
|
notify_result: |
|
name: Check for failures |
|
needs: [release] |
|
if: failure() |
|
runs-on: ubuntu-latest |
|
steps: |
|
- name: Send Slack message |
|
uses: Gamesight/slack-workflow-status@v1.0.1 |
|
with: |
|
repo_token: ${{ secrets.GITHUB_TOKEN }} |
|
slack_webhook_url: ${{ secrets.SLACK_WEBHOOK_URL }} |
|
channel: '#spring-security-ci' |
|
name: 'CI Notifier'
|
|
|