diff --git a/.github/workflows/release-weekly-comfyui.yaml b/.github/workflows/release-biweekly-comfyui.yaml similarity index 85% rename from .github/workflows/release-weekly-comfyui.yaml rename to .github/workflows/release-biweekly-comfyui.yaml index a46c550862..c0f57822bc 100644 --- a/.github/workflows/release-weekly-comfyui.yaml +++ b/.github/workflows/release-biweekly-comfyui.yaml @@ -1,12 +1,12 @@ -# Automated weekly workflow to bump ComfyUI frontend RC releases -name: "Release: Weekly ComfyUI" +# Automated bi-weekly workflow to bump ComfyUI frontend RC releases +name: "Release: Bi-weekly ComfyUI" on: # Schedule for Monday at 12:00 PM PST (20:00 UTC) schedule: - cron: '0 20 * * 1' - # Allow manual triggering + # Allow manual triggering (bypasses bi-weekly check) workflow_dispatch: inputs: comfyui_fork: @@ -16,7 +16,39 @@ on: type: string jobs: + check-release-week: + runs-on: ubuntu-latest + outputs: + is_release_week: ${{ steps.check.outputs.is_release_week }} + steps: + - name: Check if release week + id: check + run: | + # Anchor date: first bi-weekly release Monday + ANCHOR="2025-12-22" + + ANCHOR_EPOCH=$(date -d "$ANCHOR" +%s) + NOW_EPOCH=$(date +%s) + WEEKS_SINCE=$(( (NOW_EPOCH - ANCHOR_EPOCH) / 604800 )) + + if [ $((WEEKS_SINCE % 2)) -eq 0 ]; then + echo "Release week (week $WEEKS_SINCE since anchor $ANCHOR)" + echo "is_release_week=true" >> $GITHUB_OUTPUT + else + echo "Not a release week (week $WEEKS_SINCE since anchor $ANCHOR)" + echo "is_release_week=false" >> $GITHUB_OUTPUT + fi + + - name: Summary + run: | + echo "## Bi-weekly Check" >> $GITHUB_STEP_SUMMARY + echo "" >> $GITHUB_STEP_SUMMARY + echo "- Is release week: ${{ steps.check.outputs.is_release_week }}" >> $GITHUB_STEP_SUMMARY + echo "- Manual trigger: ${{ github.event_name == 'workflow_dispatch' }}" >> $GITHUB_STEP_SUMMARY + resolve-version: + needs: check-release-week + if: needs.check-release-week.outputs.is_release_week == 'true' || github.event_name == 'workflow_dispatch' runs-on: ubuntu-latest outputs: current_version: ${{ steps.resolve.outputs.current_version }} @@ -131,8 +163,8 @@ jobs: echo "- [View workflow runs](https://github.com/Comfy-Org/ComfyUI_frontend/actions/workflows/release-version-bump.yaml)" >> $GITHUB_STEP_SUMMARY create-comfyui-pr: - needs: [resolve-version, trigger-release-if-needed] - if: always() && needs.resolve-version.result == 'success' + needs: [check-release-week, resolve-version, trigger-release-if-needed] + if: always() && needs.resolve-version.result == 'success' && (needs.check-release-week.outputs.is_release_week == 'true' || github.event_name == 'workflow_dispatch') runs-on: ubuntu-latest steps: @@ -231,7 +263,7 @@ jobs: git config user.name "github-actions[bot]" git config user.email "github-actions[bot]@users.noreply.github.com" - # Create/update branch (reuse same branch name each week) + # Create/update branch (reuse same branch name each release cycle) BRANCH="automation/comfyui-frontend-bump" git checkout -B "$BRANCH" git add requirements.txt @@ -243,7 +275,7 @@ jobs: exit 0 fi - # Force push to fork (overwrites previous week's branch) + # Force push to fork (overwrites previous release cycle's branch) # Note: This intentionally destroys branch history to maintain a single PR # Any review comments or manual commits will need to be re-applied if ! git push -f origin "$BRANCH"; then diff --git a/README.md b/README.md index f674a05edd..e8af480f2b 100644 --- a/README.md +++ b/README.md @@ -33,11 +33,11 @@ The project follows a structured release process for each minor version, consisting of three distinct phases: -1. **Development Phase** - 1 week +1. **Development Phase** - 2 weeks - Active development of new features - Code changes merged to the development branch -2. **Feature Freeze** - 1 week +2. **Feature Freeze** - 2 weeks - No new features accepted - Only bug fixes are cherry-picked to the release branch - Testing and stabilization of the codebase @@ -56,16 +56,16 @@ To use the latest nightly release, add the following command line argument to yo ``` ## Overlapping Release Cycles -The development of successive minor versions overlaps. For example, while version 1.1 is in feature freeze, development for version 1.2 begins simultaneously. +The development of successive minor versions overlaps. For example, while version 1.1 is in feature freeze, development for version 1.2 begins simultaneously. Each feature has approximately 4 weeks from merge to ComfyUI stable release (2 weeks on main, 2 weeks frozen on RC). ### Example Release Cycle | Week | Date Range | Version 1.1 | Version 1.2 | Version 1.3 | Patch Releases | |------|------------|-------------|-------------|-------------|----------------| -| 1 | Mar 1-7 | Development | - | - | - | -| 2 | Mar 8-14 | Feature Freeze | Development | - | 1.1.0 through 1.1.6 (daily) | -| 3 | Mar 15-21 | Released | Feature Freeze | Development | 1.1.7 through 1.1.13 (daily)
1.2.0 through 1.2.6 (daily) | -| 4 | Mar 22-28 | - | Released | Feature Freeze | 1.2.7 through 1.2.13 (daily)
1.3.0 through 1.3.6 (daily) | +| 1-2 | Mar 1-14 | Development | - | - | - | +| 3-4 | Mar 15-28 | Feature Freeze | Development | - | 1.1.0 through 1.1.13 (daily) | +| 5-6 | Mar 29-Apr 11 | Released | Feature Freeze | Development | 1.1.14+ (daily)
1.2.0 through 1.2.13 (daily) | +| 7-8 | Apr 12-25 | - | Released | Feature Freeze | 1.2.14+ (daily)
1.3.0 through 1.3.13 (daily) | ## Release Summary