[git] Git을 사용하여 S3에 게시 하시겠습니까?

누구든지 이것을하는 방법을 알고 있습니까? 지금까지 Google을 통해 유용한 정보를 찾지 못했습니다.

로컬 리포지토리를 설정하고 git pushS3에 게시하는 데 사용하고 싶습니다.이 아이디어는 자산에 대한 로컬 버전 제어가 있지만 S3의 원격 스토리지입니다.

이 작업을 수행 할 수 있으며, 그렇다면 어떻게합니까?



답변

1 http://blog.spearce.org/2008/07/using-jgit-to-publish-on-amazon-s3.html을 통해 JGit 사용

jgit.sh를 다운로드하고 jgit로 이름을 바꾸고 경로에 넣으십시오 (예 : $ HOME / bin).

.jgit 구성 파일을 설정하고 다음을 추가합니다 (AWS 키 대체).

$ vim ~ / .jgit

accesskey: aws access key
secretkey: aws secret access key

.jgit 파일에 acl : public을 지정하지 않으면 S3의 git 파일이 개인용이됩니다 (원하는대로). 다음으로 리포지토리를 저장할 S3 버킷을 만들고 git-repos라고 부르고 업로드 할 git 리포지토리를 만들어 보겠습니다.

s3cmd mb s3://git-repos
mkdir chef-recipes
cd chef-recipes
git init
touch README
git add README
git commit README
git remote add origin amazon-s3://.jgit@git-repos/chef-recipes.git

위의 경우 s3cmd 명령 줄 도구를 사용하여 버킷을 생성했지만 Amazon 웹 인터페이스를 통해서도 수행 할 수 있습니다. 이제 S3로 푸시 해 보겠습니다 (S3와 상호 작용할 때마다 jgit을 사용하고 그렇지 않으면 표준 git을 사용하는 방법에 유의하십시오).

jgit push origin master

이제 다른 곳 (예 : cd / tmp)으로 이동하여 복제 해보십시오.

jgit clone amazon-s3://.jgit@git-repos/chef-recipes.git

업데이트 할 때가되면 (jgit은 merge 또는 pull을 지원하지 않기 때문에) 2 단계로 수행합니다.

cd chef-recipes
jgit fetch
git merge origin/master

2 Amazon S3에서 지원하는 FUSE 기반 파일 시스템 사용

  1. Amazon S3 계정을 만드십시오!

  2. 다운로드, 컴파일 및 설치하십시오. (설치 정보 참조)

  3. 다음 방법 중 하나를 사용하여 보안 자격 증명 (액세스 키 ID 및 보안 액세스 키)을 지정합니다.

    • passwd_file 명령 줄 옵션 사용

    • AWSACCESSKEYID 및 AWSSECRETACCESSKEY 환경 변수 설정

    • 홈 디렉토리에서 .passwd-s3fs 파일 사용

    • 시스템 전체의 / etc / passwd-s3fs 파일 사용

    • 이 작업을 수행

.

/usr/bin/s3fs mybucket /mnt

그게 다야! 이제 amazon 버킷 “mybucket”의 내용이 / mnt에서 읽기 / 쓰기 액세스 가능해야합니다.


답변

Dandelion은 Git 리포지토리를 S3 / FTP / SFTP와 동기화 상태로 유지하는 또 다른 CLI 도구입니다.
http://github.com/scttnlsn/dandelion


답변

git-s3https: //github.com/schickling/git-s3

당신은 실행해야합니다 git-s3 deploy

git repo의 모든 이점이 있으며 변경 한 파일 만 업로드 / 삭제합니다.
참고 : 배포는 git push를 통해 암시 적이 지 않지만 git hook을 통해 수행 할 수 있습니다.


답변

Golang 으로 작성된 mc aka Minio 클라이언트를 사용할 수 있으며 오픈 소스 Apache 라이선스에 따라 사용할 수 있습니다. Mac, Linux, Windows, FreeBsd에서 사용할 수 있습니다. mc mirror명령을 사용 하여 요구 사항을 달성 할 수 있습니다 .

