Совершать через travis ci fail
Я пытаюсь использовать расширение grunt-gh-pages для фиксации в моей gh-ветке. Это работает хорошо локально, но когда я использую 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"}
2 ответа
Вы, конечно, можете! Первая проблема, как вы обнаружили, связана с использованием git://
URL для отправки, но протокол git может использоваться только для клонирования репозиториев.
Что касается ошибки "анонимный доступ запрещен", то это потому, что вам нужно разрешить Travis войти в свою учетную запись GitHub, чтобы перейти в хранилище. Теперь вы, вероятно, не хотите давать Трэвису свой пароль на GitHub, и вам, конечно, нет необходимости. Вместо этого мы собираемся использовать токены OAuth. Если вы не знаете, что это значит, не волнуйтесь, я объясню. Токен OAuth в большинстве случаев работает как пароль, но проще отозвать доступ к отдельным вещам.
Чтобы сгенерировать токен OAuth, перейдите на страницу настроек приложений GitHub и нажмите "Создать новый токен" в разделе "Персональный токен доступа API". Вы, вероятно, захотите добавить примечание о том, что это такое, так что его легче отследить и легче отозвать, если вам это понадобится в будущем. Обратите внимание, что этот токен по сути является паролем, поскольку он дает доступ к тем же действиям, что и пароль.
Затем вам нужно добавить токен в ваш файл.travis.yml. Сначала мы зашифруем токен, чтобы его мог видеть только Трэвис. Для этого вам нужно 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.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-gh-pages, потому что оно создает другой Git-репозиторий где-то в .grunt/grunt-gh-pages/
подкаталог. Следовательно git config
сделано в after_script
или же after_success
раздел не используется grunt-gh-pages.
Можно добавить GH_TOKEN
URL хранилища, используемый grunt-gh-pages в 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