dulerong
dulerong

Reputation: 289

Vue deployment to Heroku with CircleCI failing: fatal: Not a git repository (or any of the parent directories): .git

Having trouble deploying to HEROKU with CircleCI. I have already tested deploying git push heroku master to heroku manually, which is working. However when I use CircleCI, deployment no longer works.

Github repo url: https://github.com/dulerong/vue-test-circleci

I have set HEROKU environment variables in CircleCI project setting.

HEROKU_API_KEY=my_key
HEROKU_APP_NAME=my_app_name

Error message follows.

#!/bin/bash -eo pipefail
if false;then
  force="-f"
fi

heroku_url="https://heroku:[email protected]/$HEROKU_APP_NAME.git"

if [ -n "$CIRCLE_BRANCH" ]; then
  git push $force $heroku_url $CIRCLE_BRANCH:main
elif [ -n "$CIRCLE_TAG" ]; then
  git push $force $heroku_url $CIRCLE_TAG^{}:main
else
  echo "No branch or tag found."
  exit 1
fi
fatal: Not a git repository (or any of the parent directories): .git

Exited with code exit status 128
CircleCI received exit code 128

Below is my circleCI config.yml

version: 2.1
orbs:
  heroku: circleci/[email protected]
jobs:
  build-job:
    working_directory: ~/repo
    docker:
      - image: circleci/node:12.18.2
    steps:
      - checkout
      - run: 
          name: Install dependencies
          command: npm install
      - run: 
          name: Build
          command: npm run build
      - save_cache:
          key: dependency-cache-{{ checksum "package-lock.json" }}
          paths:
            - ./node_modules
      - run:
          name: lint
          command: npm run lint
      - run:
          name: test
          command: npm run test:unit

  deploy-job:
    working_directory: ~/repo
    docker: 
      - image: circleci/node:12.18.2
    steps:
      - attach_workspace:
          at: ~/repo
      - heroku/deploy-via-git

workflows:
  version: 2.1
  deploy:
    jobs:
      - build-job
      - deploy-job:
          requires:
            - build-job
          filters:
            branches:
              only: master

  1. I have linked CircleCI to my Github repo
  2. I have created .circleci folder config.yml
  3. I have created an app on heroku, which works when I deploy manually
  4. The build part of my CircleCI works, however deployment does not work

Any help is appreciated, thanks in advance.

Upvotes: 3

Views: 893

Answers (1)

dulerong
dulerong

Reputation: 289

Found out what I was missing.

- checkout

I was missing this line of code in my deploy-job. Hence after changing the deploy-job yml config code to following, everything worked.

deploy-job:
    working_directory: ~/repo
    docker: 
      - image: circleci/node:12.18.2
    steps:
      - checkout<--- INSERT THIS CODE HERE!!!!
      - attach_workspace:
          at: ~/repo
      - heroku/deploy-via-git

Reason: checkout command leads CircleCI to the root directory of your project. Hence without this line of code, you're looking at a folder directory that's not even the root of your project.

Other useful command include

      - run:
          name: show directory 
          command: pwd
      - run:
          name: look in directory
          command: ls -ltr

If you place those commands beneath checkouk, and look into the job progress in your CircleCI project, you can actually see which directory CircleCI is looking at, during that exact moment, very useful to check which directory CircleCI is working in. I put in those two commands and found out that my CircleCI was not looking at the root directory, hence discovering my problem.

Took me a few hours to figure this out!!!

Upvotes: 5

Related Questions