How to view code deployed on Heroku? - heroku

I have deployed my REST based java application on Heroku.
Everything is working fine. However I can see code on heroku dashboard as other developers working with me also want to collaborate.
Do they need to clone .git repository given in settings page of application.
Please help how to do this ?
And how to push code to bitbucket so my code doesn't get vanished?

When you create application on Heroku it automatically gets Git repo - it's a normal repo so you colleagues can just clone it (if they're added as contributors) as you said.
To push code to bitbucket, create repo there and add it as a remote to your local git configuration. Then just push to heroku remote and bitbucket remote at will. For automated solution you can consider Github Integration: https://devcenter.heroku.com/articles/github-integration

Related

Setting up continues Integration on TFS with GitLab as Repo

I need to configure CI pipeline in my TFS with source repo in GitLab, I have updated the Trigger section as below and checked in the code, but the build was not triggered, is there any configuration required in the GitLab repo? Please advice hot to achieve this.
I would troubleshoot your problem by checking the following in this order:
when triggering the build manually, does the source code downloading from the GitLab repository successfully work?
if yes, then:
did you created and pushed the develop branch on the repository?
You need to publish your locally created 'develop' branch on the remote repository, e.g. >git push -u origin develop
if no, then there are issues on the "Services" entry you created on TFS for accessing your GitLab repository:
check whether you are using HTTPS in the URL;
to enable HTTPS access to your repository, remember to set a password on your GitLab account, then use that password along with your username (email address) on the "Services" endpoint set up on TFS;
p.s. also, check which 'Connection' is selected in the Repository section of your build definition: it should be the one pointing to your GitLab repo :-)
I have changed the Poling interval to 180 seconds and it worked.

API Management with GIT and Octopus - Git PUSH / Git PULL

Following on from this post of mine:
API Management with GIT
I have an API management instance running. I know API management has its own GIT repository.
I can successfully clone, change and push changes up to my API management GIT repository.
I am also running Octopus deploy and am trying to use this:
Git Push
and this:
Git Pull
To pull my code from my companies GIT repository and push to the APIM GIT repository.
The thing is, these to plugins fail immediately with an issue not being able to find file paths on the Octopus server. Also, these were written in 2014.
Is there a recommended better way to pull from your companies repo and push to APIM repository? Also, if I am pulling to Octopus, where does the code get stored before it is pushed to APIM?
In the end, I think this plug in is out of date. I ended up writing my own PowerShell GIT bash and it works a treat.
I get the APIM json code from my companies source control then push it ti the APIM GIT repository and publish it using PowerShell.
For anyone who has this issue in the future.
The cause is most likely you are trying to use the GitPull step from the octopus server, while the code behind the step makes reference to this parameter $OctopusParameters['Octopus.Tentacle.Agent.ApplicationDirectoryPath'].
This parameter seems to return an empty value. I have not tried running from a Deployment Target.
The git clone directory could be another parameter/variable specified
I am raising this with the Octopus team.

How to prevent git push heroku master?

My workflow encompasses the following steps:
Git push (to BitBucket or GitHub depending on the project).
BitBucket/GitHub is integrated with CodeShip, tests are run.
If tests are ok, CodeShip automatically deploys to Heroku.
Everything works fine when, by pushing to the remote repo, the deployment tasks are triggered which ends up with the new version going live when everything is ok.
My question is:
Sometimes, I simply do a git push heroku master which defeats the whole purpose of this workflow.
How can I prevent it from happening? Is there a way to make Heroku only accept the deploy when the source is CodeShip?
After looking around for quite some time, I noticed that there are a some ways to accomplish this, all of them related to simply not giving access to the Heroku Account for the developer:
If you're a single developer ("one-man / one-woman show"):
Do not add the Heroku Remote to your Git Repository. If it is already added, remove it. That way you're not going to push to it by mistake.
If you're managing a team:
Do not give the team a user/pass to access Heroku Toolbelt. That way, the only remote repo they will have access to should be GitHub/BitBucket/Whatever.
You could just create another branch called dev and push to that branch your changes and when you are ready to deploy to heroku merge changes into master branch.
I just came accross your issue and this is what i did as quickest resolution

