diff --git a/.github/workflows/schedule.yml b/.github/workflows/schedule.yml new file mode 100644 index 0000000..8588507 --- /dev/null +++ b/.github/workflows/schedule.yml @@ -0,0 +1,72 @@ +name: Update Release Schedule SVG + +on: + schedule: + - cron: "0 9 * * 1" # Every Monday at 9:00 AM UTC + push: + paths: + - "schedule.json" + workflow_dispatch: + +permissions: + contents: write + +jobs: + update-schedule-svg: + runs-on: ubuntu-latest + steps: + - name: Checkout repository + uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 + + - name: Setup Node.js + uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0 + with: + node-version: "22" + + - name: Generate and optimize schedule SVG + shell: bash + env: + SCHEDULE_JSON: ${{ github.workspace }}/schedule.json + SCHEDULE_SVG: ${{ github.workspace }}/schedule.svg + run: | + # Calculate date range + START_DATE=$(date -d "3 months ago" +%Y-%m-%d) + END_DATE=$(date -d "18 months" +%Y-%m-%d) + echo "Generating SVG from $START_DATE to $END_DATE" + + # Generate SVG (output to schedule.svg) + npx lts@2.0.0 -s "$START_DATE" -e "$END_DATE" -d "$SCHEDULE_JSON" -g "$SCHEDULE_SVG" + + # Optimize SVG + npx svgo@4.0.0 "$SCHEDULE_SVG" + + - name: Check for changes in schedule.svg + id: git_check + run: | + if git diff --quiet schedule.svg; then + echo "changed=false" >> "$GITHUB_OUTPUT" + else + echo "changed=true" >> "$GITHUB_OUTPUT" + fi + + - name: Create Pull Request + if: steps.git_check.outputs.changed == 'true' + uses: peter-evans/create-pull-request@271a8d0340265f705b14b6d32b9829c1cb33d45e # v7.0.8 + with: + token: ${{ secrets.GH_API_TOKEN }} + author: "Node.js GitHub Bot " + branch: update-branch + base: main + commit-message: "feat: Node.js ${{ steps.updt.outputs.result }}" + title: "chore: update release svg" + delete-branch: true + team-reviewers: | + nodejs/releasers + + - name: Create workflow summary + run: | + if [[ "${{ steps.git_check.outputs.changed }}" == "true" ]]; then + echo "✅ Schedule SVG updated successfully" >> "$GITHUB_STEP_SUMMARY" + else + echo "ℹ️ No changes detected in schedule SVG" >> "$GITHUB_STEP_SUMMARY" + fi