进入公共图书馆

时间:2020-08-27 21:15:37

标签: git typescript bitbucket-pipelines

我有一个打字稿项目,这是一个常用方法的库,我们希望将其提供给组织中的其他存储库。我们不想在仓库中转译代码,因此我们在gitignore中包含dist文件夹。当然,我们需要转译的代码才能分发并遇到使用位桶中的后推的想法,如下所述:https://support.atlassian.com/bitbucket-cloud/docs/push-back-to-your-repository/

从理论上讲,我们正在尝试遵循“正常”分支策略,即在较低的分支中具有拉取请求,但是一旦合并到master分支,则复制dist文件夹,并提交到bitbucket和tag中。然后,该标记版本将由其他存储库使用。

这是bitbucket-pipelines.yml条目:

    master:
  - step: *Lint
  - step: *Test
  - step: *Build
  - step: *PushDistToRepo

PushDistToRepo步骤仅在主服务器中发生。这是该步骤的作用:

    - step: &Lint
    name: Lint
    caches:
      - node
    script:
      - npm ci
      - npm run lint
- step: &Test
    name: Unit Tests
    caches:
      - node
    script:
      - npm ci
      - npm run test
- step: &Build
    name: Build the repository
    caches:
      - node
    script:
      - npm ci
      - npm run build
- step: &PushDistToRepo
    name: Push the build artifact '\dist' back to repo
    trigger: manual # Uncomment to make this a manual deployment.
    caches:
      - node
    script:
      - git add -f dist/
      - git commit -m "[skip ci] Updating the build artifiact in build ${BITBUCKET_BUILD_NUMBER}"
      - git push

在管道中运行此错误时,此错误发生在步骤-git add -f dist /:

fatal: pathspec 'dist/' did not match any files

因此,似乎dist文件夹不存在或无法创建。有什么想法吗?

1 个答案:

答案 0 :(得分:0)

管道中的每个步骤都在单独的容器中运行 1 ,因此默认情况下,默认情况下,下一步中将无法使用上一步中创建的任何文件。

您有两个选择,或者在同一步骤中运行构建和提交脚本,或者使用工件 2

使用工件时,Build构建的配置如下所示。

- step: &Build
    name: Build the repository
    caches:
      - node
    script:
      - npm ci
      - npm run build
    artifacts: # defining the artifacts to be passed to each future step.
      - dist/**