마 젠토 1 : 모듈 개발 워크 플로우 개선 (Modman, Composer, git)


14

이것은 내가 오랫동안 염두에두고 있었지만 올바른 방법을 찾을 수 없습니다.

그래서 기본적으로, 나는 6 개의 다른 웹 사이트를 사용하고 있으며, 모두 Magento CE 1.9.2 이상을 실행합니다

해당 웹 사이트에서 나와 함께 일하는 팀이 개발 한 여러 가지 확장 프로그램을 사용하고 있으며 (여기서는 50 개 이상의 확장 프로그램을 말하고 있습니다) 해당 확장 프로그램의 코드는 Bitbucket에 저장되어 있습니다. 확장 프로그램을 관리하는 유일한 사람은 아니며 3 명입니다.

현재 해당 확장 중 하나에 대한 기능을 추가하거나 버그를 수정하려는 경우 다음과 같은 워크 플로가 있습니다.

  • Modman을 통해 웹 사이트 중 하나에 최신 버전의 확장을 설치하십시오.
  • 버그 수정 / 기능 추가 / 테스트
  • 내 확장명을 모두 포함하는 로컬 폴더에 변경 사항을 수동으로 복사
  • 이 확장 폴더에서 Bitbucket으로 GIT를 통해 커밋 및 푸시 (모듈 당 1 개의 Bitbucket 리포지토리)
  • 그런 다음 Modman을 통해 새 버전의 모듈을 설치할 수 있습니다

중요 사항 : 나는 여기 하드 카피와 함께 modman을 사용하고 있으며 symlink는 없습니다.

가장 큰 문제는 굵은 글씨로 강조되었습니다.이 단계는 문제의 큰 원인이기 때문에이 단계를 건너 뛸 수 있기를 원합니다 (일부 파일은 때때로 잊혀지거나 잘못된 복사 / 붙여 넣기, 사람의 행동이 필요함).

그렇다면이 수동 복사 / 붙여 넣기 단계를 없애기 위해 어떻게 워크 플로우를 개선 할 수 있습니까? 나는 여기에 제안에 열려 있습니다.


Submodulesgit의 기능 을 사용해 보셨습니까?
Gopal Patel

하드 카피를 사용하는 이유는 무엇입니까? 심볼릭 링크를 사용하면 modman 폴더 아래에 git clone이 있어야합니다. 그런 다음 제자리에서 편집하고 간단히 밀어 넣으십시오.
Kristof at Fooman

@KristofatFooman 나는 그것을 분명히해야합니다. dev에 중 하나는 Windows를 실행하고, 따라서 우리는 ^^ 심볼릭 링크에 문제가 있었다
디지털 Pianism에서 라파엘을


1
보고 창문 문제의 시도에 대한 @RaphaelatDigitalPianism github.com/sitewards/modman-php
데이비드 매너

답변:


8

