feat: add /api/version endpoint with IMAGE_TAG; validate in ci healthcheck
This commit is contained in:
parent
b0eb12c17d
commit
849789d376
4 changed files with 23 additions and 0 deletions
|
|
@ -188,6 +188,13 @@ jobs:
|
|||
echo "Properties API: $STATUS"
|
||||
[ "$STATUS" = "200" ] || (echo "❌ Properties API falhou ($STATUS)" && exit 1)
|
||||
|
||||
- name: Check deployed version matches image tag
|
||||
run: |
|
||||
RESPONSE=$(curl -s --max-time 10 "https://${{ vars.DOMAIN }}/api/version")
|
||||
echo "Version response: $RESPONSE"
|
||||
echo "$RESPONSE" | grep -q "${{ needs.build.outputs.image_tag }}" \
|
||||
|| (echo "❌ Version tag não confere — esperado: ${{ needs.build.outputs.image_tag }}" && exit 1)
|
||||
|
||||
- name: All checks passed
|
||||
run: |
|
||||
echo "✅ Deploy validado com sucesso!"
|
||||
|
|
|
|||
|
|
@ -53,6 +53,7 @@ def create_app(config_name: str | None = None) -> Flask:
|
|||
from app.routes.analytics import analytics_bp, _should_track, record_page_view
|
||||
from app.routes.config import config_bp
|
||||
from app.routes.agents import agents_public_bp, agents_admin_bp
|
||||
from app.routes.version import version_bp
|
||||
|
||||
app.register_blueprint(homepage_bp)
|
||||
app.register_blueprint(properties_bp)
|
||||
|
|
@ -65,6 +66,7 @@ def create_app(config_name: str | None = None) -> Flask:
|
|||
app.register_blueprint(config_bp)
|
||||
app.register_blueprint(agents_public_bp)
|
||||
app.register_blueprint(agents_admin_bp)
|
||||
app.register_blueprint(version_bp)
|
||||
|
||||
@app.route("/health")
|
||||
def health():
|
||||
|
|
|
|||
13
backend/app/routes/version.py
Normal file
13
backend/app/routes/version.py
Normal file
|
|
@ -0,0 +1,13 @@
|
|||
import os
|
||||
from flask import Blueprint, jsonify
|
||||
|
||||
version_bp = Blueprint("version", __name__)
|
||||
|
||||
|
||||
@version_bp.get("/api/version")
|
||||
def get_version():
|
||||
"""Returns the running image tag — injected at deploy time via IMAGE_TAG env var."""
|
||||
return jsonify({
|
||||
"version": os.environ.get("IMAGE_TAG", "dev"),
|
||||
"env": os.environ.get("FLASK_ENV", "development"),
|
||||
})
|
||||
|
|
@ -26,6 +26,7 @@ services:
|
|||
FLASK_ENV: production
|
||||
FLASK_APP: app
|
||||
CORS_ORIGINS: https://${DOMAIN}
|
||||
IMAGE_TAG: ${IMAGE_TAG:-latest}
|
||||
depends_on:
|
||||
db:
|
||||
condition: service_healthy
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue