github 및 gitlab 외부에서 monorepo-builder 사용

직장에서 우리는 여러 저장소를 관리하고 있습니다. 컨텍스트가 정확히 동일한 리포지토리도 있습니다. 예를 들면 다음과 같습니다. 클라이언트에 여러 엔드포인트를 제공하는 애플리케이션을 개발하고 있습니다. 또한 고객이 API와 통신할 수 있도록 API SDK를 개발하고 있습니다.

현재 이 작업은 모두 두 개의 개별 저장소에서 수행됩니다.
절대적으로 괜찮습니다. 그러나 나는 더 이상 그것을 좋아하지 않습니다.

단일 컨텍스트에 대한 별도의 저장소 문제



API를 변경하고 이에 대한 계약을 조정해야 하는 경우 어떻게 됩니까?
  • 복제 API-SDK 저장소
  • 클론 API
  • API 변경
  • API-SDK를 변경합니다
  • .
  • API-SDK에서 API로의 dev-branch(또는 로컬 링크) 필요
  • 변경된 계약으로 API에 대한 테스트 작성
  • API-SDK에 새 버전 태그 지정
  • 릴리스 API 변경 사항

  • 보시다시피 API로 작업하는 동안 수행해야 하는 많은 단계입니다.

    그래서 우리는 그것에 대해 무엇을 할 수 있습니까?

    모노레포 구조



    If you don't know what a monorepo is, or why you should care about. Check out the blog post from All You Always Wanted to Know About Monorepo But Were Afraid To Ask



    SDK를 API 리포지토리에 추가하면 작업이 그 어느 때보다 쉬워집니다. 이제 최신 버전의 SDK에서 직접 작업하고 API 내부에서 즉시 테스트를 작성할 수 있습니다.

    모든 것이 작동하면 태그를 지정하고 패키지를 게시하십시오.

    쉽죠? 오른쪽?

    모노 리포지토리에서 패키지를 게시하는 방법



    모노 리포지토리 내부에서 실제로 패키지를 게시하는 부분에 관해서는 많은 git 명령 또는 symplify/monorepo-builder과 같은 다른 기존 도구를 사용하여 창의력을 발휘해야 합니다.

    최신 버전에서 그는 github 및 gitlab에 대한 지원을 추가했기 때문에 이것을 workflow action으로 포함하면 완료됩니다. 이것은 굉장하다!

    있지만! 우리 회사에서 github 작업을 사용하는 것은 현장 비트버킷 서버를 사용하고 있기 때문에 실제 옵션이 아니었습니다. 젠장!

    쉬운 모노레포 분할의 꿈은 사라졌습니다 :(

    구조에 도커



    모르는 경우 Github 작업은 백그라운드에서 도커와 함께 작동합니다. 그래서 실제로 도커 이미지를 사용하여 직접 실행할 수 있습니다.

    예, 저는 할수 있습니다!

    그러나 스플리터에 대한 Github 및 Gitlab에 대한 직접 참조는 어떻습니까?

    다행스럽게도 bitbucket에서 일부 환경 변수를 설정할 수 있고 모든 것이 예상대로 작동합니다. :)

    우리가 해야 할 유일한 "해킹"은 Github에서 prefix GITLAB_CI=bitbucket를 처리할 필요가 없도록 INPUT_ 환경을 설정하는 것입니다.

    도커 이미지 실행



    그렇다면 도커를 사용하여 스플리터를 어떻게 실행할 수 있습니까?
    음, 여기에 작은 bash 스크립트가 있습니다.

    docker run \
      -e GITLAB_CI=bitbucket \
      -e PAT="user:accesstoken" \
      -e PACKAGE_DIRECTORY=packages/test-package \
      -e REPOSITORY_ORGANIZATION=org \
      -e REPOSITORY_NAME=test-package \
      -e BRANCH=master \
      -e REPOSITORY_HOST=bitbucket.host.de/scm \
      -e CI_COMMIT_SHA=$COMMIT_SHA \
      -e USER_NAME="User Name" \
      -e [email protected] \
      -e TAG=$TAG \
      --workdir=/bitbucket/workspace \
      -v $(pwd):"/bitbucket/workspace" \
      --rm \
      symplify2/monorepo-split:latest
    


    Gitlab은 액세스 토큰만 사용하여 로그인할 수 있습니다. 그러나 스플리터에 대해 username:accesstokenPAT로 전달할 수 있습니다.

    또한 REPOSITORY_HOST는 호스트일 뿐만 아니라 리포지토리에 대한 기본 경로의 일부도 포함합니다.

    한 가지 중요한 변경 사항은 --workdir-v 옵션입니다. 실행 중인 컨테이너 내부에 소스가 필요하고 splitter 자체에서 소스를 재정의할 수 없으므로 workdir을 설정해야 합니다. 따라서 현재 작업 디렉토리를 연결할 다른 폴더가 필요합니다.


    그리고 그게 다야. 그것은 완벽하게 작동합니다 :)
    이 놀라운 도구에 감사드립니다 <3

    좋은 웹페이지 즐겨찾기