Heroku-Github Auto Deploy from non-master (only see master branch)

[FYI - I am not looking to upgrade our Heroku account to Enterprise to take advantage of app grouping. We are a small team]
I am a collaborator on a heroku app. I was tasked with setting up dev-staging-production environments for the app and I am getting confused on how to setup Auto Deploy correctly with the GitHub-Heroku integration guide. I have been already given admin access to the original git repo.
From the 'owner' account on the production app I created two separate apps (dev and staging).
Now, I have 3 apps that I am a collaborator of:
(1) app.domain.com
(2) app-dev.domain.com
(3) app-staging.domain.com
I have created 3 remotes pointing to the 3 generated heroku-git repos:
live
dev
staging
I can push to the 3 Heroku apps easily by:
git push live master
git push dev master
git push staging master
BUT I want to setup auto-deploy for dev-staging apps.
I have pushed an "auto" branch onto dev and staging remote. My intention is for Heroku to detect pushes to that branch and "auto" deploy the code. But, heroku only detects pushes to "master" branch afaik.
git push dev release auto
git push staging release auto
But when I go to administer the Heroku dev-staging apps I only see the "master" branch in the Auto-deploy section. Shouldn't I also see the "auto" branch? Is the reason I am not seeing it because I didn't push auto as a remote branch on the ORIGINAL git repo? In which case, how do I structure this stuff as code lives in 2 separate environments (Heroku repo and GitHub repo)?
Ultimately, the plan is to setup some form of Continuous Integration and get tests run before releases happen across the dev-staging-production zones.
Am I overthinking this or is there a better way to get this stuff working? Appreciate it!
Heroku only tracks changes on the remote master Branch.
https://devcenter.heroku.com/articles/git#deploying-from-a-branch-besides-master
To push your dev branch to the Heroku master remote branch:
git push dev release:master
You may need to use the -f flag to force push (be careful!)
I think auto deploy on Heroku works only on default branch (usually named master), and you probably want to look into Heroku feature called pipelines. I've not used it myself yet and it's in beta stage, but it sounds like exactly what you're looking for. Not sure if I read it right, but it sounds like you created 3 individual projects, instead of branches in 1 project? How do you manage moving changes from one stage to another?
As for the CI setup I guess it depends on the kind of testing you're doing and the workflow. I'm in the middle of creating such process in my workplace, and what I will be proposing is as follows:
Devs develop and test on their local machines on feature branches before commiting and merging onto DEV branch
Commiting or merging onto the DEV branch triggers CI server, runs the build and perform PHPUnit and Behat tests
Successful build is being deployed to a server (possibly Heroku or any hosting provider that will support automated deployments) for QA.
Once tested and approved we can move the code onto STAGING branch repeat CI proccess and on success move to MASTER and go live.
We're using gilab.com to host our project and perform tests (CI server is included as standard even with free account), deploy dev and staging state for QA to Heroku, and finally host live version with a dedicated enterprise level provider.

Deploy different apps (not different versions of the same app) to heroku using one github repository

I would like to host multiple apps: a UI app and backend / services app in one github repository and deploy each as a separate app to Heroku. Typically I create one github repo for each app. So in this case I would have a github repo for UI and another github repo for the svcs. Given that I follow the normal github / heroku deploy workflow.
Its certainly easier to create one repo for each deployable web app. But wanted to know if Has anyone done this?
Thanks in advance for any advice
TL;DR
Heroku only runs whatever is stored in its master branch, and ignores all others. You'd be better off using separate repositories, or creating a super-project for local use and pushing individual git submodules to each Heroku app separately.
If you decide to ignore best practices...
You could potentially do this by pushing alternate branches to each Heroku app's master branch. For example, you could have a UI app in one branch, and an API app in another branch. Just change to whatever branch you want to push, and then:
heroku git:remote -a appname -r ui
heroku git:remote -a appname -r api
# push the ui branch to the ui remote's master branch
git checkout ui
git push ui ui:master
# push the api branch to the api remote's master branch
git checkout api
git push api api:master
You can find additional details here.

Resources