From 68b3714f94f3090f41950e74343f0b08996cd4e9 Mon Sep 17 00:00:00 2001 From: Cian Johnston Date: Fri, 17 May 2024 10:27:09 +0100 Subject: [PATCH 1/2] ci: re-enable test migrations --- .github/workflows/release.yaml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/release.yaml b/.github/workflows/release.yaml index 9f23a5c488e80..faa6593452e25 100644 --- a/.github/workflows/release.yaml +++ b/.github/workflows/release.yaml @@ -178,9 +178,9 @@ jobs: env: EV_SIGNING_CERT: ${{ secrets.EV_SIGNING_CERT }} - # - name: Test migrations from current ref to main - # run: | - # make test-migrations + - name: Test migrations from current ref to main + run: | + make test-migrations # Setup GCloud for signing Windows binaries. - name: Authenticate to Google Cloud From c41c3af4e800c3fd265f90eb44236c005384dbd6 Mon Sep 17 00:00:00 2001 From: Cian Johnston Date: Fri, 17 May 2024 11:24:10 +0100 Subject: [PATCH 2/2] improve output of test-migrations --- scripts/migrate-test/main.go | 21 +++++++++++++++++---- 1 file changed, 17 insertions(+), 4 deletions(-) diff --git a/scripts/migrate-test/main.go b/scripts/migrate-test/main.go index deaa7a021b628..145ccb3e1a361 100644 --- a/scripts/migrate-test/main.go +++ b/scripts/migrate-test/main.go @@ -6,6 +6,7 @@ import ( "database/sql" "flag" "fmt" + "io" "io/fs" "os" "os/exec" @@ -80,27 +81,39 @@ func main() { _, _ = fmt.Fprintf(os.Stderr, "Init database at version %q\n", migrateFromVersion) if err := migrations.UpWithFS(conn, migrateFromFS); err != nil { - panic(err) + friendlyError(os.Stderr, err, migrateFromVersion, migrateToVersion) + os.Exit(1) } _, _ = fmt.Fprintf(os.Stderr, "Migrate to version %q\n", migrateToVersion) if err := migrations.UpWithFS(conn, migrateToFS); err != nil { - panic(err) + friendlyError(os.Stderr, err, migrateFromVersion, migrateToVersion) + os.Exit(1) } _, _ = fmt.Fprintf(os.Stderr, "Dump schema at version %q\n", migrateToVersion) dumpBytesAfter, err := dbtestutil.PGDumpSchemaOnly(postgresURL) if err != nil { - panic(err) + friendlyError(os.Stderr, err, migrateFromVersion, migrateToVersion) + os.Exit(1) } if diff := cmp.Diff(string(dumpBytesAfter), string(stripGenPreamble(expectedSchemaAfter))); diff != "" { - _, _ = fmt.Fprintf(os.Stderr, "Schema differs from expected after migration: %s\n", diff) + friendlyError(os.Stderr, xerrors.Errorf("Schema differs from expected after migration: %s", diff), migrateFromVersion, migrateToVersion) os.Exit(1) } _, _ = fmt.Fprintf(os.Stderr, "OK\n") } +func friendlyError(w io.Writer, err error, v1, v2 string) { + _, _ = fmt.Fprintf(w, "Migrating from version %q to %q failed:\n", v1, v2) + _, _ = fmt.Fprintf(w, "\t%s\n", err.Error()) + _, _ = fmt.Fprintf(w, "Check the following:\n") + _, _ = fmt.Fprintf(w, " - All migrations from version %q must exist in version %q with the same migration numbers.\n", v2, v1) + _, _ = fmt.Fprintf(w, " - Each migration must have the same effect.\n") + _, _ = fmt.Fprintf(w, " - There must be no gaps or duplicates in the migration numbers.\n") +} + func makeMigrateFS(version string) (fs.FS, error) { // Export the migrations from the requested version to a zip archive out, err := exec.Command("git", "archive", "--format=zip", version, "coderd/database/migrations").CombinedOutput() pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy