Repository navigation
ci(monorepo): share app validation and publish only through releases - #15
Merged
Merged
Conversation
- Add a reusable Validate workflow used by Main Validation and Release - Remove tag triggers so publishing goes through the Release workflow - Build publish workflows from the <app>/v<version> tag, including manual republishes - Let the frontend republish an already deployed version for rollbacks - Rename publish workflows to Backend/MCP Server/Frontend Publish
- Add docs/deployment.md covering the release flow, publish workflows, rollback and configuration - Link it from the root README and CONTRIBUTING - Fix the frontend README link to a deployment doc that no longer existed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What changed
validate.yml(workflow_call, inputapp). It holds the build/test/lint steps for backend, MCP server and frontend.main-validation.ymlnow calls it for each changed app: 92 → ~60 lines, same path filters.release.ymlcalls it instead of repeating the steps.preparenow only resolves the version and checks the tag.releasewaits forvalidate.push: tagstriggers from the three publish workflows. A tag pushed by hand no longer deploys without going through the version bump and validation.versionand always check out the<app>/v<version>tag. Therefinput is gone.workflow_dispatchis kept on backend and MCP, and added to the frontend, to republish an existing release (e.g. rollback).currentsymlink instead of failing. Releases remain immutable: existing files are never replaced.docs/deployment.mddescribing the release flow, what each publish workflow deploys, rollback (including the caveat that backend migrations are not reverted) and the required secrets/server setup. It is linked from the root README and CONTRIBUTING. The frontend README pointed to adocs/deployment.mdthat was removed with the frontend-v2 migration; it now points to the new doc.Why
Follow-up to #14. The publish workflows still had a tag trigger that bypassed the release flow, and the validation steps were duplicated between
main-validation.ymlandrelease.yml.How it was verified
actionlintpasses on all workflows.validate.yml, so its own Main Validation run exercises the reusable workflow for all three apps.Risks / follow-up
backend / backend).mainhas no required status checks, so nothing breaks.