Phase 1: Database Schema Implementation - Migration 010: Sessions table with bulletproof auto-incrementing - Unique session IDs across all projects - Per-project session numbers (1, 2, 3, ...) - Atomic sequence generation (no race conditions) - Session-task and session-commit linking - Semantic search with pgvector HNSW indexes - Migration 011: Memories table with enhanced schema - Migrated existing session_memories to memories - Added session_id and task_id foreign keys - Renamed columns for consistency - HNSW indexing for semantic search - Migration 012: Builds table for CI/CD tracking - Links builds to sessions and versions - Tracks build status, timing, and metadata All migrations tested and verified on agiliton database. Related: CF-167 (Fix shared session-summary.md file conflict)
47 lines
2.0 KiB
SQL
47 lines
2.0 KiB
SQL
-- Migration 012: Builds table for CI/CD tracking
|
|
-- Purpose: Track builds and link them to sessions and versions
|
|
-- Dependencies: 001_base_schema.sql (versions table), 010_sessions.sql (sessions table)
|
|
|
|
-- Builds table: Store build information linked to sessions and versions
|
|
CREATE TABLE IF NOT EXISTS builds (
|
|
id SERIAL PRIMARY KEY,
|
|
session_id TEXT REFERENCES sessions(id) ON DELETE SET NULL,
|
|
version_id TEXT REFERENCES versions(id) ON DELETE CASCADE,
|
|
|
|
build_number INTEGER NOT NULL,
|
|
status TEXT DEFAULT 'pending' CHECK (status IN ('pending', 'running', 'success', 'failed')),
|
|
|
|
-- Build metadata
|
|
git_commit_sha TEXT,
|
|
git_branch TEXT,
|
|
build_log_url TEXT,
|
|
artifacts_url TEXT,
|
|
|
|
-- Timing
|
|
started_at TIMESTAMP WITH TIME ZONE NOT NULL,
|
|
finished_at TIMESTAMP WITH TIME ZONE,
|
|
duration_seconds INTEGER GENERATED ALWAYS AS
|
|
(EXTRACT(EPOCH FROM (finished_at - started_at))) STORED,
|
|
|
|
created_at TIMESTAMP WITH TIME ZONE DEFAULT NOW()
|
|
);
|
|
|
|
-- Indexes for efficient querying
|
|
CREATE INDEX idx_builds_session ON builds(session_id);
|
|
CREATE INDEX idx_builds_version ON builds(version_id);
|
|
CREATE INDEX idx_builds_status ON builds(status);
|
|
CREATE INDEX idx_builds_started ON builds(started_at DESC);
|
|
CREATE INDEX idx_builds_commit ON builds(git_commit_sha);
|
|
|
|
-- Unique constraint: one build number per version
|
|
CREATE UNIQUE INDEX idx_builds_version_number ON builds(version_id, build_number)
|
|
WHERE version_id IS NOT NULL;
|
|
|
|
-- Comments for documentation
|
|
COMMENT ON TABLE builds IS 'CI/CD build tracking linked to sessions and versions';
|
|
COMMENT ON COLUMN builds.session_id IS 'Optional link to session that triggered the build';
|
|
COMMENT ON COLUMN builds.version_id IS 'Link to version being built';
|
|
COMMENT ON COLUMN builds.duration_seconds IS 'Auto-calculated build duration in seconds';
|
|
COMMENT ON COLUMN builds.build_log_url IS 'URL to build logs (e.g., GitHub Actions run)';
|
|
COMMENT ON COLUMN builds.artifacts_url IS 'URL to build artifacts (e.g., app binary, Docker image)';
|