Skip to content
File

Blob: .github/workflows/daily-release.yml

yaml59 lines
1name: Daily Release
2 
3on:
4 schedule:
5 # Run at 00:30 UTC every day
6 - cron: '30 0 * * *'
7 # Allow manual triggering for testing
8 workflow_dispatch:
9 
10jobs:
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