Search code examples
travis-cissh-keys

Can't find SSH keys settings under travis project settings


My CI project is dependent on another private repo. So I refer to the document to upload the private key using

➜ travis sshkey --upload ~/.ssh/id_travis_rsa --pro
Updating ssh key for Jeff-Tian/uni-sso with key from /Users/tianjef/.ssh/id_travis_rsa

Current SSH key: key for clone k8s-config
Finger print:    65:25:66:26:4d:5d:9f:ac:25:ba:ea:be:c4:d5:e3:5f

From the above I double checked the finger print, and compares to the github ssh keys:

enter image description here

They are matched.

However, the travis build still fails by:

(https://travis-ci.com/github/Jeff-Tian/uni-sso/builds/161350192)

$ git clone git@github.com:Jeff-Tian/k8s-config.git ${HOME}/k8s-config
Cloning into '/home/travis/k8s-config'...
Warning: Permanently added the RSA host key for IP address '140.82.114.4' to the list of known hosts.
Permission denied (publickey).
fatal: Could not read from remote repository.
Please make sure you have the correct access rights
and the repository exists.
The command "git clone git@github.com:Jeff-Tian/k8s-config.git ${HOME}/k8s-config" failed and exited with 128 during .

And then I check the settings on travis settings, can't find the ssh keys settings pane:

enter image description here

Help:

Where goes wrong? Is it a Travis CI bug?


Solution

  • Seems the ssh keys config is only available for private repos.

    The issue here is the main repo is public, but when deploy it, a private repo need to be downloaded. This scenario is not covered by the official document.

    The workaround is to switch copying the private repo via https instead of ssh, so no need to upload the ssh keys.

    By setting up the GH_TOKEN in the setting, and then write that token to .netrc file. Then copy the private repo using https is working:

    .travis.yml:

      - echo -e "machine github.com\n  login $GH_TOKEN" > ~/.netrc
      - git clone https://github.com/Jeff-Tian/k8s-config.git ${HOME}/k8s-config