Gatsby 在 GitHub Actions CI 中运行时抛出 SIGSEV 错误

Jan*_*sky 6 javascript gatsby github-actions gatsby-image

gatsby buildGatsby 站点上运行时遇到问题,该问题仅在 Github Actions 容器中运行时发生。它也不总是发生。作为一个很好的例子,今天 Dependabot 启动了 12 个 PR,其中两个因此错误而失败。错误显示如下:

$ gatsby build
??????????????????????????????????????????????????????????????????????????
?                                                                        ?
?   Gatsby collects anonymous usage analytics                            ?
?   to help improve Gatsby for all users.                                ?
?                                                                        ?
?   If you'd like to opt-out, you can use `gatsby telemetry --disable`   ?
?   To learn more, checkout https://gatsby.dev/telemetry                 ?
?                                                                        ?
??????????????????????????????????????????????????????????????????????????
success open and validate gatsby-configs - 0.035s
success load plugins - 0.892s
success onPreInit - 0.010s
success delete html and css files from previous builds - 0.015s
success initialize cache - 0.013s
success copy gatsby files - 0.029s
warn gatsby-plugin-feed was initialized in gatsby-config.js without a feeds option.
This means that the plugin will use the internal RSS feed creation, which may not match your use
case.
This behavior will be removed in the next major release of gatsby-plugin-feed.
success onPreBootstrap - 0.014s
success createSchemaCustomization - 0.149s
success source and transform nodes - 0.193s
?
info bootstrap finished - 5.713 s
?
success Building production JavaScript and CSS bundles - 19.548s
success Rewriting compilation hashes - 0.002s
success run queries - 21.003s - 10/10 0.48/s
error Command failed with signal "SIGSEGV".
info Visit https://yarnpkg.com/en/docs/cli/run for documentation about this command.
##[error]Docker run failed with exit code 1
Run Code Online (Sandbox Code Playgroud)

如您所见,信息并不多,只有一行描述了错误:error Command failed with signal "SIGSEGV". 我一直在寻找一种方法来使 Gatsby 的输出更详细,但命令中似乎没有详细选项build

我唯一的线索是它可能与处理 Gatsby-Sharp 和 Gatsby-Image 中的图像有关,由于Gatsby GitHub repo 上的这个线程,这个 repo 确实使用了这两个。但似乎该线程中的很多人都在报告不同的问题,这些问题只是切线相似;很难弄清楚什么可能相关。

gatsby-config.js

module.exports = {
  siteMetadata: {
    title: `Matt.si`,
    description: `Mattsi Jansky's personal programming/tech blog`,
    author: `Mattsi Jansky`,
    siteUrl: `http://www.matt.si`,
    social: {
      twitter: `mattsijansky`,
      facebook: ``,
      github: `mattsi-jansky`,
      linkedin: `mjjansky`,
      email: `mattsi@jansky.dev`,
    },
  },
  plugins: [
    {
      resolve: `gatsby-source-filesystem`,
      options: {
        path: `${__dirname}/content/blog`,
        name: `blog`,
      },
    },
    {
      resolve: `gatsby-transformer-remark`,
      options: {
        plugins: [
          {
            resolve: `gatsby-remark-images`,
            options: {
              maxWidth: 970,
              showCaptions: true
            },
          },
          `gatsby-remark-prismjs`,
        ],
      },
    },
    `gatsby-transformer-sharp`,
    `gatsby-plugin-sharp`,
    {
      resolve: `gatsby-plugin-google-analytics`,
      options: {
        trackingId: `UA-54448080-1`,
      },
    },
    `gatsby-plugin-feed`,
    {
      resolve: `gatsby-plugin-manifest`,
      options: {
        name: `Matt.si`,
        short_name: `mattsi`,
        start_url: `/`,
        background_color: `#663399`,
        theme_color: `#663399`,
        display: `minimal-ui`,
        icon: `./static/favicon.png`, // This path is relative to the root of the site.
      },
    },
    {
      resolve: `gatsby-transformer-remark`,
      options: {
        plugins: [
          {
            resolve: `gatsby-remark-footnotes`,
            options: {
              footnoteBackRefPreviousElementDisplay: "inline",
              footnoteBackRefDisplay: "inline",
              footnoteBackRefInnerText: "^",
              footnoteBackRefAnchorStyle: `text-decoration: none;`,
              footnoteBackRefInnerTextStartPosition: "front",
            }
          }
        ]
      }
    },
    // `gatsby-plugin-offline`,
    `gatsby-plugin-react-helmet`,
    `gatsby-plugin-sass`,
  ],
}
Run Code Online (Sandbox Code Playgroud)

Package.json

{
  "name": "matt.si",
  "private": false,
  "description": "Mattsi Jansky's personal blog",
  "author": "Mattsi Jansky",
  "scripts": {
    "build": "gatsby build",
    "dev": "gatsby develop",
    "test": "jest",
    "test:updateSnapshots": "jest --updateSnapshot",
    "test:visual": "yarn build && ./scripts/run-visual-regression-tests.sh",
    "test:visual:update": "docker-compose run visual-regression-tests reference",
    "test:visual:approve": "docker-compose run visual-regression-tests approve",
    "lint": "eslint --ext .js,.jsx --ignore-pattern public .",
    "format": "prettier --trailing-comma es5 --no-semi --single-quote --write 'src/**/*.js' 'src/**/*.md'"
  },
  "dependencies": {
    "babel-preset-gatsby": "0.2.26",
    "gatsby": "2.18.21",
    "gatsby-image": "2.2.37",
    "gatsby-plugin-feed": "2.3.25",
    "gatsby-plugin-google-analytics": "2.1.31",
    "gatsby-plugin-manifest": "2.2.34",
    "gatsby-plugin-offline": "3.0.30",
    "gatsby-plugin-react-helmet": "3.1.18",
    "gatsby-plugin-sass": "2.1.26",
    "gatsby-plugin-sharp": "2.3.10",
    "gatsby-remark-footnotes": "0.0.7",
    "gatsby-remark-images": "3.1.39",
    "gatsby-remark-prismjs": "3.3.28",
    "gatsby-source-filesystem": "2.1.43",
    "gatsby-transformer-remark": "2.6.45",
    "gatsby-transformer-sharp": "2.3.9",
    "identity-obj-proxy": "3.0.0",
    "node-sass": "4.13.0",
    "prismjs": "1.18.0",
    "prop-types": "15.7.2",
    "react": "16.12.0",
    "react-dom": "16.12.0",
    "react-helmet": "5.2.1",
    "react-test-renderer": "16.12.0",
    "rehype-react": "4.0.1"
  },
  "devDependencies": {
    "babel-jest": "24.9.0",
    "enzyme": "3.11.0",
    "enzyme-adapter-react-16": "1.15.2",
    "eslint": "6.8.0",
    "eslint-plugin-react": "7.17.0",
    "jest": "24.9.0",
    "prettier": "1.19.1",
    "wait-on": "3.3.0"
  },
  "license": "GPL-3.0-only"
}
Run Code Online (Sandbox Code Playgroud)

我不确定还有什么可以帮助,但所有内容都在回购中公开。我正在尝试gatsby info在 CI 服务器上运行,但在让它工作时遇到了一些麻烦。有任何想法吗?

小智 3

将所有 gatsby 插件更新到最新并遵循此

将以下内容添加到您的 gatsby-node.js 中:

const sharp = require('sharp');

sharp.cache(false); 
sharp.simd(false); 
Run Code Online (Sandbox Code Playgroud)