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 "[email protected]"
- 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"}
あなたは確かにできます!あなたが発見したように、最初の問題はプッシュ先にgit://
URLを使用することによるものですが、gitプロトコルはリポジトリのクローンを作成するためにのみ使用できます。
「匿名アクセスが拒否されました」エラーについては、リポジトリにプッシュするためにTravisにGitHubアカウントへのログインを許可する必要があるためです。さて、あなたはおそらくTravisにGitHubパスワードを与えたくないでしょう、そしてあなたは確かにそうする必要はありません。代わりに、OAuthトークンを使用します。それが何を意味するのかわからない場合でも、心配しないでください。説明します。OAuthトークンほとんどの場合、パスワードのように機能しますが、単一のものへのアクセスを取り消す方が簡単です。
OAuthトークンを生成するには、 GitHubアプリケーション設定ページ に移動し、[Personal API AccessToken]の下の[Createnewtoken]をクリックします。おそらく追加する必要があります。これが何であるかに注意してください。そうすれば、追跡しやすくなり、将来必要になった場合に取り消すことが容易になります。このトークンは、パスワードと同じものにアクセスできるという点で、本質的にパスワードであることに注意してください。
次に、トークンを.travis.ymlファイルに追加する必要があります。まず、トークンを暗号化して、Travisだけがトークンを表示できるようにします。このためには、travis
Rubygemがインストールされている必要があります: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
に変更できます。
henrikhodne による答えは素晴らしいですが、.grunt/grunt-gh-pages/
サブディレクトリのどこかに別のGitリポジトリが作成されるため、ソリューションは grunt-gh-pages では機能しません。 。したがって、git config
またはafter_script
セクションで作成されたafter_success
は、grunt-gh-pagesでは使用されません。
次のように、GH_TOKEN
のgrunt-gh-pagesが使用するリポジトリURLにGruntfile.js
を追加することができます。
'gh-pages': {
// your common gh-pages config
travis: {
options: {
repo: 'https://' + process.env.GH_TOKEN + '@github.com/dim2man/csbrowser.git',
silent: true
},
src: ['**']
}
}
silent: true
オプションに注意してください。これにより、トークン値がTravisログに公開されなくなります。
次に、after_script
またはafter_success
セクションを次のように変更できます。
after_success: grunt gh-pages:travis