Совершать через 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
Другие вопросы по тегам