Подтвердить что ты не робот

Заключение через travis ci

Я пытаюсь использовать расширение 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 "[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"}
4b9b3361

Ответ 1

Вы, конечно же, можете! Первая проблема, как вы обнаружили, связана с использованием URL git:// для push, но протокол git может использоваться только для клонирования репозиториев.

Что касается ошибки анонимного доступа, это означает, что вы должны разрешить Travis войти в свою учетную запись GitHub, чтобы нажать на репозиторий. Теперь вы, вероятно, не хотите предоставлять Travis свой пароль 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 действительно использовал этот токен, вам нужно добавить еще кое-что в свой .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.

Ответ 2

Ответ henrikhodne велик, но решение не работает с grunt-gh-pages, поскольку он создает другой репозиторий Git где-то в подкаталоге .grunt/grunt-gh-pages/. Поэтому git config, сделанный в разделе after_script или after_success, не используется страницами grunt-gh.

Можно добавить GH_TOKEN в URL-адрес репозитория, используемый grunt-gh-страницами в 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