【问题标题】:Github actions can't seem to find private package in monorepo with yarn workspaces and lernaGithub 操作似乎无法在带有纱线工作区和 lerna 的 monorepo 中找到私有包
【发布时间】:2021-10-01 22:50:12
【问题描述】:

我创建了一个基于 yarn 工作空间和 lerna 的 monorepo,其中包含以下包类型:

  • UI网站包(Vue Vite应用)
  • DTO 包(私有 npm 包)
  • n 个后端包(AWS 无服务器)

我的项目结构看起来像这样

root
-- package.json
-- packages/
--- ui/
---- package.json
---- dist/
--- dto/
---- package.json
---- dist/
--- serverlessBackend1/
---- package.json
---- build/
--- serverlessBackend2/
---- package.json
---- build/
--- serverlessBackendN/
---- package.json
---- build/

DTO 包主要包含在所有其他包中使用的类型,因此它在我的包的每个 package.json 中都列为依赖项。

在我的根 package.json 我有以下三个基本的 lerna 脚本:

{
    [...]
    "workspaces": [
        "packages/*"
    ],
    "scripts": {
        "build": "lerna run build",
        "publish": "lerna publish --conventional-commits --yes",
        "deploy": "lerna run deploy"
    },
    "dependencies": {
        [...]
    },
    "devDependencies": {
        [...]
    }
}

现在我想创建一个 github 操作管道,它负责将不同的包分发到它们的目的地。网站包的 Ftp 上传,将 dto 包发布到 npm 并将所有无服务器项目部署到 AWS。

由于我对 Github 操作非常陌生,因此我已经通过官方文档、自述文件、其他项目、stackoverflow 问题挖掘了自己的方式,并设法建立了一个管道,它适用于三种情况中的两种。

不幸的是,我想将所有无服务器程序包部署到 AWS 的步骤似乎有一个奇怪的问题。首先,这是 Job 的配置方式:

Deploy-to-AWS:
    runs-on: ubuntu-latest
    env: 
        NODE_AUTH_TOKEN: ${{ secrets.NPM_AUTH_TOKEN }}
    steps:
        - name: Checkout
          uses: actions/checkout@v2
          with:
            submodules: recursive
            token: ${{ secrets.GITHUB_TOKEN }}
        - name: Installing dependencies
          run: yarn
        - name: Add AWS credentials with profile
          run: |
            aws configure set aws_access_key_id ${{ secrets.AWS_ACCESS_KEY }} --profile ${{ secrets.PROFILE_NAME }}
            aws configure set aws_secret_access_key ${{ secrets.AWS_SECRET_ACCESS_KEY }} --profile ${{ secrets.PROFILE_NAME }}
        - name: Deploy to AWS dev
          run: yarn deploy

当我在我的根目录中本地执行 yarn deploy 时,一切都按预期工作,并且每个无服务器包中的 deploy 脚​​本都被执行并且所有包都被正确部署。这就是package.json 在无服务器包中的样子:

{
    [...]
    "scripts": {
        "build": "tsc",
        "runDeployment": "serverless deploy -v --aws-profile my-profile-name",
        "deploy": "npm run build && npm run runDeployment"
    },
    "dependencies": {
        "@userName/my-private-dto-package": "^0.3.2",
        [...]
    },
    "devDependencies": {
        [...]
    }
}

但是当我在 Github 操作工作流程中尝试相同的操作时,我收到一个错误,即找不到我的私有包模块:

2nd-serverless-package: path/to/file/where/dto/is/imported.ts(1,88): error TS2307: Cannot find module '@userName/my-private-dto-package' or its corresponding type declarations.

这似乎发生在每个包裹上,但第一个包裹除外。那么也许只是为第一个包解决了依赖关系?

我在互联网上上下搜索过,但无济于事。

【问题讨论】:

    标签: amazon-web-services yarnpkg github-actions serverless monorepo


    【解决方案1】:

    我认为这可能与符号链接的依赖项有关,因此 DTO 包仅在根级别可用,而不是直接在无服务器包内。

    但我通过分离每个无服务器包的工作流并直接安装依赖项来解决它。

    name: Serverless deployment package-name
    on:
      push:
        branches:
          - main
        paths:
          - 'packages/serverlessBackend1/**'
    
    jobs:
      Deploy-to-AWS:
        runs-on: ubuntu-latest
        env: 
          NODE_AUTH_TOKEN: ${{ secrets.NPMRC_AUTH_TOKEN }}
        steps:
          - name: Check out repository code
            uses: actions/checkout@v2
    
          - name: Setup up node
            uses: actions/setup-node@v2
          
          - name: Provide profile credentials
            run: |
              aws configure set aws_access_key_id ${{ secrets.AWS_ACCESS_KEY }} --profile my-profile-name
              aws configure set aws_secret_access_key ${{ secrets.AWS_SECRET_ACCESS_KEY }} --profile my-profile-name
          
          - name: Install dependencies
            run: cd packages/serverlessBackend1 && npm install
    
          - name: Deploy event backend to AWS dev
            run: cd packages/serverlessBackend1 && npm run deploy
    

    这完全为我解决了。不是我最初问题的解决方案,因此没有将其标记为答案,但我认为我的发现可能对其他人有所帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-07-04
      • 2019-04-08
      • 2021-06-03
      • 2021-09-05
      • 1970-01-01
      • 2019-12-27
      • 1970-01-01
      • 2020-07-31
      相关资源
      最近更新 更多