Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Is there a way to change directory on AWS codebuild

With Snap-CI going away I've been trying to get our builds working on AWS CodeBuild. I have my buildspec.yml built out, but changing directories doesn't seem to work.

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

It seems like this should be fairly simple, but so far I haven't had any luck getting this to work.

like image 993
Zipper Avatar asked Mar 02 '17 19:03

Zipper


People also ask

How do I set environment variables in CodeBuild?

Choose the icon to edit your CodeBuild action. On the Edit action page, under Environment variables, enter the following: In Name, enter a name for your environment variable. In Value, enter the variable syntax for your pipeline output variable, which includes the namespace assigned to your source action.

Where are CodeBuild artifacts stored?

zip , the output artifact is stored in MyArtifacts/<build-ID>/MyArtifact. zip . If this flag is set, a name specified in the buildspec file overrides the artifact name. The name specified in a buildspec file is calculated at build time and uses the Shell Command Language.

Where do I put Buildspec file?

Buildspec file name and storage location If you include a buildspec as part of the source code, by default, the buildspec file must be named buildspec. yml and placed in the root of your source directory.


2 Answers

If you change the buildspec.yml version to 0.2 then the shell keeps its settings. In version: 0.1 you get a clean shell for each command.

like image 188
Eric Nord Avatar answered Nov 09 '22 01:11

Eric Nord


Each command in CodeBuild runs in a separate shell against the root of your source (access root of your source from CODEBUILD_SRC_DIR environment variable).

Your possible options are

  • Short circuit the commands to run under the same shell: Works when you have relatively simple buildspec (like yours).

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

  • Move your commands from buildspec to a script and have more control (useful for more complicated build logic).

commands: - ./mybuildscipt.sh

Let me know if any of these work for you.

-- EDIT --

CodeBuild has since launched buildspec v0.2 where this work around is no longer required.

like image 23
awsnitin Avatar answered Nov 09 '22 02:11

awsnitin