3

对于所有其他 stackoverflow 问题,似乎人们正在询问私有 npm git 存储库或不同的技术堆栈。我很确定我可以在 GAE Flexible 中使用私有 npm 注册表,但我想知道标准版本是否可行?

GAE 标准文档来看,这似乎是不可能的。其他人有其他想法吗?

4

2 回答 2

2

Google Cloud Functions 允许您通过在 .npmrc 文件中提供 npm 注册表的凭据来访问私有 NPM 模块,如文档的使用私有模块部分所述。

但是,这对于 App Engine 标准是不可能的,并且已经为其创建了功能请求,您可以通过此链接进行跟踪。

我建议将此请求标记为受影响,并发表评论说明这​​对您有何影响,因为它会增加请求的可见性。

于 2020-04-10T08:08:45.450 回答
1

谷歌将此功能请求标记为“不会修复,预期的行为”,但有一种解决方法。

假设您可以在 CI/CD 管道的构建阶段访问环境变量。通过让构建脚本使用环境变量的值(注意:,而不是变量名)覆盖 .npmrc 文件开始该阶段。然后,.npmrc 文件(以及其中的令牌)将可供 CI/CD 管道的其余部分使用。

例如:

  - name: Install and build
    env:
      NPM_AUTH_TOKEN: ${{ secrets.PRIVATE_REPO_PACKAGE_READ_TOKEN }}
    run: |
      # Remove these 'echo' statements after we migrate off of Google App Engine.
      # See replies 14 and 18 here: https://issuetracker.google.com/issues/143810864?pli=1
      echo "//npm.pkg.github.com/:_authToken=${NPM_AUTH_TOKEN}" > .npmrc
      echo "@organizationname:registry=https://npm.pkg.github.com" >> .npmrc
      echo "always-auth=true" >> .npmrc
      npm install
      npm run compile
      npm run secrets:get ${{ secrets.YOUR_GCP_PROJECT_ID }}

向在 Issure Tracker 线程中撰写回复 14 和 18 的匿名英雄致敬 - https://issuetracker.google.com/issues/143810864?pli=1

如果您使用项目代码签入了 .npmrc 文件,最好在顶部添加注释,说明它将在 CI/CD 管道期间被覆盖。否则,墨菲定律规定您(或队友)将签入对该 .npmrc 文件的更改,然后浪费大量时间试图找出为什么该更改在部署期间无效。

于 2022-01-19T22:47:07.187 回答