Checkout from GIT and deploy to Heroku

Hi,

I would like to clone a project from a GIT server and then perform some tests and then deploy to Heroku.

I have been able to get my project from GIT, and then perform "bundle install" which does succeed. Leaving the middle tests part out, I am unable to deploy to Heroku. To deploy, I am doing a Command Line build runner with my "Command Executable" set to "git" and "Command Parameter" set to "push git@heroku-#{new_project}:#{new heroku project’s name}.git master". Where I have set my project name and heroku project name. This is the build log:


[21:22:28]: Checking for changes
[21:22:29]: Clean build enabled: removing old files from /home/teamcity/TeamCity/buildAgent/work/c463bb084d1493f0
[21:22:29]: Clearing temporary directory: /home/teamcity/TeamCity/buildAgent/temp/buildTmp
[21:22:29]: Checkout directory: /home/teamcity/TeamCity/buildAgent/work/c463bb084d1493f0
[21:22:29]: Updating sources: server side checkout...
[21:22:29]: [Updating sources: server side checkout...] Will perform clean checkout
[21:22:29]: [Updating sources: server side checkout...] Clean checkout reasons
[21:22:29]: [Clean checkout reasons] Checkout directory is empty or doesn't exist
[21:22:29]: [Clean checkout reasons] "Clean all files before build" turned on
[21:22:29]: [Updating sources: server side checkout...] Building clean patch for VCS root: PROJECTNAME Git Repo
[21:22:29]: [Updating sources: server side checkout...] Repository sources transferred: 76.91Kb total
[21:22:29]: [Updating sources: server side checkout...] Removing /home/teamcity/TeamCity/buildAgent/work/c463bb084d1493f0
[21:22:29]: [Updating sources: server side checkout...] Updating /home/teamcity/TeamCity/buildAgent/work/c463bb084d1493f0
[21:22:29]: Parameter "system.teamcity.build.checkoutDir" is undefined.
[21:22:29]: Publishing internal artifacts
[21:22:29]: [Publishing internal artifacts] Sending build.start.properties.gz file
[21:22:29]: Step 1/2: Bundle Install (Command Line)
[21:22:29]: [Step 1/2] Starting: /home/teamcity/.rvm/gems/ruby-1.9.2-p290@ PROJECTNAME/bin/bundle install
[21:22:29]: [Step 1/2] in directory: /home/teamcity/TeamCity/buildAgent/work/c463bb084d1493f0
[21:22:30]: [Step 1/2] Using rake (0.9.2.2)
[21:22:30]: [Step 1/2] Using multi_json (1.0.3)
[21:22:30]: [Step 1/2] Using activesupport (3.1.1)
[21:22:30]: [Step 1/2] Using builder (3.0.0)
[21:22:30]: [Step 1/2] Using i18n (0.6.0)
[21:22:30]: [Step 1/2] Using activemodel (3.1.1)
[21:22:30]: [Step 1/2] Using erubis (2.7.0)
[21:22:30]: [Step 1/2] Using rack (1.3.5)
[21:22:30]: [Step 1/2] Using rack-cache (1.1)
[21:22:30]: [Step 1/2] Using rack-mount (0.8.3)
[21:22:30]: [Step 1/2] Using rack-test (0.6.1)
[21:22:30]: [Step 1/2] Using hike (1.2.1)
[21:22:30]: [Step 1/2] Using tilt (1.3.3)
[21:22:30]: [Step 1/2] Using sprockets (2.0.3)
[21:22:30]: [Step 1/2] Using actionpack (3.1.1)
[21:22:30]: [Step 1/2] Using mime-types (1.17.2)
[21:22:30]: [Step 1/2] Using polyglot (0.3.3)
[21:22:30]: [Step 1/2] Using treetop (1.4.10)
[21:22:30]: [Step 1/2] Using mail (2.3.0)
[21:22:30]: [Step 1/2] Using actionmailer (3.1.1)
[21:22:30]: [Step 1/2] Using arel (2.2.1)
[21:22:30]: [Step 1/2] Using tzinfo (0.3.31)
[21:22:30]: [Step 1/2] Using activerecord (3.1.1)
[21:22:30]: [Step 1/2] Using activeresource (3.1.1)
[21:22:30]: [Step 1/2] Using ansi (1.4.1)
[21:22:30]: [Step 1/2] Using bundler (1.0.21)
[21:22:30]: [Step 1/2] Using coffee-script-source (1.1.3)
[21:22:30]: [Step 1/2] Using execjs (1.2.9)
[21:22:30]: [Step 1/2] Using coffee-script (2.2.0)
[21:22:30]: [Step 1/2] Using rack-ssl (1.3.2)
[21:22:30]: [Step 1/2] Using json (1.6.1)
[21:22:30]: [Step 1/2] Using rdoc (3.11)
[21:22:30]: [Step 1/2] Using thor (0.14.6)
[21:22:30]: [Step 1/2] Using railties (3.1.1)
[21:22:30]: [Step 1/2] Using coffee-rails (3.1.1)
[21:22:30]: [Step 1/2] Using jquery-rails (1.0.18)
[21:22:30]: [Step 1/2] Using libv8 (3.3.10.4)
[21:22:30]: [Step 1/2] Using pg (0.11.0)
[21:22:30]: [Step 1/2] Using rails (3.1.1)
[21:22:30]: [Step 1/2] Using sass (3.1.10)
[21:22:30]: [Step 1/2] Using sass-rails (3.1.5)
[21:22:30]: [Step 1/2] Using sqlite3 (1.3.4)
[21:22:30]: [Step 1/2] Using sqlite3-ruby (1.3.3)
[21:22:30]: [Step 1/2] Using therubyracer (0.9.9)
[21:22:30]: [Step 1/2] Using turn (0.8.3)
[21:22:30]: [Step 1/2] Using uglifier (1.1.0)
[21:22:30]: [Step 1/2]  [32mYour bundle is complete! It was installed into /root/.rvm/gems/ruby-1.9.2-p290@ PROJECTNAME [0m
[21:22:30]: [Step 1/2] Process exited with code 0
[21:22:30]: Step 2/2: Deploy to Heroku (Command Line)
[21:22:30]: [Step 2/2] Starting: git push git@heroku-PROJECTNAME:HEROKUPROJECTNAME.git master
[21:22:30]: [Step 2/2] in directory: /home/teamcity/TeamCity/buildAgent/work/c463bb084d1493f0
[21:22:30]: [Step 2/2] fatal: Not a git repository (or any of the parent directories): .git
[21:22:30]: [Step 2/2] Process exited with code 128
[21:22:30]: [Step 2/2] Step Deploy to Heroku (Command Line) failed
[21:22:30]: Publishing internal artifacts
[21:22:30]: [Publishing internal artifacts] Sending build.finish.properties.gz file
[21:22:30]: Build finished

It seems like it cannot find my project .git file. I am not sure how exactly to "allow it to find it".

Can anyone help?
5 comments
Comment actions Permalink

Hi Sahir

You need to switch to agent-side checkout. By default working copy is exported and does not contain full clone of the repository.

Michael

0
Comment actions Permalink

By the way, do you really need clean checkout enabled? That may significantly impact build performance.
Build Files Cleaner is alternate, much faster approach to keep working copies in sync.

0
Comment actions Permalink

Thank you for your help.

It seems that my project is failing at step 2 which is to deploy the project to heroku. This is the error I am getting:

Step 2/2: Deploy to Heroku (Command Line)
[00:02:14]: [Step 2/2] Environment variable 'GEM_PATH' has predefined value '~/.rvm/gems/ruby-1.9.2-p290@project:/home/teamcity/.rvm/gems/ruby-1.9.2-p290@global'. It may affect runtime build behaviour because TeamCity Ruby support wont override it.
[00:02:14]: [Step 2/2] Environment variable 'GEM_HOME' has predefined value '~/.rvm/gems/ruby-1.9.2-p290@ project'. It may affect runtime build behaviour because TeamCity Ruby support wont override it.
[00:02:14]: [Step 2/2] Environment variable 'BUNDLE_PATH' has predefined value '~/.rvm/gems/ruby-1.9.2-p290@ project'. It may affect runtime build behaviour because TeamCity Ruby support wont override it.
[00:02:14]: [Step 2/2] Starting: git push git@heroku.com: project.git master
[00:02:14]: [Step 2/2] in directory: /home/teamcity/TeamCity/buildAgent/work/c5d161aeb8cf26ed
[00:02:15]: [Step 2/2] Host key verification failed.
[00:02:15]: [Step 2/2] fatal: The remote end hung up unexpectedly
[00:02:15]: [Step 2/2] Process exited with code 128
[00:02:15]: [Step 2/2] Step Deploy to Heroku (Command Line) failed
[00:02:15]: Publishing internal artifacts
[00:02:15]: [Publishing internal artifacts] Sending build.finish.properties.gz file
[00:02:15]: Build finished

I have tried this same git push command from terminal even in the folder the project is in and it works there but for some reason teamcity fails. I believe I have my keys set up properly and yes my public key has been added to heroku. This is what my ssh config file looks like:
# Heroku for project
Host heroku.com
HostName heroku.com
#ForwardAgent yes
IdentitiesOnly yes
IdentityFile /home/teamcity/.ssh/teamcity_project_rsa

Any ideas or suggestions?

Thank you for your help
0
Comment actions Permalink

Is your build agent started under the same user account? It may look for SSH keys in another profile.

0
Comment actions Permalink

I don't think so. My user account is "teamcity" and build agent is the default one.

0

Please sign in to leave a comment.