mc GNU / Linux 다운로드

64-bit Intel from https://dl.minio.io/client/mc/release/linux-amd64/mc
32-bit Intel from https://dl.minio.io/client/mc/release/linux-386/mc
32-bit ARM from https://dl.minio.io/client/mc/release/linux-arm/mc
$ chmod +x mc
$ ./mc --help

Amazon S3 용 mc 구성

$ mc config host add mys3 https://s3.amazonaws.com BKIKJAA5BMMU2RHO6IBB V7f1CwQqAcwo80UEIJEjc5gVQUSSx5ohQ9GSrr12
  • 액세스 / 비밀 키로 교체
  • 기본적으로 mc는 amazon S3의 서명 버전 4를 사용합니다.
  • mys3는 minio 클라이언트의 Amazon S3 별칭입니다.

github 로컬 리포지토리 / 디렉터리에서 이름mygithub 을 Amazon S3 버킷 이름으로 미러링mygithubbkp

$ ./mc mirror mygithub mys3/mygithubbkp

면책 조항 : 나는 Minio에서 일합니다


답변

AWS CLI 및 Git (후크 포함)을 사용하여이 작업을 수행 할 수도 있습니다. Windows 10에서 작동하는지 확인했습니다. Linux / Mac에서 작동해야합니다.

커밋시 S3에 동기화 설정

  1. AWS CLI 설치
  2. IAM 프로그래밍 방식 액세스 자격 증명을 설정합니다 (S3로 제한 할 수 있으며 버킷으로 만 제한 할 수도 있음).
  3. 자격 증명으로 AWS CLI 구성
  4. AWS 콘솔 또는 CLI에서 S3 버킷을 생성합니다.
  5. 버킷이 비공개인지 확인합니다.
  6. bare기존 git 프로젝트의 새 git 저장소를 만듭니다 .
mkdir myproject.git
cd myproject.git
git init --bare

참고 : 베어 리포지토리를 사용하면 업스트림이되고 베어 리포지토리에는 S3 버킷에 업로드하려는 변경 사항 만 포함되며 무시 된 파일, 로컬 git 구성 등이 없습니다.

  1. 로이 후크를 설치 post-updatehooks베어의 myproject.git디렉토리.
    #!/bin/sh; C:/Program\ Files/Git/usr/bin/sh.exe
    # Sync the contents of the bare repo to an S3 bucket.
    aws s3 sync . s3://myproject/
    
  2. 올바른 S3 버킷 이름으로 후크를 업데이트합니다.
  3. 이제 myproject디렉토리 로 cd 하고 베어 리포지토리를 업스트림으로 추가하고 s3예를 들어 이름을 지정합니다 .
git remote add s3 path/to/bare/directory/myproject.git

참고 : 베어 디렉토리 경로에 상대 경로를 사용할 수 있습니다.

테스팅

  1. 저장소에 변경 사항을 추가하고 커밋하십시오.
  2. s3변경 사항을 S3 버킷에 동기화하려는 경우 변경 사항을 업스트림으로 푸시합니다 .
  3. 지정한 S3 버킷에 변경 사항이 동기화되는 것을 볼 수 있으며 S3 버킷의 변경 사항을보고 모든 것이 작동했는지 확인할 수도 있습니다.

참조 :


답변

단일 git 저장소에 대해 무료 인 deplybot ( http://deploybot.com/ ) 서비스를 사용할 수 있습니다 .

배포 모드 섹션에서 “자동”을 선택하여 배포를 자동화 할 수 있습니다.

지금 사용하고 있습니다. 매우 쉽고 유용합니다.


답변

Github로 파일을 버전 관리 하시겠습니까? 이 스크립트 (및 관련 GitHub / AWS 구성)는 새 커밋을 리포지토리로 가져와 S3 버킷에 동기화합니다.

https://github.com/nytlabs/github-s3-deploy