Skip to main content

new-migration

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

Aller à l'installation

Informations de source

Dépôt
fleetdm/fleet
Dernière activité de la source
13 août 2026 à 14:27
Langue détectée de SKILL.md
anglais
Étoiles
6 865
Forks
1 019

Options d'installation

Le prompt qui vérifie d'abord la source est sélectionné par défaut. Vous pouvez passer à une commande directe ou télécharger une copie locale.

Vérifiez les fichiers source

Lisez SKILL.md et les fichiers associés affichés par SkillsMP avant de décider de l'installer.

Affichage de SKILL.md

SKILL.md
Instructions source · Aperçu en lecture seule
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
Voir sur GitHub