feat: Adds autobuild trigger workflow to avoid the auto-disabling on build loop job#461
Conversation
Test✅ successful test Test DetailsFor testing purposes, I modified the files to trigger Wed at 5:33 pm PDT (00:33 Thursday UTC) and modified to check for the 4th week (instead of 2nd) to require a build regardless of new commits. In usual GitHub fashion, this did not trigger until much later. But at 9:46 pm Wed, the trigger build did run and it did successfully enable the build and start the build.
The build completed and was uploaded to TestFlight. I successfully installed this build on my test phone. Note in the screenshot below that once again Build Loop is disabled.
|
Next stepsThank you so much for this proposal @daghaian Let's think about modifications to prevent changing too much in the way of much documentation. Would it work to modify the job name to 4. Build Loop inside trigger_build.yml and a different (and unnumbered job name in build_loop.yml, (backend-build-process or something else). Then we can just add words that 4. Build Loop triggers the process that actually does the build and is able to run without being disabled by GitHub. |
Test✅ This test was successful.
❓ The thing we don't know and won't know is will the trigger_build.yml file also be disabled by GitHub when it reaches enough forks. Test DetailsContinuing to work in my docs-test organization, I modified the name for the jobs as follows:
I pushed this change to docs-test along with a modification to trigger the cron job today at 12:33 PDT (19:33 UTC). Screenshot before job is triggeredNote that the job names now match what is in the documentation with the new trigger_build.yml job called 4. Build Loop and the build_loop.yml job called background process that builds showing up at the end with no number.
Screenshot after job is triggeredThe new trigger_build.yml shows up as 4. Build Loop and it triggers as expected from the cron job. It kicks off the build_loop.yml file (background process that builds) which starts right away.
|
…ggered by the newly added trigger workflow instead of manually
…sable for the build loop
…nically be run manually
9591c86 to
b1be261
Compare
|
There was some private communications back and forth. At one point David said just renaming the build file prevents to disabling. I tried this with a different branch: https://github.com/docs-test/LoopWorkspace/tree/test-simple-rename I renamed the build_loop.yml file to build_loop_new.yml. And it did automatically build and was not automatically disabled. It may be easier just to rename and see if that fixes the issue. If that is later disabled, then we could try the trigger idea. Feedback is desired.
|
|
Not sure about the "Why" here either. Just to make sure I understand the theory behind the rename approach: is the idea that GitHub has flagged this specific build_loop.yml as "problematic" and is auto-disabling it earlier than the normal 60-day inactivity rule, and that renaming the file sidesteps that flag (at least temporarily)? My reasoning: a fork should normally stay "active" because the scheduled run syncs upstream and pushes those commits into the fork, which resets the 60-day clock (and upstream gets commits well within 60 days). That sync happens early in check_status, before the build job, so even if the build itself fails later (unsigned Apple agreement, inactive Apple account, or other common errors), the fork update has already landed and isn't affected. So if these forks are still being disabled, it doesn't look like the plain 60-day inactivity rule? If we rename something, or create another scheduled workflow, I am afraid we are just moving the problem? |
CommentAnother thing to consider is that many people have customizations included in their build_loop.yml file. Next IdeaInstead of renaming. I'm going to try a copy, so we maintain build_loop.yml (unchanged except for nominal update for xcode version) in which I comment out the cron task and use 4. Build Loop Manual as the name and build_loop_auto.yml with the name 4. Build Loop Auto, which keeps the cron task. I'll report back when this test is done. |
|
This is the status of the test-simple-copy actions at docs-test. Ignore the error in the graphic - I initially failed to comment out the schedule line in addition to the cron line for build_loop.yml Note that 4. Build Loop Manual is already showing as disabled. So it does appear to be associated with the filename.
|
Hey @bjorkert, Marion did voice your thoughts on this, and I'll paste my response that I sent to her here: "Re the concern, its completely valid. I have no proof to suggest that this permanently resolves the issue because the original Build Loop was being disabled by "Github admin", and only for the singular repo. This points to something from Github's end and not a user/organization setting, since seemingly it only targeted Loop (and no other forked repos with the same exact workflows). This to me indicates something outside of our control. Best case: Trigger works to kick whatever bug GitHub has on their backend I have gone through the audit log for the forked repo, and we see that "Github Admin" is responsible for the repeated disabling of the "Build Loop" workflow. While I have no clear way to confirm this, I'm wondering if this behavior (since it only affects LoopWorkspace) could be a byproduct of the number of repo forks (7.8k+) compared to Trio's ~1k. Additionally, if it were an organizational setting/personal Github setting, then the creation of additional scheduled workflows as well as the rename approach mentioned above would not have resolved the issue. I would find it very hard to believe that there was some hidden setting only affecting the build_loop.yml workflow for users who fork the repo. In my opinion, we have nothing to lose by trying either the trigger or the rename-based approach in the long term |
test-simple-copyThe As seen in the screenshot below, the scheduled process ran but did not build because today is not the 2nd Saturday of the month.
A subsequent commit changed both the time and the day of the week. I'll report back later to confirm that the process both started as scheduled and completed a build. |
test-simple-copyThe As seen in the screenshot below, the scheduled process ran and did build successfully.
|
ProposalI think we should go with the change made in docs-test in which
See these two commits to see those changes (I forgot to comment out the schedule line in the first commit):
DiscussionI welcome discussion on this. The 4. Build Loop Manual will maintain the original users customizations. They can transfer those to 4. Build Loop Auto if the automatic build stays enabled. Users can continue to build manually if they prefer. |







What changed
The Build Loop workflow was being automatically disabled by GitHub after each run (manual or scheduled), preventing subsequent scheduled builds from firing. The root cause is a known GitHub Actions behavior where workflows with a
scheduletrigger can be auto-disabled under certain conditions.Why
Scheduled builds were silently failing to run, which breaks the expected automated build cadence.
Solution
scheduletrigger from the Build Loop workflowtrigger_buildworkflow that owns the schedule, re-enables the Build Loop workflow before each run, and then dispatches it viaworkflow_dispatchThis sidesteps GitHub's auto-disable behavior by keeping the scheduled entry point in a separate, lightweight workflow that re-activates the primary one before triggering it.
Testing
trigger_buildand confirmed it re-enabled and dispatched Build Loop successfullyReview notes
The logic change is isolated to workflow files only — no app code is affected. The main thing worth validating is that the
workflow_dispatch+ re-enable sequence intrigger_buildis robust across the expected trigger scenarios (scheduled, manual).