/ Align = "left" / Spacewatch
Próbuję użyć grunt-gh-pages rozszerzenia do commit do mojej gałęzi gh. Działa dobrze lokalnie, ale kiedy używam TRAVIS-CI to nie działa. Wyświetla następujący komunikat o błędzie -
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.
I po aktualizacji opcji repo dostaję następujący błąd -
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.
Więc w zasadzie chcę, żeby Travis-ci zatwierdził pliki w gałęzi gh-pages mojego repo. Jest na to sposób?
Update The final .travis.yml
that solved the problem
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"}
2 answers
Z pewnością możesz! Pierwszy problem, jak odkryłeś, jest spowodowany użyciem adresu URL git://
, ale protokół git może być używany tylko do klonowania repozytoriów.
Jeśli chodzi o błąd" anonymous access denied", to dlatego, że musisz pozwolić Travisowi zalogować się na swoje konto GitHub, aby przejść do repozytorium. Prawdopodobnie nie chcesz podawać Travisowi swojego hasła do Githuba i na pewno nie musisz. Zamiast tego użyjemy tokenów OAuth. Jeśli nie masz pojęcia co to to znaczy, nie martw się, wyjaśnię. Token OAuth w większości przypadków działa jak hasło, ale łatwiej jest odwołać dostęp do pojedynczych rzeczy.
Aby wygenerować token OAuth, przejdź do strony ustawień aplikacji GitHub i kliknij "Utwórz nowy token" w obszarze "osobisty Token dostępu API". Prawdopodobnie chcesz dodać notatkę o tym, co to jest, w ten sposób łatwiej jest śledzić i łatwiej odwołać, jeśli zajdzie taka potrzeba w przyszłości. Należy pamiętać, że ten token jest zasadniczo hasłem, ponieważ daje dostęp do tych samych rzeczy, co hasło.
Następnie musisz dodać token do swojego .travis.plik yml. Najpierw zaszyfrujemy token, żeby tylko Travis mógł go zobaczyć. Do tego potrzebny jest travis
Rubygem zainstalowany: gem install travis
.
travis encrypt GH_TOKEN="the-token-from-github" --add
Twój .travis.yml powinien teraz wyglądać mniej więcej tak:
…
env:
global:
- secure: "lots-of-seemingly-random-characters"
…
Aby Travis mógł użyć tego żetonu, musisz dodać kilka rzeczy do swojego .travis.yml też.
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
Ten pierwszy mówi gitowi, aby szukał dane uwierzytelniające w pliku .git/credentials
. To może być każdy plik, który chcesz, naprawdę, ale upewnij się, że nie jest to plik, który zamierzasz wysłać na GitHub. Następnie dodajemy token do pliku .git/credentials
. Git wie teraz, że dla wypychania do https://github.com
, może użyć Twojego tokena do uwierzytelnienia.
Powinieneś być gotowy!
PS: Jeśli chcesz wcisnąć GitHub tylko wtedy, gdy budowa przejdzie, możesz zmienić after_script
na after_success
.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-08-03 04:33:55
Odpowiedź henrikhodne jest świetna, ale rozwiązanie nie działa z grunt-gh-pages ponieważ tworzy kolejne repozytorium Git gdzieś w .grunt/grunt-gh-pages/
podkatalogu. Dlatego git config
wykonane w sekcji after_script
lub after_success
nie jest używane przez grunt-gh-pages.
Możliwe jest dodanie GH_TOKEN
do repozytorium URL używanego przez grunt-gh-pages w Gruntfile.js
w następujący sposób:
'gh-pages': {
// your common gh-pages config
travis: {
options: {
repo: 'https://' + process.env.GH_TOKEN + '@github.com/dim2man/csbrowser.git',
silent: true
},
src: ['**']
}
}
Zwróć uwagę na opcję silent: true
, która uniemożliwia publikowanie wartości tokenu w logach Travis.
Then your after_script
lub after_success
sekcję można modyfikować następująco:
after_success: grunt gh-pages:travis
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 12:18:18