source

Git repo의 하위 디렉터리만 Heroku에 배포/푸시하려면 어떻게 해야 합니까?

nicesource 2023. 8. 7. 22:37
반응형

Git repo의 하위 디렉터리만 Heroku에 배포/푸시하려면 어떻게 해야 합니까?

나는 서브를 사용하고 Git를 사용하여 버전을 제어하는 프로젝트가 있습니다.서브는 다음을 생성합니다.outputHeroku에 배포하려는 정적 파일이 있는 폴더.

저는 헤로쿠 시더 스택이 별로 좋아하지 않는 것처럼 보이기 때문에 서브 프로젝트 자체를 배포하고 싶지 않지만, 가장 중요한 것은 정적 웹 사이트에 대한 헤로쿠의 훌륭한 지원을 활용하고 싶습니다.

Git Remote에 하위 폴더를 배포하는 방법이 있습니까? 요?output폴더(잘못된 것처럼 들립니다)를 헤로쿠에 밀어넣습니까?

서브트리를 통해 훨씬 더 쉬운 방법이 있습니다.'output' 폴더를 Heroku의 루트로 푸시하고 싶다고 가정하면 다음 작업을 수행할 수 있습니다.

git subtree push --prefix output heroku master

현재 git-subtree가 git-core에 포함되어 있는 것으로 보이는데, 그 버전의 git-core가 아직 출시되지 않았는지 모르겠습니다.

저는 존 베리만이 말한 것으로 시작했습니다. 하지만 사실 여러분이 영웅적인 역사에 대해 전혀 신경 쓰지 않는다면 그것은 더 간단할 수 있습니다.

cd bin
git init
git add .
git commit -m"deploy"
git push git@heroku.com:your-project-name.git -f
rm -fr .git

인 것 요.git subtree가장 좋은 대답이지만, 맥에서 작업하기 위해 하위 트리를 얻는 데 문제가 있었습니다.

저도 비슷한 문제가 있었습니다.나의 경우, 헤로쿠 저장소의 모든 것을 날려버리고 내 하위 디렉터리에 있는 것으로 대체하는 것은 결코 문제가 되지 않았습니다.이 경우 다음 bash 스크립트를 사용할 수 있습니다.Rails 앱 디렉터리에 저장하기만 하면 됩니다.

#!/bin/bash

#change to whichever directory this lives in
cd "$( dirname "$0" )"

#create new git repository and add everything
git init
git add .
git commit -m"init"
git remote add heroku git@heroku.com:young-rain-5086.git

#pull heroku but then checkback out our current local master and mark everything as merged
git pull heroku master
git checkout --ours .
git add -u
git commit -m"merged"

#push back to heroku, open web browser, and remove git repository
git push heroku master
heroku open
rm -fr .git

#go back to wherever we started.
cd -

이것을 개선할 수 있는 많은 방법이 있을 것이라고 확신합니다. 그러니 언제든지 방법을 알려주세요!

길고 힘든 한 달 동안 다른 것들을 시도하고 매번 깨달을 때마다 물리고 난 후,

Heroku가 Git 저장소를 배포 메커니즘으로 사용한다고 해서 Git 저장소로 취급해서는 안 됩니다.

Rsync일 수도 있었어요, 그들은 잊어버렸어요, 이것 때문에 산만해지지 마세요.

만약 그렇게 한다면, 당신은 모든 종류의 상처에 당신 자신을 개방할 것입니다.앞서 언급한 모든 솔루션은 어딘가에서 비참하게 실패합니다.

  1. 매번 또는 주기적으로 또는 예기치 않은 일이 발생할 때마다 수행해야 하는 작업(서브모듈, 하위 트리 동기화 등)
  2. 예를 들어 당신이 코드를 모듈화하기 위해 엔진을 사용한다면, 번들러는 당신을 산 채로 잡아먹을 것입니다. 이에 대한 좋은 해결책을 찾는 동안 그 프로젝트에 대해 제가 겪은 좌절감을 설명하는 것은 불가능합니다.
    • as link + 크에링 gitrepo + 합려고니다추를 .bundle deploy 로 제공해야 . 매번 업데이트를 번들로 제공해야 합니다.
    • 을 "" "" "" "" "" ""로.:path+bundle deploy은 실패, 개팀고니다합려은으로 간주합니다.:path이 옵션과 ."라는옵션을 번들을 하지 않습니다.라는 옵션을 사용하여 생산을 위해 번들링하지 않습니다.
    • 또한 엔진을 새로 고칠 때마다 레일 스택을 업데이트해야 합니다 -_-
  3. 내가 찾은 유일한 해결책은 엔진을 사용하는 것입니다./vendor 링크, 합니다.

