tr
TryGhost
GitHub
Ghost
Workspace
GitHub
CI Pipeline Executions
Filtered
Runs
Demo
Insights
Compare tasks
Analytics
Sign in
Toggle sidebar
Overview
⌘K
Ghost
Loading workspace stats
Loading workspace insights...
Statistics interval
7 days
30 days
Latest CI Pipeline Executions
Status
Fix filter
Filter
Fuzzy
Filter range
Sort by
Sort by
Start time
Sort ascending
Sort descending
Failed
30319
ff06d747 Migrated CSV content imports to the class-based jobs service no ref CSV imports need to exercise the new serializable jobs contract before M8 adds durable processing. Stage uploads so request validation remains synchronous while the handler can reparse a pure-data job payload, keeping the temporary in-memory outcomes and row limit unchanged.
by Paul Davis
P
Succeeded
main
7859dc99 Added CSV import post deduplication, authors and tags (#30307) ref https://linear.app/ghost/project/4b2edbd66469/ - Milestone 5 Each commit references an individual Linear issue - Skips duplicate posts and updates existing posts when imported data is newer - Matches posts by source ID or slug - Reconciles and creates authors and tags, with safe Owner fallbacks and warnings - Adds full coverage across all changed CSV importer modules
by Paul Davis
P
Succeeded
main
7859dc99 Added CSV import post deduplication, authors and tags (#30307) ref https://linear.app/ghost/project/4b2edbd66469/ - Milestone 5 Each commit references an individual Linear issue - Skips duplicate posts and updates existing posts when imported data is newer - Matches posts by source ID or slug - Reconciles and creates authors and tags, with safe Owner fallbacks and warnings - Adds full coverage across all changed CSV importer modules
by Paul Davis
P
Failed
30307
6311bb97 Fixed case-insensitive CSV author matching ref https://github.com/TryGhost/Ghost/pull/30307#discussion_r3862017114 CSV imports must reuse existing staff accounts regardless of email casing, especially on SQLite. Use Ghost's cross-database email lookup contract and normalize newly created Contributor addresses to prevent duplicate users.
by Paul Davis
P
Failed
30307
6311bb97 Fixed case-insensitive CSV author matching ref https://github.com/TryGhost/Ghost/pull/30307#discussion_r3862017114 CSV imports must reuse existing staff accounts regardless of email casing, especially on SQLite. Use Ghost's cross-database email lookup contract and normalize newly created Contributor addresses to prevent duplicate users.
by Paul Davis
P
Succeeded
csv-tags-authors-dedupe
b6225808 Merge 59d5121cf821fd3d4603a7fa6e124e1ec0f2a135 into 01864533ffba878154b3f611a1ead069c5f26618
by Paul Davis
P
Succeeded
30307
59d5121c Added full CSV importer coverage no ref Cover the remaining content-import service lifecycle and Owner fallback deduplication branches so every production module changed by M5 has complete targeted coverage.
by Paul Davis
P
Succeeded
main
00993723 Added ZIP and media support to CSV post imports (#30272) ref https://linear.app/ghost/project/4b2edbd66469/ - Milestone 4.5 Each commit references an individual Linear issue Adds ZIP support to the CSV post importer, including field mapping, archive validation, and embedded image, media, and file handling. Existing JSON ZIP imports continue through the `/db/` flow. Also moved the ZIP archive handling into a reusable helper, as the CSV importer uses much of the same functionality.
by Paul Davis
P
Succeeded
main
00993723 Added ZIP and media support to CSV post imports (#30272) ref https://linear.app/ghost/project/4b2edbd66469/ - Milestone 4.5 Each commit references an individual Linear issue Adds ZIP support to the CSV post importer, including field mapping, archive validation, and embedded image, media, and file handling. Existing JSON ZIP imports continue through the `/db/` flow. Also moved the ZIP archive handling into a reusable helper, as the CSV importer uses much of the same functionality.
by Paul Davis
P
Succeeded
30272
6052b317 Merge branch 'main' into csv-zip-media-handling
by Paul Davis
P
Succeeded
30272
7f8dfa93 Merge branch 'main' into csv-zip-media-handling
by Paul Davis
P
Succeeded
30272
08a9d261 Fixed mixed CSV ZIP import detection ref https://linear.app/ghost/issue/MIG-1719/handle-a-zip-file-upload A ZIP selected for CSV import could silently ignore deeply nested JSON or Markdown import data. Reject ambiguous mixed archives in both Admin and Core while preserving JSON-only legacy routing and JSON or Markdown attachments under content/files.
by Paul Davis
P
Succeeded
30272
c0fd1f04 Fixed CSV ZIP import review issues ref https://linear.app/ghost/issue/MIG-1719/ ref https://linear.app/ghost/issue/MIG-1720/ Malformed archives could reach the wrong importer, and partial asset failures left stored files behind. The shared TypeScript boundaries now keep validation in one place, while rollback removes successful writes before propagating the failure. Tests pin legacy /db/ behavior and the previously uncovered branches.
by Paul Davis
P
Failed
30272
17992ca9 Improved CSV ZIP validation errors ref https://linear.app/ghost/issue/MIG-1719/ Known client-side archive failures should tell users how to correct their ZIP instead of being collapsed into the fallback unexpected-error toast. A dedicated archive error keeps that trusted validation copy distinct from unexpected exceptions, so the modal can surface it without weakening the global error handler.
by Paul Davis
P
Succeeded
main
253ff6c7 Added HTML & Markdown processing and field mapping to CSV imports (#30216) ref https://linear.app/ghost/project/4b2edbd66469/ Milestone 4 Each commit references its own Linear issue This PR adds the UI for mapping fields when importing a CSV file, borrowing patterns from the Member importer for consistency. It also adds some Markdown & HTML processing for post content by introducing a [`@tryghost/mg-clean-html`](https://github.com/TryGhost/migrate/tree/main/packages/mg-clean-html) from the `migrate` tools, which converts common HTML like `<span style="font-weight: bold;">Hello</span>` to `<b>Hello</b>` for imported content. The importer now: - Automatically maps exact, case-sensitive header matches - Requires exactly one Title mapping - Provides a searchable, grouped picker covering Ghost’s supported editorial post fields - Supports content, publishing, image, SEO, social, and advanced metadata - Validates and coerces supported boolean, type, status, and visibility values - Handles explicit slugs and dates while preserving Ghost’s existing defaults - Supports either HTML or Markdown content - Cleans imported markup before converting it to Lexical - Isolates malformed or failed rows so valid posts continue importing - Preserves identity-header imports for direct API clients without a mapping
by Paul Davis
P
Succeeded
main
253ff6c7 Added HTML & Markdown processing and field mapping to CSV imports (#30216) ref https://linear.app/ghost/project/4b2edbd66469/ Milestone 4 Each commit references its own Linear issue This PR adds the UI for mapping fields when importing a CSV file, borrowing patterns from the Member importer for consistency. It also adds some Markdown & HTML processing for post content by introducing a [`@tryghost/mg-clean-html`](https://github.com/TryGhost/migrate/tree/main/packages/mg-clean-html) from the `migrate` tools, which converts common HTML like `<span style="font-weight: bold;">Hello</span>` to `<b>Hello</b>` for imported content. The importer now: - Automatically maps exact, case-sensitive header matches - Requires exactly one Title mapping - Provides a searchable, grouped picker covering Ghost’s supported editorial post fields - Supports content, publishing, image, SEO, social, and advanced metadata - Validates and coerces supported boolean, type, status, and visibility values - Handles explicit slugs and dates while preserving Ghost’s existing defaults - Supports either HTML or Markdown content - Cleans imported markup before converting it to Lexical - Isolates malformed or failed rows so valid posts continue importing - Preserves identity-header imports for direct API clients without a mapping
by Paul Davis
P
Succeeded
main
253ff6c7 Added HTML & Markdown processing and field mapping to CSV imports (#30216) ref https://linear.app/ghost/project/4b2edbd66469/ Milestone 4 Each commit references its own Linear issue This PR adds the UI for mapping fields when importing a CSV file, borrowing patterns from the Member importer for consistency. It also adds some Markdown & HTML processing for post content by introducing a [`@tryghost/mg-clean-html`](https://github.com/TryGhost/migrate/tree/main/packages/mg-clean-html) from the `migrate` tools, which converts common HTML like `<span style="font-weight: bold;">Hello</span>` to `<b>Hello</b>` for imported content. The importer now: - Automatically maps exact, case-sensitive header matches - Requires exactly one Title mapping - Provides a searchable, grouped picker covering Ghost’s supported editorial post fields - Supports content, publishing, image, SEO, social, and advanced metadata - Validates and coerces supported boolean, type, status, and visibility values - Handles explicit slugs and dates while preserving Ghost’s existing defaults - Supports either HTML or Markdown content - Cleans imported markup before converting it to Lexical - Isolates malformed or failed rows so valid posts continue importing - Preserves identity-header imports for direct API clients without a mapping
by Paul Davis
P
Succeeded
30216
5b3502a7 Cleaned HTML in CSV post imports ref https://linear.app/ghost/issue/MIG-1450/ Imported markup often carries presentation styles and empty structure that do not belong in Ghost content. Run the official migrate cleaner in opinionated mode before every HTML-to-Lexical conversion, preserve its embed protections, and keep cleaner failures isolated to the affected row.
by Paul Davis
P
Failed
30216
5b3502a7 Cleaned HTML in CSV post imports ref https://linear.app/ghost/issue/MIG-1450/ Imported markup often carries presentation styles and empty structure that do not belong in Ghost content. Run the official migrate cleaner in opinionated mode before every HTML-to-Lexical conversion, preserve its embed protections, and keep cleaner failures isolated to the affected row.
by Paul Davis
P
Failed
30216
b6ee23c1 Cleaned HTML in CSV post imports ref https://linear.app/ghost/issue/MIG-1450/ Imported markup often carries presentation styles and empty structure that do not belong in Ghost content. Run the official migrate cleaner in opinionated mode before every HTML-to-Lexical conversion, preserve its embed protections, and keep cleaner failures isolated to the affected row.
by Paul Davis
P
Previous
Next