Skip to main content

new-migration

Create a new Fleet database migration with timestamp naming, Up function, init registration, and test file.

설치로 이동

소스 정보

저장소
fleetdm/fleet
최근 소스 활동
2026년 8월 13일 14:27
감지된 SKILL.md 언어
영어
스타
6,865
포크
1,019

설치 방법

기본적으로 소스를 먼저 확인하는 Prompt가 선택됩니다. 직접 명령으로 전환하거나 로컬 사본을 다운로드할 수도 있습니다.

소스 파일 검토

설치 여부를 결정하기 전에 SKILL.md와 SkillsMP에 표시된 보조 파일을 읽어 보세요.

SKILL.md 표시 중

SKILL.md
소스 지침 · 읽기 전용 미리보기
name
new-migration
description
Create a new Fleet database migration with timestamp naming, Up function, init registration, and test file.
allowed-tools
Bash(date *), Bash(make migration *), Bash(go build *), Bash(go test *), Bash(MYSQL_TEST*), Read, Write, Grep, Glob
model
sonnet
effort
medium
# Create a New Database Migration Create a migration for: $ARGUMENTS ## Process ### 1. Generate Timestamp and Name Use `make migration name=CamelCaseName` if available, or generate manually: ```bash date +%Y%m%d%H%M%S ``` The migration name should be descriptive CamelCase (e.g., `AddRecoveryLockAutoRotateAt`, `CreateTableSoftwareInstallers`). ### 2. Create Migration File Location: `server/datastore/mysql/migrations/tables/{TIMESTAMP}_{Name}.go` ```go package tables import "database/sql" func init() { MigrationClient.AddMigration(Up_{TIMESTAMP}, Down_{TIMESTAMP}) } func Up_{TIMESTAMP}(tx *sql.Tx) error { _, err := tx.Exec(` -- SQL statement here `) return err } func Down_{TIMESTAMP}(tx *sql.Tx) error { return nil } ``` ### 3. Create Test File (data migrations only) Only needed when the migration modifies data: changing existing data, adding new data, or populating a table. A migration that only adds a table, column, or index does not need a test file. Location: `server/datastore/mysql/migrations/tables/{TIMESTAMP}_{Name}_test.go` ```go package tables import ( "testing" "github.com/stretchr/testify/require" ) func TestUp_{TIMESTAMP}(t *testing.T) { db := applyUpToPrev(t) // Set up test data before migration if needed applyNext(t, db) // Verify migration applied correctly // e.g., check table exists, columns added, data migrated } ``` ### 4. Verify - Run `go build ./server/datastore/mysql/migrations/...` to check compilation - Run `MYSQL_TEST=1 go test -run TestUp_{TIMESTAMP} ./server/datastore/mysql/migrations/tables/` to test the migration ## Rules - Every migration MUST have a test file - Down migrations are always no-ops (`return nil`) — Fleet doesn't use rollback migrations - Never modify existing migration files — create new ones - Data migrations go in the `data/` subdirectory
GitHub에서 보기