30

grunt-gh-pages拡張機能を使用して、gh-branch にコミットしようとしています。ローカルでは正常に動作しますが、TRAVIS-CI を使用すると失敗します。次のエラーメッセージが表示されます-

Warning: fatal: remote error: 
  You can't push to git://github.com/tusharmath/tusharm.com.git
  Use https://github.com/tusharmath/tusharm.com.git
 Use --force to continue.

そして、レポオプションを更新すると、次のエラーが発生します-

Warning: remote: Anonymous access to tusharmath/tusharm.com.git denied.
fatal: Authentication failed for 'https://github.com/tusharmath/tusharm.com.git/'
 Use --force to continue.
Aborted due to warnings.

したがって、基本的には、Travis-ci に私のレポの gh-pages ブランチにあるファイルをコミットしてもらいたいだけです。それを行う方法はありますか?

更新.travis.yml問題を解決したファイナル

language: node_js
node_js:
  - '0.11'
before_script:
  - git config --global user.email "tusharmath@gmail.com"
  - git config --global user.name "Travis-CI"
after_script:
  - git config credential.helper "store --file=.git/credentials"
  - echo "https://${GH_TOKEN}:@github.com" > .git/credentials
  - node ./node_modules/grunt-cli/bin/grunt release
env:
  global:
    secure: {"lots-of-seemingly-random-characters"}
4

2 に答える 2

40

あなたは確かにできます!最初の問題は、あなたが発見したように、git://URL を使用してプッシュすることによるものですが、git プロトコルはリポジトリのクローンにしか使用できません。

「匿名アクセスが拒否されました」というエラーについては、リポジトリにプッシュするために、Travis が GitHub アカウントにログインできるようにする必要があるためです。さて、おそらく Travis に GitHub のパスワードを教えたくないでしょうし、その必要もないでしょう。代わりに、OAuth トークンを使用します。意味が分からなくても、ご安心ください、説明します。ほとんどの場合、OAuth トークンはパスワードのように機能しますが、単一のものへのアクセスを取り消す方が簡単です。

OAuth トークンを生成するには、GitHub アプリケーションの設定ページに移動し、[Personal API Access Token] の下の [Create new token] をクリックします。これが何であるかについてのメモを追加することをお勧めします。そうすれば、追跡しやすくなり、将来必要になった場合に簡単に取り消すことができます。このトークンは、パスワードと同じことへのアクセスを提供するという点で、本質的にパスワードであることに注意してください。

次に、トークンを .travis.yml ファイルに追加する必要があります。まず、トークンを暗号化して、Travis だけがトークンを参照できるようにします。このためには、travisRubygem がインストールされている必要があります: gem install travis.

travis encrypt GH_TOKEN="the-token-from-github" --add

.travis.yml は次のようになります。

…
env:
  global:
    - secure: "lots-of-seemingly-random-characters"
…

ここで、Travis が実際にこのトークンを使用できるようにするには、.travis.yml にもいくつか追加する必要があります。

after_script:
  - git config credential.helper "store --file=.git/credentials"
  - echo "https://${GH_TOKEN}:@github.com" > .git/credentials
  - node ./node_modules/grunt-cli/bin/grunt release

これは最初に、ファイル内の資格情報を探すように git に指示し.git/credentialsます。これは、実際には任意のファイルにすることができますが、GitHub にプッシュするファイルではないことを確認してください。次に、トークンを.git/credentialsファイルに追加します。Git は、 へのプッシュのhttps://github.com場合、トークンを使用して認証できることを認識しています。

これで準備完了です。

PS: ビルドが成功した場合にのみ GitHub にプッシュしたい場合は、 に変更できafter_scriptますafter_success

于 2013-08-03T04:33:55.393 に答える