github 페이지에서와 같이 gitlab을 통해 내 웹 사이트를 호스팅 할 수 있습니까?


20

나는 git을 사용하여 내 웹 사이트를 호스팅하고 온라인으로 로그인 할 수있는 플랫폼 (Github과 같은 것)을 좋아합니다. 어떤 경우에는 Github 페이지를 사용하고 싶지 않지만 Github 페이지가 나에게 완벽한 경로라고 생각할 것입니다. Github Enterprise와 마찬가지로 내 서버 에서이 모든 것을 호스팅하고 싶습니다 (무료).

나는 Gitlab을 발견했고 Github 페이지처럼 Gitlab을 사용할 수 있는지 궁금합니다. 가능합니까?


gitlab과 같은 것은 GitLab의 마크 다운과 git repo로 푸시하여 웹 사이트를 업데이트하는 능력을 의미합니까?
phoops

gitlab 저장소를 변경하면 웹 사이트가 자동으로 업데이트됩니다.
Ben Watkins

1
GitHub Pages는 Jekyll 만 사용합니다 . 따라서 정적 페이지를 제공하는 웹 서버를 설치하고 푸시 된 콘텐츠의 자동 배포를 위해 몇 가지 자식 후크를 넣을 수 있으며 기본적으로 완료됩니다.
Ajedi32

@ Ajedi32이 접근법의 문제점은 모든 새로운 프로젝트마다 git repo와 웹 서버 설정이 있다는 것입니다. GitHub 페이지를 사용하면 푸시하는 또 다른 지점입니다.
fiorix

@fiorix 그래, 그 정도까지 자동화하려면 다소 복잡한 솔루션이 필요할 것이다. 그래도 여전히 할 수는 있지만 어떻게 든 GitLab 프로젝트 생성 시스템에 연결해야합니다 (정확히 모르겠지만 파일 시스템을 보거나 GitLab API를 호출하는 것이 가장 간단한 방법이라고 생각합니다).
Ajedi32

답변:



5

나는 당신이 무엇을 요구하는지 잘 모르겠습니다. 당신은 당신이 당신의 자신의 서버에서 호스팅하고 싶다고 말하지만 당신의 질문은 당신이 당신의 자신의 서버가 아닌 gitlab 페이지처럼 호스팅하고 싶다고 말합니다.

어쨌든 이것이 도움이 될 것입니다.

이것이 제가하는 것입니다

로컬 PC에서

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

나는 지금 지역에 repo를 가지고있다. 서버에 복사

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

이제 원격 서버에 있습니다.

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

이제 웹 사이트에 마스터 및 라이브 지점이 있습니다. AFAICT 이후 현재 지점으로 푸시 할 수 없으므로이 작업을 수행합니다. 이제 우리는 원격지에 현재있는 "live"브랜치와 그렇지 않은 "master"브랜치가 있습니다.

마지막으로 로컬 리포지토리에 리모컨을 추가하십시오.

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

이제 웹 사이트를 업데이트하려고 할 때마다 로컬 마스터 브랜치를 확인한 다음이 스크립트를 실행하십시오.

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

git push변경 사항은 웹 서버의 비 현재 분기로 변경 사항을 푸시합니다. 그런 ssh다음 웹 서버에 로그인하여 "master"의 변경 사항을 현재 분기로 빠르게 전달합니다. 이 경우 "라이브"분기입니다.

--ff-only 서버에 변경 사항이 있으면 실패한다고 말합니다.

서버에 변경 사항이 있으면 다음을 사용하여 로컬 마스터로 가져올 수 있습니다.

git pull web live

더 많은 것. 이 작업을 수행하기 전에 원격 서버에서 SSH 키를 설정하므로 암호를 입력 할 필요가 없습니다

이것은 github 또는 gitlab과 전혀 관련이 없습니다. 변경 사항을 푸시 할 수도 있지만 연결되어 있지 않습니다.



2

Google에서 다양한 질문을 약간 검색하면서 방법을 찾았습니다. 가장 좋은 방법은 아니며 너무 복잡 할 수도 있지만 작동해야하며 그것이 가장 중요합니다. 더 좋은 방법을 알고 있거나 찾을 수있는 경우 알려주십시오.

Git hooks를 통해 서버에 코드를 배포 할 수 있음을 발견했습니다. 서버에 SSH를 설치하고 git repo를 작성한 다음 커밋을이 repo에 푸시하기위한 후크를 설정하기 만하면됩니다. 이렇게하면 커밋을 서버에 푸시 할 수 있지만이 시점에서 gitlab과 관련이 없습니다.

다음 단계는 gitlab의 푸시 URL을 동일한 리모컨에 추가하는 것입니다. 이렇게하면 매번 gitlab과 사이트 자체를 모두 사용하게됩니다. 결과적으로 gitlab 저장소와 실제 사이트가 모두 동기화됩니다. 이것은 해킹이지만 확실히 효율적이지 않습니다.

이 블로그 게시물에서 git을 통해 서버에 코드를 배포하는 방법을 찾았습니다 : http://sebduggan.com/blog/deploy-your-website-changes-using-git/

stackoverflow 의이 질문에서 git의 리모컨에 두 개의 푸시 URL을 추가 할 수 있음을 발견했습니다 : https : //.com/questions/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-pushed-to-repos

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.