File
Blob: .github/workflows/daily-release.yml
| 1 | name: Daily Release |
| 2 | |
| 3 | on: |
| 4 | schedule: |
| 5 | # Run at 00:30 UTC every day |
| 6 | - cron: '30 0 * * *' |
| 7 | # Allow manual triggering for testing |
| 8 | workflow_dispatch: |
| 9 | |
| 10 | jobs: |
| 11 | update-compatibility-date: |
| 12 | runs-on: ubuntu-latest |
| 13 | permissions: |
| 14 | contents: write |
| 15 | |
| 16 | steps: |
| 17 | - name: Checkout code |
| 18 | uses: actions/checkout@v6 |
| 19 | with: |
| 20 | token: ${{ secrets.DEVPROD_PAT }} |
| 21 | ref: main |
| 22 | |
| 23 | - name: Get current date |
| 24 | id: date |
| 25 | run: | |
| 26 | echo "date=$(date +'%Y-%m-%d')" >> $GITHUB_OUTPUT |
| 27 | echo "max_date=$(date -d '+7 days' +'%Y-%m-%d')" >> $GITHUB_OUTPUT |
| 28 | |
| 29 | - name: Update compatibility dates |
| 30 | run: | |
| 31 | echo "${{ steps.date.outputs.date }}" > src/workerd/io/release-version.txt |
| 32 | echo "${{ steps.date.outputs.max_date }}" > src/workerd/io/maximum-compatibility-date.txt |
| 33 | |
| 34 | - name: Check for changes |
| 35 | id: git-check |
| 36 | run: | |
| 37 | if [[ $(git status --porcelain src/workerd/io/release-version.txt src/workerd/io/maximum-compatibility-date.txt) ]]; then |
| 38 | echo "changed=true" >> $GITHUB_OUTPUT |
| 39 | else |
| 40 | echo "changed=false" >> $GITHUB_OUTPUT |
| 41 | fi |
| 42 | if [[ $(git show --format="%ae" -s) == "workers-devprod@cloudflare.com" ]] && \ |
| 43 | [[ $(git diff-tree --no-commit-id --name-only -r HEAD -- src/workerd/io/release-version.txt) ]]; then |
| 44 | echo "last_commit_is_daily_release=true" >> $GITHUB_OUTPUT |
| 45 | else |
| 46 | echo "last_commit_is_daily_release=false" >> $GITHUB_OUTPUT |
| 47 | fi |
| 48 | |
| 49 | # Publish new version if compatibility-date changed and the last commit wasn't already |
| 50 | # an automated daily release. |
| 51 | - name: Commit and push change |
| 52 | if: steps.git-check.outputs.changed == 'true' && steps.git-check.outputs.last_commit_is_daily_release != 'true' |
| 53 | run: | |
| 54 | git config user.email "workers-devprod@cloudflare.com" |
| 55 | git config user.name "Workers DevProd" |
| 56 | git add src/workerd/io/release-version.txt src/workerd/io/maximum-compatibility-date.txt |
| 57 | git commit -m "Release ${{ steps.date.outputs.date }}" |
| 58 | git push |
| 59 |