|
| 1 | +name: Cleanup stale performance test data |
| 2 | + |
| 3 | +on: |
| 4 | + schedule: |
| 5 | + - cron: '0 4 * * 1' # Run every Monday at 4:00 AM UTC |
| 6 | + workflow_dispatch: |
| 7 | + |
| 8 | +permissions: |
| 9 | + contents: read |
| 10 | + id-token: write |
| 11 | + |
| 12 | +jobs: |
| 13 | + cleanup-stale-performance-data: |
| 14 | + runs-on: ubuntu-latest |
| 15 | + |
| 16 | + if: github.repository == 'gradle/gradle' |
| 17 | + |
| 18 | + steps: |
| 19 | + - name: Checkout repository |
| 20 | + uses: actions/checkout@v5 |
| 21 | + |
| 22 | + - name: Configure AWS credentials |
| 23 | + uses: aws-actions/configure-aws-credentials@v5 |
| 24 | + with: |
| 25 | + role-to-assume: arn:aws:iam::992382829881:role/GHASecrets_gradle_all |
| 26 | + aws-region: "eu-central-1" |
| 27 | + |
| 28 | + - name: Get secrets |
| 29 | + uses: aws-actions/aws-secretsmanager-get-secrets@v2 |
| 30 | + with: |
| 31 | + secret-ids: | |
| 32 | + PERFORMANCE_DB_URL, gha/gradle/_all/PERFORMANCE_DB_URL |
| 33 | + PERFORMANCE_DB_USERNAME, gha/gradle/_all/PERFORMANCE_DB_USERNAME |
| 34 | + PERFORMANCE_DB_PASSWORD_TCAGENT, gha/gradle/_all/PERFORMANCE_DB_PASSWORD |
| 35 | + |
| 36 | + - name: Extract database host from URL |
| 37 | + run: | |
| 38 | + # jdbc:mysql://gradle-bt-performance.xyz.eu-central-1.rds.amazonaws.com:3306 -> gradle-bt-performance.xyz.eu-central-1.rds.amazonaws.com |
| 39 | + echo "DB_HOST=$(echo ${PERFORMANCE_DB_URL} | cut -d/ -f3 | cut -d: -f1)" >> $GITHUB_ENV |
| 40 | + |
| 41 | + - name: Clean up stale data and verify results |
| 42 | + run: | |
| 43 | + echo "Cleaning up stale data from both databases..." |
| 44 | + docker run --rm mysql:latest mysql \ |
| 45 | + -u${{ env.PERFORMANCE_DB_USERNAME }} \ |
| 46 | + -p${{ env.PERFORMANCE_DB_PASSWORD_TCAGENT }} \ |
| 47 | + -h${{ env.DB_HOST }} \ |
| 48 | + -e ' |
| 49 | + USE results; |
| 50 | + DELETE FROM testOperation WHERE testExecution IN (SELECT id FROM testExecution WHERE startTime < NOW() - INTERVAL 365 DAY); |
| 51 | + DELETE FROM testExecution WHERE startTime < NOW() - INTERVAL 365 DAY; |
| 52 | + SELECT "results.testExecution count:" as database_table, COUNT(*) as stale_records FROM testExecution WHERE startTime < NOW() - INTERVAL 365 DAY; |
| 53 | + USE cross_build_results; |
| 54 | + DELETE FROM testOperation WHERE testExecution IN (SELECT id FROM testExecution WHERE startTime < NOW() - INTERVAL 365 DAY); |
| 55 | + DELETE FROM testExecution WHERE startTime < NOW() - INTERVAL 365 DAY; |
| 56 | + SELECT "cross_build_results.testExecution count:" as database_table, COUNT(*) as stale_records FROM testExecution WHERE startTime < NOW() - INTERVAL 365 DAY; |
| 57 | + ' |
| 58 | + |
| 59 | + - name: Summary |
| 60 | + run: | |
| 61 | + echo "✅ Cleanup completed successfully" |
| 62 | + echo "🗑️ Removed test data older than 365 days from both databases" |
0 commit comments