나는 종종 프레임 워크에 구애받지 않는 다음과 같은 접근 방식을 취합니다.

  1. 편집하려는 모듈을 확인하십시오. /path/to/my/module
  2. 작업 물에 대한 분기를 작성하십시오 (관련 태그 등에서 분기).
  3. 이 지점에 업무를 위임하십시오 (누르지 마십시오).
  4. 프로젝트에서 로컬 저장소를 모듈의 로컬 사본에 정의하십시오. 이를 통해 프로젝트가 LFS에서 변경되지 않은 변경 사항을 가져올 수 있습니다.

    {
        "repositories": [
        {
            "type": "path",
            "url": "/path/to/my/module"
        }
    ],
  5. 그런 다음 작곡가에게 특정 개발 지점을 요구할 수 있습니다 (프로젝트에서 minimum-stability허용하는 한).

    composer require namespace/module dev-branch-name-here
  6. 당신은 커밋 /path/to/my/module, composer update namespace/module프로젝트에, 그것은 설치 및 테스트를 참조하십시오.

  7. 당신이 스쿼시 완료되면 커밋과 밀어 올리십시오.

이 접근 방식은 https://github.com/Cotya/magento-composer-installer 사용하여 M1 모듈에서 잘 작동 한다는 것을 알았습니다. 교차로 연결된 설치가 때로는 고통스럽고 이전에 교착되지 않은 새 디렉토리 또는 경로를 추가 할 때 당신을 트립하기 때문에 modman에 의해.

관심을 가질만한 링크

디버깅

  1. composer require namespace/module dev-branch-name-here -vvv로컬에서 사용할 수있는 분기를 보는 데 사용 하십시오.

  2. 모듈을 설치하려는 프로젝트에서 minimum-stability설정 한 것을 다시 확인하십시오 dev.

  3. Your requirements could not be resolved to an installable set

Patrick Schwisow의 의견을 읽으면 찾을 수 있습니다 .

다른 패키지에 변경중인 패키지에 대한 요구 사항이있는 경우 개발 지점이 해당 요구 사항을 충족하지 못할 수 있습니다 ( "요구 사항을 설치 가능한 패키지 세트로 해결할 수 없습니다"). 이 문제를 해결하기 위해 다른 모든 패키지가 특정 버전으로 볼 수 있도록 인라인 별명을 사용할 수 있습니다.

간단히 말해서 composer.json개발하는 동안 특정 버전으로 강제 업데이트하여 다음 과 같이 읽을 수 있습니다.

"namespace/module": "dev-branch-name-here as 1.2.3"

또 다른 흥미로운 접근법이 있습니다. 귀하의 의견에 감사드립니다
Raphael at Digital Pianism

1
이것은 좋은 것입니다. 나는 path재사용하지 않을 프로젝트 모듈에 type repos 를 사용하는 경향이 있고 재사용 할 모듈에 대해서는 git 또는 packagist 를 사용하는 경향이 있습니다.
David Manners

1
@DavidManners 위의 흐름을 satis와 함께 사용합니다. 모듈은 영구적으로 만족 스럽지만 로컬에서 테스트하고 실행할 때까지 메인 라인에 아무것도 넣고 싶지 않습니다. 따라서 위의 워크 플로를 사용한 다음 푸시하고 태그를 지정하고 만족할 때까지 기다립니다.
Luke Rodgers

@LukeRodgers,이 워크 플로에서 modman을 전혀 사용하지 않고 모든 모듈 파일이 magento 파일 안에 있습니까? (확장 프로그램에 .modman 폴더가 없습니다). 내가 제대로 이해 했습니까?
MployBy

안녕하세요 @MployBy, 저는 modman을 직접 사용하지 않습니다. 그러나 Cotya / magento-composer-installer가 후드 아래에서 그것을 사용하는지 확실하지 않습니다. 새 magento1 모듈을 설정 한 지 오래되었습니다.
Luke Rodgers

6

여기에 하드 카피와 함께 modman을 사용하고 있으며 symlink는 없습니다.

문제가 있습니다. 상점 배치에 대해이 설정을 변경할 수없는 경우 symlink와 함께 modman을 사용하는 별도의 인스턴스에서 공유 확장에 대한 작업을 고려하십시오.

확장 저장소를 직접 복제하기 위해 AOE composer 설치 프로그램 과 함께 composer를 사용 .modman하지만 modman으로 Git에서 모듈을 설치하면 작동한다고 생각합니다. 어느 쪽이든 모듈 Git 저장소에서 직접 작업 할 수 있습니다.


내가 코멘트에 말했듯이 그래, 이유는 dev에 사용하는 Windows 및 IIRC 중 하나입니다 우리는 그를 심볼릭 링크를 사용하여 몇 가지 문제가 있었다
디지털 Pianism에서 라파엘을

6
아, 나는 그것을 보지 못했다. 그 dev에 VM이 : 부여
파비안 Schmengler

4

그래서 당신을위한 나의 생각은 Magento1조차도 작곡가로 작업을 시작하는 것입니다. 자신의 packagist 가 있다면 AWS 및 Google 클라우드가 설치되어 있으므로 관리하기가 어렵지 않거나 공용 packagist를 사용할 수 있습니다. Magento1 상점의 최신 버전에 "쉽게"액세스 할 수 있습니다.

즉, 최신 버전이 나오면 composer update복사 프로세스를 자동화 할 수 있습니다.

composer를 통해 Magento1 용 https://github.com/Cotya/magento-composer-installer 를 살펴보십시오 .

이 접근 방식을 사용하면 공급 업체 폴더 아래의 git 저장소에서 직접 복사 .git하도록 설정할 수 있으며 별도의 체크 아웃없이 변경 사항을 다시 저장소로 푸시 할 수 있습니다. 여기서 조심해야하고 어떤 브랜치에 있는지 확인해야합니다. 그렇지 않으면 코드를 제거 할 수 있습니다 (몇 번 완료).

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