Skip to content

infra: deploy UCMS backend to Railway with Docker Hub CI/CD - #62

Merged
ikennot merged 13 commits into
developmentfrom
infra/deployment
Apr 4, 2026
Merged

infra: deploy UCMS backend to Railway with Docker Hub CI/CD#62
ikennot merged 13 commits into
developmentfrom
infra/deployment

Conversation

@ikennot

@ikennot ikennot commented Apr 2, 2026

Copy link
Copy Markdown
Owner

Type of Change

  • feat — new feature
  • fix — bug fix
  • chore — maintenance, dependencies, config
  • docs — documentation only
  • refactor — code change that neither fixes a bug nor adds a feature
  • test — adding or updating tests

Labels

p1-high chore infra

What Changed

  • Added Dockerfile with multi-stage build (JDK build → JRE runtime)
  • Added application-prod.yaml profile (no debug logging, ddl-auto=none, HikariCP tuned)
  • Added GET /api/health endpoint — returns 200 { status: UP, timestamp }, no auth required
  • Added .github/workflows/docker-publish.yml — builds and pushes kenz2025/ucms-backend:latest to Docker Hub on push to main or development
  • Added railway.toml for Railway deployment config
  • Documented all required environment variables and deployment steps in README.md
  • Added full Postman collection (docs/postman/UCMS-Full.postman_collection.json)

Why

Deploy the UCMS backend to production on Railway. The service must connect to the shared Supabase project, run Flyway migrations automatically on startup, and expose a health check endpoint for platform monitoring.

How to Test

  1. Hit the health endpoint: GET https://ucms-backend-production-bc69.up.railway.app/api/health — should return 200 { "status": "UP" }
  2. Import docs/postman/UCMS-Full.postman_collection.json and set base_url to https://ucms-backend-production-bc69.up.railway.app
  3. Run RegisterLoginCreate TicketList Tickets

Related Issues

Closes #infra/deployment

Checklist

  • Code follows the Google Java Style Guide
  • No business logic in controllers
  • Ownership + role checks are in the service layer
  • All responses use ApiResponse<T> wrapper
  • No secrets or credentials committed
  • application.yaml is NOT staged
  • CI passes

@ikennot ikennot linked an issue Apr 2, 2026 that may be closed by this pull request
9 tasks
@ikennot
ikennot merged commit f49ecc4 into development Apr 4, 2026
2 checks passed
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.

[Phase 5D] Deployment — Railway/Render production config, health check, env vars

1 participant