How to install a bower package using a private git server (SSH)?
GitSshBowerBower InstallGit Problem Overview
EDIT: this guy do exactly the same with success, can't figure out why it's not working for me.
I've just installed git
and setup permissions/SSH authentication with public/private key (Centos 6.5). I'm able to pull/push without problems using i.e.:
git clone [email protected]:projects/boilerplate-template
Username is git
, code placed in /home/git/projects
, repository created with git --init --shared boilerplate-template
.
How can I require boilerplate-template
with Bower in another project?
I've tried with the following bower.json file without luck:
{
"name": "my/newproject",
"dependencies": {
"boilerplate-template": "git://code.organization.com:projects/boilerplate-template"
}
}
> ECMDERR: Failed to execute "git ls-remote --tags --heads > git://code.organization.com:projects/boilerplate-template, exit code > 128 > unable to lookup code.organization.com (port project)...
Sadly it fails because :project
is not the port but the path. I've also tried with ssh://
instead of git://
:
> ENOTFOUND: Package > ssh://code.organization.com:projects/boilerplate-template not found.
Git Solutions
Solution 1 - Git
Ok, found the solution here: Using Bower as the Package Management tool for Internal, Private Libraries. Simply remove git://
or ssh://
and add .git
suffix:
"[email protected]:projects/boilerplate-template.git#~1"
Solution 2 - Git
Also, if you're using Github and Bower for a private repo you can create a .netrc
file if you need to run bower install
on a remote server.
e.g. You have a DO droplet and need to checkout a git repo that uses ssh keys, but needs to run bower install
with some deps that are private. If you add the .netrc
file to your remote machine you will be good to go for deploys/builds.
// .netrc where someToken is generated in Github under Personal access token
machine github.com
login userName
password someToken
Solution 3 - Git
I had trouble getting bower login
working, so I went with this approach. <TOKEN>
is generated here. It works for private repositories hosted on Github.
"dependencies": {
"your-package": "https://<TOKEN>:[email protected]/Account/Repository.git"
}
Solution 4 - Git
TeamCity had this issue for us when trying to download a private repo from GitHub. In case this helps anyone we solved it by using SSH and providing a GitHub Personal Access Token by running bower login
before bower install
:
Example dependency in bower.json:
"repository": "[email protected]:Account/Repository.git"
Commands to run within build script:
bower login -t {GitHub Personal Access Token}
bower install
Solution 5 - Git
go to https://github.com/settings/tokens, generate your token
bower login -t {your token}
bower install
Solution 6 - Git
As others have mentioned, setting the package location to:
"[email protected]:projects/yourproject.git"
Will allow bower to pull from a git repository.
If you get an SSH issue on Windows you can follow these steps:
- Download the PuTTY tools
- Use PuttyGen to generate a new key.
- Save the private key to your users .ssh folder as
anything.ppk
- Copy the text starting
ssh-rsa
in putty gen to the clipboard - Go to github and
Settings -> SSH keys -> Add SSH key
giving your key a title and pasting the text from PuttyGen in to the key portion - Add an environment variable named
GIT_SSH
with the value being the path to the Putty tool PLINK.exe e.g.C:\Program Files\Putty\PLINK.exe
- Run the Putty tool "Pageant.exe" then add your
anything.ppk
key to pageant (you can add a shortcut to your startup folder withC:\pathtopageant\pageant.exe C:\Users\myuser\.ssh\anything.ppk
to automatically add the key to pageant on startup) - Open
putty.exe
itself, enter your github enteprise hostname (code.organization.com in the above example), or "github.com" in the hostname textbox and click "Open". You will probably be prompted to trust the host, click yes to add it to your known_hosts file as bower is unable to do this on first run and would have just hung - Finally run
bower install
!
Solution 7 - Git
You might face this issue if you are cloning from a private repo as well. The accepted answer is correct, however I want to clarify this concern:
-
if you have github SSH access to your machine, go to the git repo and copy the "clone with SSH" link, then place it inside the bower.json file.
-
if you have https(login authentication) setup for github on your machine, copy the "clone with https" link, then place it inside the bower.json file. repository
Example: SSH link: [email protected]:Account/Repository.git HTTPS link: https://github.com/Account/Repository.git
Bower.json file:
"dependencies": { "repository": "paste SSH/HTTPS clone line here" }
Solution 8 - Git
I ended with following, although working only for private github repos.
-
Generate Github access token here and set it as environment variable
GITHUB_TOKEN
-
Define shorthand resolver in
.bowerrc
:"shorthand_resolver": "https://${GITHUB_TOKEN}@github.com/{{owner}}/{{package}}.git"
-
Now I can add my dependency as
bower install me/my-private-package
or list it inbower.json
:"dependencies": { "my-private-package": "me/my-private-package" }
Works also for Heroku builds.