Bisakah saya meng-host situs web saya melalui gitlab seperti Anda bisa dengan halaman github?


20

Saya ingin menggunakan git untuk meng-host situs web saya, dan akan menyukai platform yang bisa saya masuki secara online untuk mengikutinya (sesuatu seperti Github). Anda akan berpikir dalam hal ini, bahwa halaman Github akan menjadi rute yang sempurna bagi saya, meskipun saya tidak ingin menggunakan halaman Github. Saya ingin meng-host semua ini di server saya sendiri seperti yang Anda lakukan dengan Github enterprise (tetapi gratis).

Saya telah menemukan Gitlab dan bertanya-tanya apakah ada yang bisa saya gunakan Gitlab seperti halaman Github. Apa itu mungkin?


Maksudnya gitlab maksud Anda adalah penurunan harga dan kemampuan GitLab untuk memperbarui situs web hanya dengan mendorong repo git?
phoops

Maksud saya memiliki situs web saya diperbarui secara otomatis ketika saya membuat perubahan dalam repo gitlab, jadi ya.
Ben Watkins

1
GitHub Pages hanya menggunakan Jekyll . Jadi instal server web yang melayani halaman statis, dan mungkin melemparkan beberapa kait git untuk penyebaran otomatis konten yang didorong, dan Anda pada dasarnya sudah selesai.
Ajedi32

Hai @ Ajedi32 masalah dengan pendekatan ini adalah bahwa untuk setiap proyek baru Anda memiliki repo git dan pengaturan server web. Dengan halaman GitHub, hanya cabang lain yang Anda dorong.
fiorix

@fixix Ya, jika Anda ingin mengotomatiskan hal-hal ke tingkat itu Anda mungkin perlu solusi yang agak lebih kompleks. Namun masih bisa dilakukan, Anda hanya perlu menghubungkan ke sistem pembuatan proyek GitLab entah bagaimana (meskipun saya tidak tahu bagaimana tepatnya, tebakan saya adalah cara paling sederhana mungkin melibatkan menonton sistem file, atau mungkin beberapa panggilan ke API GitLab).
Ajedi32

Jawaban:



5

Saya tidak begitu yakin apa yang Anda minta. Anda mengatakan Anda ingin meng-host di server Anda sendiri tetapi pertanyaan Anda mengatakan Anda ingin meng-host seperti halaman gitlab yang bukan server Anda sendiri.

Bagaimanapun mungkin ini akan membantu

Inilah yang saya lakukan

di pc lokal

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

Saya sekarang memiliki repo lokal. Salin ke server

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

Sekarang saya memilikinya di server jarak jauh.

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

Sekarang ada cabang master dan live di situs web. Saya melakukan ini karena AFAICT Anda tidak dapat mendorong ke cabang saat ini. Jadi sekarang kita memiliki cabang "hidup" yang saat ini ada di remote dan cabang "master" yang tidak

Akhirnya tambahkan remote ke repo lokal saya

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

Sekarang, kapan saja saya ingin memperbarui situs web saya memeriksa barang-barang ke cabang master lokal saya dan kemudian menjalankan skrip ini

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

The git pushmendorong perubahan saya ke cabang non-saat ini pada webserver. The sshkemudian log ke webserver dan cepat-depan perubahan dalam "master" untuk cabang saat ini. Dalam hal ini cabang "hidup".

--ff-only dikatakan gagal jika ada perubahan pada server.

Jika ada perubahan pada server saya dapat menariknya ke master lokal saya dengan

git pull web live

Lebih banyak hal. Sebelum saya melakukan semua ini, saya mengatur kunci SSH pada server jauh sehingga saya tidak perlu mengetikkan kata sandi

Ini sama sekali tidak ada koneksi ke github atau gitlab. Saya mungkin mendorong perubahan saya di sana juga, tetapi mereka tidak terhubung.



2

Dengan sedikit mencari berbagai pertanyaan di Google, saya menemukan jalan. Ini mungkin bukan cara terbaik dan mungkin terlalu rumit, tetapi itu harus bekerja dan itulah yang utama. Padahal, jika Anda tahu cara yang lebih baik atau dapat menemukannya, tolong beri tahu saya!

Saya menemukan bahwa Anda dapat menggunakan kode Anda ke server Anda melalui kait Git. Yang perlu Anda lakukan adalah SSH ke server Anda, buat git repo dan kemudian atur hook untuk mendorong komit ke repo ini. Ini akan memungkinkan Anda untuk mendorong komit ke server Anda, tetapi tidak ada hubungannya dengan gitlab pada saat ini.

Langkah selanjutnya adalah menambahkan url push untuk gitlab ke remote yang sama. Dengan cara ini, Anda akan mendorong gitlab dan situs itu sendiri setiap kali. Hasilnya, repo gitlab dan situs yang sebenarnya akan sama-sama sinkron. Padahal ini adalah peretasan dan jelas tidak efisien.

Saya menemukan cara menyebarkan kode Anda ke server Anda melalui git dari posting blog ini: http://sebduggan.com/blog/deploy-your-website-changes-using-git/

Saya menemukan bahwa Anda dapat menambahkan dua url push ke remote Anda di git dari pertanyaan ini di stackoverflow: /programming/14290113/git-pushing-code-to-two-remotes

Seperti yang saya katakan, jika Anda dapat menemukan cara yang lebih baik, tolong beri tahu saya. Ini akan berfungsi, tetapi itu berarti memiliki dua versi dari kode yang sama. Tentu saja, ini sangat berantakan dan merupakan pemborosan besar penyimpanan server Anda.


1

Saat ini, yang terbaik yang dapat Anda lakukan adalah dengan GitLab CI untuk mendorong ke server statis seperti Amazon S3.

Jika Anda dapat menggunakan dengan Git, pertanyaan (belum terpecahkan) berikut ini khusus untuk melakukannya dengan gitlab: /programming/14288288/gitlab-repository-mirroring

Ada permintaan khusus untuk itu di fitur pelacak: http://feedback.gitlab.com/forums/176466-general/suggestions/5599145-preview-render-static-html-pages-pushed-to-repos

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.