해결책

해당 앱에는 git root에 포함된 4개의 프로젝트가 있습니다.

  1. api - 프로필에 따라 2개의 서로 다른 herku 호스트 - 업로드 및 api에서 실행됩니다.
  2. 웹 - 웹 사이트
  3. web-old - 이전 웹 사이트, 아직 마이그레이션 중
  4. common - 엔진에서 추출된 공통 구성 요소

모든 프로젝트에는 다음이 있습니다.vendor/common뿌리바 을 보는 common하기 위해 할 때 하고 각 호스트의 에 물리적으로 .herku에 배포하기 위해 소스 코드를 컴파일할 때 심볼 링크를 제거하고 각 개별 호스트의 벤더 폴더에 물리적으로 존재하는 코드를 rsync해야 합니다.

  1. 호스트 이름 목록을 인수로 수락합니다.
  2. 개발 보고서에서 Git Push를 실행한 다음 별도의 폴더에서 Clean Git Pull을 실행하여 더티(커밋되지 않은) 변경 사항이 호스트에 자동으로 푸시되지 않도록 합니다.
  3. 호스트를 병렬로 배포합니다. 모든 herkugit repo가 풀링되고, 새 코드가 올바른 위치에 재동기화되며, git commit 코멘트의 기본 푸시 정보와 함께 커밋됩니다.
  4. 결국, 우리는 취미 호스트들에게 일어나서 모든 것이 와인이 갔는지 보기 위해 로그를 꼬리를 치라고 말하기 위해 컬이 있는 핑을 보냅니다.
  5. 젠킨스와도 잘 작동함 :D(테스트 성공 후 테스트 서버에 자동 코드 푸시)

현재 6개월 동안 최소한의 (아니요?) 문제로 야생에서 매우 잘 작동합니다.

https://gist.github.com/bbozo/fafa2bbbf8c7b12d923f 스크립트는 다음과 같습니다.

업데이트 1

@아담 부친스키, 그렇게 간단하지 않아요.

첫째, 운영 및 테스트 환경은 항상 최소한, 기능별 클러스터는 최악의 경우에는 여러 개가 있습니다. 갑자기 1개의 폴더가 nherku 프로젝트에 매핑되어야 하는 매우 기본적인 요구 사항이며 스크립트가 배포할 소스를 "선택"할 수 있도록 모든 구성이 필요합니다.

두 번째로 프로젝트 간에 코드를 공유하고 싶을 것입니다. 지금이 바로 그것입니다.sync_common부분적으로, 개발 중인 심볼릭 링크가 헤로쿠의 실제 rsynced 코드로 대체되는 셰니건은 헤로쿠가 특정 폴더 구조를 필요로 하고 번들러와 루비젬은 당신이 공통 스레드를 보석으로 추출하고 싶다면 정말로 상황을 매우 나쁘게 만듭니다.

세 번째로 CI를 연결하면 하위 폴더와 Gitrepo를 구성하는 방법이 약간 변경됩니다. 결국 가장 간단한 사용 사례에서 위에서 언급한 요점을 확인할 수 있습니다.

Java 빌드에 플러그인해야 하는 다른 프로젝트에서는 여러 클라이언트에 소프트웨어를 판매할 때 설치 요구 사항 및 기타 요구 사항에 따라 설치되는 모듈을 필터링해야 합니다.

저는 정말로 Rake 파일 같은 것에 번들링을 하는 것을 고려해야 합니다. 그리고 모든 것을 그런 식으로 해야 합니다.

또는 다음을 사용할 수 있습니다.git subtree를 생성하기 위해herokuHeroku 버튼을 사용하여 Heroku에 배포할 수 있는 GitHub의 분기:

Deploy

  1. 추가 anapp.json서버 디렉토리로 이동합니다.

  2. 다음 마크다운 추가README.md:

    [![Deploy](https://www.herokucdn.com/deploy/button.png)](https://heroku.com/deploy?template=https://github.com/username/repository/tree/heroku)
    
  3. 변경 내용을 에 푸시heroku분기:

    git subtree push --prefix server origin heroku
    

언급URL : https://stackoverflow.com/questions/7539382/how-can-i-deploy-push-only-a-subdirectory-of-my-git-repo-to-heroku

반응형