21

随着 Snap-CI 的消失,我一直在尝试让我们的构建在 AWS CodeBuild 上运行。我已经构建了 buildspec.yml,但更改目录似乎不起作用。

version: 0.1

phases:
  install:
    commands:
      - apt-get update -y
      - apt-get install -y node
      - apt-get install -y npm
  build:
    commands:
      - cd MyDir  //Expect to be in MyDir now
      - echo `pwd` //Shows /tmp/blablabla/ instead of /tmp/blablabla/MyDir
      - npm install //Fails because I'm not in the right directory
      - bower install
      - npm run ci
  post_build:
    commands:
      - echo Build completed on `date`
artifacts:
  files:
    - MyDir/MyFile.war
  discard-paths: yes

看起来这应该相当简单,但到目前为止我还没有任何运气让它工作。

4

2 回答 2

44

如果您将 buildspec.yml 版本更改为 0.2,那么 shell 会保留其设置。在 version: 0.1 中,每个命令都有一个干净的 shell。

请享用 ;)

于 2017-07-15T07:41:58.177 回答
21

CodeBuild 中的每个命令都在单独的 shell 中针对源的根目录运行(从 CODEBUILD_SRC_DIR 环境变量访问源的根目录)。

您可能的选择是

  • 短路命令以在同一外壳下运行:当您具有相对简单的构建规范(如您的)时工作。

commands: - cd MyDir && npm install && bower install - cd MyDir && npm run ci

  • 将您的命令从 buildspec 移动到脚本并拥有更多控制权(对于更复杂的构建逻辑很有用)。

commands: - ./mybuildscipt.sh

让我知道这些是否对您有用。

- 编辑 -

CodeBuild 此后推出了 buildspec v0.2,不再需要解决此问题。

于 2017-03-02T20:49:12.860 回答