- PVSM.RU - https://www.pvsm.ru -
Есть приложение, сгенерированное с помощью create-react-app
. Нужно развернуть его на github.io.
Проблемой является то, что Github Pages работает только со статическим кодом и Jekyll.
Разумеется, нам достаточно просто скомпилировать приложение где-нибудь в другом месте и уже потом выкладывать на github.io
Для этой задачи идеально подошел Travis CI, т.к. как выяснилось, у него есть возможность деплоя на гитхаб из коробки (не нужно изгаляться и писать сложные скрипты для этого).
Я завел два репозитория:
yarn build
)git rm -r .
— это удалит все файлы (кэп).cp -r build/ ../compiled-app
)git add .
git commit
git push
language: node_js
node_js:
- '9.11'
cache:
directories:
- "node_modules"
script:
- yarn test
- yarn build
- echo my-custom-domain.ru > build/CNAME
deploy:
provider: pages
github-token: $GITHUB_TOKEN # Set in the settings page of your repository, as a secure variable
committer-from-gh: true
skip-cleanup: true
keep-history: true
local-dir: build
repo: Yourname/compiled-app
target-branch: master
on:
branch: master
Пояснения:
github-token
— его нужно сгенерировать в настройках гитхаба. Подробнее здесь [1]. Переменную окружения нужно задать в настройках проекта на travis-ci.comkeep-history
— без этой опции репозиторий по сути будет создаваться каждый раз заново (push -f) и отследить историю будет невозможно. С ним же все будет покоммитно (примерно как я описал это в разделе "ручной деплой").local-dir
— после того, как билд отработал, тревису нужно знать, что именно сохранять в репозиторий. Без этой опции он сохранит весь текущий код, а с ней — определенную папку. Сохранять полностью проект может быть полезно, если вы не хотите использовать два репозитория, как я, а использовать папку docs/
или отдельную ветку, не связанную с кодом.repo
— это именно та опция, которая позволяет деплой в другой репозиторий. Не забывайте указывать владельца.target-branch
— в какую ветку именно должен происходить пуш. По-умолчанию gh-pages
, я использую master, т.к. у меня это отдельный репозиторий.Лично я столкнулся только с одной проблемой.
Если не используется custom domain, то сайт будет находиться по адресу yourname.github.io/projectname
, и тем самым у меня ломались абсолютные пути (например, /favicon.ico
). Я не стал думать над решением, т.к. у меня используется отдельный домен.
Я обожаю github.io и давно хотел поковырять, можно ли туда деплоить компилируемые сайты кроме Jekyll. Было очень приятно обнаружить, что в travis-ci об этом уже подумали.
Еще я сегодня подумал, что возможно лучше было бы не создавать отдельный репозиторий, а просто использовать отдельную ветку. Чтобы не засорять мой список репозиториев, который и так наполнен всяким мусором. Ну, как говорится, c'est la vie
Я играю в игру Heroes of the Storm и хотел сделать небольшое приложение, которое упростило бы для меня выбор персонажа во время драфта. Если короче: фильтр героев по их особенностям.
Вот основной репозиторий: https://github.com/Nondv/storm-picker [4].
Репозиторий со скомпилированным кодом: https://github.com/Nondv/storm-picker-compiled [5]
Автор: Дмитрий Нон
Источник [6]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/javascript/281101
Ссылки в тексте:
[1] здесь: https://help.github.com/articles/creating-a-personal-access-token-for-the-command-line/
[2] Getting started with Travis CI: https://docs.travis-ci.com/user/getting-started/
[3] Деплой на github: https://docs.travis-ci.com/user/deployment/pages/
[4] https://github.com/Nondv/storm-picker: https://github.com/Nondv/storm-picker
[5] https://github.com/Nondv/storm-picker-compiled: https://github.com/Nondv/storm-picker-compiled
[6] Источник: https://habr.com/post/359368/?utm_source=habrahabr&utm_medium=rss&utm_campaign=359368
Нажмите здесь для печати.