如何在gitlab CI上使用dotenv?

问题描述 投票:0回答:1

我正在努力构建基于 gitlab CI 的 gatsby。我正在使用 .env 文件来提供带有 SITE_URL 的变量。

来自我的盖茨比配置

import type { GatsbyConfig } from "gatsby";

const result = require("dotenv").config({
  path: `.env.${process.env.NODE_ENV}`,
});

if (result.error) {
  console.error(result.error);
}

const config: GatsbyConfig = {
  siteMetadata: {
    siteUrl: process.env.SITE_URL,
....

这就是我在管道编辑器中配置页面作业的方式

pages:
  stage: deploy
  needs: 
    - yarn:install
    - test:gatsby
  script:
    - echo SITE_URL=$SITE_URL >> .env.production
    - echo $SITE_URL
    - cat .env.production
    - ./node_modules/.bin/gatsby build --prefix-paths
  artifacts:
    paths:
      - public
  rules:
    - if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH

从日志看来.env.生产是正确的

$ echo SITE_URL=$SITE_URL >> .env.production
$ echo $SITE_URL
https://my_www.gitlab.io/my_www-3.0/
$ cat .env.production
SITE_URL=https://my_www.gitlab.io/my_www-3.0/

但是在盖茨比这边却行不通:

error The site's gatsby-config failed validation:
"siteMetadata.siteUrl" must be a valid uri

显然,process.env 不包含 SITE_URL

如何调试其根本原因?

node.js gitlab-ci gatsby
1个回答
0
投票

问题出在 Gitlab 页面的配置中。需要选择:

使用独特的域名

并使用生成的 url 作为 SITE_URL,而不是子域。

© www.soinside.com 2019 - 2024. All rights reserved.