OneDev를 사용한 리포지토리 미러

4021 단어 gitdevopsgithub

소개



OneDev와 다른 호스팅 서비스 간에 리포지토리를 미러링하는 것이 종종 바람직합니다. 예를 들어 공개 액세스를 위해 GitHub의 사본에 변경 사항을 푸시하거나 GitHub의 다른 사람이 기여한 변경 사항을 철회할 수 있습니다.

OneDev 7.1에서는 새 저장소 동기화 단계로 이 작업을 간단하게 만들었습니다. 이를 달성하는 방법을 살펴보겠습니다.

준비



먼저 아래 명령을 실행하여 OneDev를 시작합니다.

$ docker run -t --rm -v /var/run/docker.sock:/var/run/docker.sock -v $(pwd)/onedev:/opt/onedev -p 6610:6610 -p 6611:6611 1dev/server


브라우저에서 localhost:6610으로 이동하여 OneDev를 설정하고 테스트 프로젝트를 만듭니다.

그런 다음 테스트 리포지토리의 미러로 사용할 빈 리포지토리를 GitHub 측에 만들고 URL이 다음과 같다고 가정합니다. https://github.com/youraccount/test

변경 사항을 미러로 푸시



이제 분기 또는 태그에 변경 사항이 있는 한 변경 사항을 GitHub 미러에 푸시하도록 OneDev를 구성합니다.
  • GitHub 계정에 로그인하고 미러 저장소에 푸시할 수 있는 개인 액세스 토큰을 생성합니다
  • .

  • OneDev 측에서 테스트 프로젝트에 작업 암호를 생성하고 위의 액세스 토큰을 해당 값으로 사용합니다.



  • 빌드 사양을 정의하여 GitHub에 푸시라는 작업을 추가하고 리포지토리 동기화/원격에 푸시 유형의 단계를 추가합니다. 암호/액세스 토큰 필드의 경우 위에 정의된 작업 토큰을 선택합니다.



  • 분기가 업데이트되거나 태그가 생성될 때 자동으로 작업을 실행하도록 트리거를 추가합니다.



  • 이제 빌드 사양을 저장하면 작업이 자동으로 실행되어 GitHub 미러에 변경 사항을 푸시합니다. GitHub 쪽에서 확인하면 새로 생성된 파일 .onedev-buildspec.yml이 포함되어 있는 것을 볼 수 있습니다. 새 브랜치/태그 생성과 같은 다른 변경 사항을 실험하여 결과를 확인하십시오.

    미러에서 변경 사항 가져오기



    GitHub 미러는 기여자의 풀 요청을 수락할 수 있으므로 변경 사항을 풀하도록 OneDev를 설정해 보겠습니다.

  • 위의 빌드 사양 편집을 계속하고, GitHub에서 가져오기라는 작업을 추가하고, 아래와 같이 리포지토리 동기화/원격에서 가져오기 유형의 단계를 추가합니다.



  • 여기서는 위에서 정의한 것과 동일한 작업 토큰을 사용하여 GitHub 미러에 액세스합니다(미러에 공개적으로 액세스할 수 있는 경우 액세스 토큰을 비워 둘 수 있음).

  • cron 유형의 작업 트리거를 추가하여 예약된 시간(예: 매일 밤 오전 1시)에 작업을 실행합니다.



  • OneDev 인스턴스에 공개적으로 액세스할 수 있는 경우 미러 변경 시 이 가져오기 작업을 트리거하도록 GitHub를 구성할 수 있습니다. 아래와 같이 GitHub 측에서 웹후크를 생성하여 수행할 수 있습니다.



  • 페이로드 URL은 다음과 같이 정의됩니다.

    http://onedev.example.com/api/trigger-job?project=test&job=Pull%20from%20GitHub&branch=master&access-token=<OneDev access token>
    


    여기서 onedev.example.com은 OneDev 인스턴스에 액세스하는 DNS 이름입니다. 작업 이름은 공백을 포함하므로 URL 인코딩됩니다. 아래와 같이 작업을 실행할 수 있는 권한이 있는 OneDev 사용자의 액세스 토큰으로 대체해야 합니다.

    ![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/rkjcdnaopfq3oych4xea.png)
    

    프로덕션 사용의 경우 액세스 토큰 유출을 방지하기 위해 페이로드 URL에 https 프로토콜을 활성화하는 것이 중요합니다.

    webhook을 저장하면 변경될 때마다 OneDev가 GitHub 미러에서 가져와야 합니다.

    결론



    OneDev 리포지토리와 GitHub 미러의 양방향 동기화 설정을 완료했습니다. 일반적인 CI 작업이므로 특정 빌드 쿼리를 구독하여 동기화 실패 알림을 받거나, 빌드 로그를 확인하여 동기화 실패를 조사하거나, 작업 리소스 설정을 구성하여 여러 동기화 작업의 리소스 사용을 제어하는 ​​등의 작업을 수행할 수 있습니다.

    읽어 주셔서 감사합니다!

    좋은 웹페이지 즐겨찾기