Skip to content

ci: disable automatic Cloud Run deploys (audio-separator service shut down) - #309

Merged
beveradb merged 1 commit into
mainfrom
chore/disable-cloudrun-autodeploy
Oct 1, 2026
Merged

beveradb merged 1 commit into
mainfrom
chore/disable-cloudrun-autodeploy

Conversation

@beveradb

@beveradb beveradb commented Oct 1, 2026 •

Copy link
Copy Markdown
Collaborator

The audio-separator Cloud Run GPU service in us-east4 was shut down on 2026-10-01 to cut GCP costs (karaoke-gen PR to follow). Prod karaoke-gen jobs never called it; they separate audio in the audio-separation-job GPU Cloud Run Job.

This PR limits deploy-to-cloudrun.yml to workflow_dispatch. Without it, every PyPI release and Dockerfile change would run a Cloud Build, then fail on gcloud run services update because the service and its Artifact Registry repo no longer exist. The header comment explains how to bring the service back on demand.

🤖 Generated with Claude Code

Summary by CodeRabbit

  • Chores
    • Cloud Run deployments now run only when manually triggered. Automatic runs after package publication and matching changes to the main branch have been removed.

… down)

The us-east4 audio-separator Cloud Run GPU service was shut down on
2026-10-01 as a GCP cost cut. Keep the workflow for manual on-demand
redeploys only.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
@coderabbitai

coderabbitai Bot commented Oct 1, 2026 •

Copy link
Copy Markdown

Review in Change Stack →

Navigate logical layers of code changes, visualize relationships, and explore their blast radius.

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Advanced

Run ID: c87658a5-49b2-4c03-84bd-d8a20766675c

📥 Commits

Reviewing files that changed from the base of the PR and between bf1164a and 38df153.

📒 Files selected for processing (1)
  • .github/workflows/deploy-to-cloudrun.yml

Included review availability: This review used your included allowance. Your plan provides up to 4 included reviews per hour; 3 remain after this review.


Walkthrough

The Cloud Run deployment workflow now runs only when manually dispatched. Comments document the service shutdown date, the separate production GPU job, and steps to restore the service.

Changes

Cloud Run deployment workflow

Layer / File(s) Summary
Manual deployment configuration
.github/workflows/deploy-to-cloudrun.yml
The workflow now uses only workflow_dispatch. It removes the PyPI publication and filtered main push triggers, and removes the workflow_run success condition. Comments document the service shutdown and restoration steps.

Priority: ➖ Normal

Estimated code review effort: 2 (Simple) | ~8 minutes

Change: Other

Merge Risk: ⚪ Minimal · up to 38df1

Routine releases and Dockerfile changes are intended to stop triggering deployment of the shut-down service. Manual redeployment remains available after restoring its prerequisites, while production GPU jobs use the separate job. No actionable merge-blocking risk is established.

Architecture Summary

Architecture risk: 🔵 Low · up to 38df1

The changed surface does not map to a changed system, dependency edge, entrypoint, or external dependency.

Changed systems: None identified.

Architecture concerns
No architecture-level concerns identified.

Review details

Before / after behavior

  • observed — Modified behavior in .github/workflows/deploy-to-cloudrun.yml: Added comments documenting the service shutdown date, the separate GPU job used by production, disabled automatic deploys, and the steps described for restoring the service.
  • observed — Modified behavior in .github/workflows/deploy-to-cloudrun.yml: workflow_dispatch is now the only trigger; the PyPI workflow_run trigger and filtered main push trigger were removed. The job-level success condition for workflow_run events was also removed, leaving the deploy job without that condition.
🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title clearly and concisely describes the main change: disabling automatic Cloud Run deploys because the audio-separator service was shut down.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check. Docstring coverage is scoped to functions touched by this diff. Analyzed 0 functions across 0…
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Commit to this branch
  • Create a new PR
  • Autopilot · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

Autopilot is currently an internal CodeRabbit preview.


Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

A rabbit watched the workflow pause,
Then found the button and its cause.
No publish paths now set things running,
A manual click starts the next beginning.
I nibble clover, pleased to see,
The shutdown notes are clear to me.

Comment @coderabbitai help to get the list of available commands.

@beveradb
beveradb merged commit 45127bd into main Oct 1, 2026
14 checks passed
@beveradb
beveradb deleted the chore/disable-cloudrun-autodeploy branch October 1, 2026 23:59
beveradb added a commit to nomadkaraoke/karaoke-gen that referenced this pull request Oct 2, 2026
Round 2 of the GCP cost cuts, approved by Andrew. Target: the whole
project under $300/mo; the current run-rate is about $400.

## Changes
- **karaoke-backend min-instances 1 → 0** (`ci.yml`), about $24/mo. The
backend Cloud Run service isn't defined in Pulumi, so the CI flag is the
only place this is set. Andrew accepts a ~15s cold start. The 60s
`/api/health` uptime check and the `*/10` schedulers keep an instance
warm most of the time. With `--cpu-throttling` (request-based billing),
a warm instance above the minimum costs nothing while idle.
- **audio-separator Cloud Run GPU service shut down** (us-east4), about
$22/mo. It is now behind the Pulumi flag `audioSeparatorServiceEnabled`,
off by default. The service, SA, IAM bindings, output bucket and AR repo
were already removed with a targeted `pulumi up`; the bucket needed the
break-glass SA. `audio-separation-job` is untouched; it uses
`karaoke-backend-gpu/karaoke-backend`. The separator health check no
longer depends on `AUDIO_SEPARATOR_API_URL`, which also fixes a status
card that always showed "offline". The CLI now logs a clear hint when
the remote API fails. Companion PR:
nomadkaraoke/python-audio-separator#309 makes its Cloud Run deploy
manual-only.
- **backup-to-aws no longer copies job files to S3**, about $15/mo
egress. Job files now rely on GCS versioning plus soft-delete.
Firestore, secrets, BigQuery, kn-data and git-bundle backups are
unchanged. The freshness monitor no longer checks `gcs/job-files/`, and
DISASTER-RECOVERY.md is updated.
- **Artifact Registry cleanup policies**, about $8–10/mo. Per package:
keep the 10 most recent versions plus anything tagged `latest`,
`content-` or `cache`; delete all other versions older than 7d. Until
now, tagged per-commit images were never deleted. Dropped the CI
fallback that copied the GPU base once from us-east4, and deleted the
legacy 13 GB us-east4 GPU base package.
- Docs: GCP-COST-OPTIMIZATION.md (new section, including how to redeploy
the separator on demand), ARCHITECTURE.md, DISASTER-RECOVERY.md.

Changes made outside Pulumi (gcf-artifacts cleanup policy, destroying
superseded secret versions) are recorded in GCP-COST-OPTIMIZATION.md.

## Tests
- `backend/tests/test_system_status_endpoint.py` (new separator status
tests)
- `infrastructure/functions/backup_to_aws` (49 tests, including a new
one that checks job files aren't synced)
- `tests/unit/test_audio_remote.py`, `test_audio_processor_local_gpu.py`

🤖 Generated with [Claude Code](https://claude.com/claude-code)

<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->

## Summary by CodeRabbit

* **Service Availability**
* The hosted audio-separation service is no longer available. Audio
separation can run locally; users relying on the hosted service will
need another deployment.
* **Backup and Recovery**
* New job files are no longer copied to off-site S3 backups. S3 recovery
is limited to files backed up through September 30, 2026; newer outputs
may need to be regenerated.
* **System Status**
* Audio-separator health status now reports the locally installed
package version without checking a remote service.

<!-- end of auto-generated comment: release notes by coderabbit.ai -->

---------

Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant