Могу ли я разместить свой сайт через gitlab, как вы можете на страницах github?

20

Я хотел бы использовать git для размещения своего веб-сайта и хотел бы иметь платформу, на которую я могу войти онлайн, чтобы присоединиться к ней (что-то вроде Github). В таком случае вы могли бы подумать, что страницы Github будут для меня идеальным маршрутом, хотя я не хочу использовать страницы Github. Я хотел бы разместить все это на своих собственных серверах, как вы делаете с Github Enterprise (но бесплатно).

Я нашел Gitlab, и мне было интересно, могу ли я использовать Gitlab как страницы Github. Является ли это возможным?

Бен Уоткинс
источник
Под gitlab-подобным вы подразумеваете уценку GitLab и способность обновлять веб-сайт, просто нажимая на git-репо?
Фопс
Я имею в виду, что мой сайт автоматически обновляется при внесении изменений в репозиторий gitlab, так что да.
Бен Уоткинс
1
GitHub Pages просто использует Jekyll . Так что установите этот веб-сервер, который обслуживает статические страницы, и, возможно, добавьте несколько хитростей для автоматического развертывания загружаемого контента, и вы в основном сделали.
Ajedi32
Привет, @ Ajedi32. Проблема этого подхода в том, что для каждого нового проекта у вас есть git-репо и настройка веб-сервера. Со страницами GitHub это просто еще одна ветка, которую вы продвигаете.
Fiorix
@fiorix Да, если вы хотите автоматизировать вещи до такой степени, вам, вероятно, понадобится более сложное решение. Тем не менее, все еще выполнимо, вам просто нужно каким-то образом подключиться к системе создания проекта GitLab (хотя я не знаю, как именно, мое предположение - самый простой способ, вероятно, включающий наблюдение за файловой системой или, возможно, некоторые вызовы API GitLab).
Ajedi32

Ответы:

18

Хорошие новости!

С 8.3 (декабрь 2015) GitLab имеет "GitLab Pages". https://about.gitlab.com/2015/12/22/gitlab-8-3-released/

Эта функция доступна на GitLab.com (где работает EE), где вы можете иметь бесплатные, неограниченные репозитории, публичные / приватные.

Вот документация для GitLab Pages, объясняющая, как вы можете бесплатно размещать статические веб-сайты на GitLab. http://doc.gitlab.com/ee/pages/README.html

вереск
источник
5

Я не совсем уверен, что вы спрашиваете. Вы говорите, что хотите разместить на своем собственном сервере, но ваш вопрос говорит, что вы хотите разместить как страницы gitlab, которые не являются вашим собственным сервером.

В любом случае, может быть, это поможет

Это то чем я занимаюсь

на локальном ПК

mkdir folderforwebsite
cd folderforwebsite
git init
echo "hello world" > index.html
git add index.html
git commit -m "initial commit"

У меня сейчас есть репо локально. Скопируйте его на сервер

scp -r ../folderforwebsite username@mydomain.com:/path/from/root/to/webfolder

Теперь у меня есть это на удаленном сервере.

ssh name@mydomain.com 'cd path/to/webfolder; git checkout -b live`

Теперь на сайте есть как главная, так и живая ветка. Я делаю это с AFAICT, вы не можете нажать на текущую ветку. Итак, теперь у нас есть «живая» ветвь, которая является текущей на удаленном компьютере, и «главная» ветвь, которая не является

Наконец добавьте пульт в мой локальный репо

git remote add web ssh://name@mydomain.com/path/from/root/to/webfolder

Теперь, в любое время, когда я хочу обновить веб-сайт, я проверяю материал в своей локальной ветке master и затем запускаю этот скрипт.

#!/bin/sh
set -e
set -v
git push web master
ssh username@mydomain.com git merge --ff-only master

The git pushтолкает мои изменения в ветке, не являющейся текущей на веб-сервере. В sshто регистрируется на веб - сервер и быстро пересылает изменения в «мастер» к текущей ветви. В данном случае «живая» ветка.

--ff-only говорит сбой, если есть изменения на сервере.

Если на сервере есть изменения, я могу вытащить их в свой локальный мастер с

git pull web live

На больше вещь. Прежде чем сделать что-либо из этого, я устанавливаю ключи SSH на удаленном сервере, поэтому мне не нужно вводить пароли

Это не имеет абсолютно никакого отношения к github или gitlab. Я мог бы также внести туда свои изменения, но они не связаны.

GMan
источник
2

После небольшого поиска различных вопросов в Google я нашел способ. Это может быть не самый лучший способ и может быть слишком сложным, но это должно работать, и это главное. Хотя, если вы знаете лучший способ или можете найти его, пожалуйста, дайте мне знать!

Я обнаружил, что вы можете развернуть свой код на своих серверах через хиты Git. Все, что вам нужно сделать, это использовать SSH на вашем сервере, создать git-репо, а затем настроить хук для отправки коммитов в это репо. Это позволит вам отправить ваши коммиты на ваши серверы, но на данный момент не имеет ничего общего с gitlab.

Следующим шагом является добавление push-ссылки для gitlab на тот же пульт. Таким образом, вы будете подталкивать и к gitlab, и к самому сайту каждый раз. В результате оба репозитория gitlab и фактический сайт будут синхронизированы. Хотя это взлом и определенно неэффективно.

Я узнал, как развернуть ваш код на ваших серверах через git из этого поста в блоге: http://sebduggan.com/blog/deploy-your-website-changes-using-git/

Я обнаружил, что вы можете добавить два push-адреса для своих пультов в git из этого вопроса по stackoverflow: /programming/14290113/git-pushing-code-to-two-remotes

Как я уже сказал, если вы можете найти лучший способ, пожалуйста, дайте мне знать. Это будет работать, но это означает наличие двух версий одного и того же кода. Конечно, это очень грязно и является большой тратой памяти вашего сервера.

Бен Уоткинс
источник
1

В настоящее время лучшее, что вы можете сделать, - это использовать GitLab CI для передачи на статический сервер, такой как Amazon S3.

Если вы можете выполнить развертывание с помощью Git, следующий (нерешенный) вопрос относится к тому, как это сделать с помощью gitlab: /programming/14288288/gitlab-repository-mirroring

Для этого есть специальный запрос на трекере: http://feedback.gitlab.com/forums/176466-general/suggestions/5599145-preview-render-static-html-pages-pressed-to-repos

Ciro Santilli 新疆 改造 中心 法轮功 六四 事件
источник