Drush와 Phing은 중복됩니까?


24

개발자 빌드 및 테스트 프로세스 자동화를 시작하기 위해 개발자 서버에 JenkinsCI를 설치했습니다. 쉘 스크립트를 통해 Git 플러그인과 일부 Drush 명령과 함께 Jenkins를 사용하고 있습니다.

Drupal dev 워크 플로에서 Jenkins를 사용하는 방법을 연구 할 때 Drush 및 Jenkins와 함께 Phing을 사용하는 것에 대한 게시물을 보았습니다 . 그래서 Phing을 보았는데 쉘 스크립트를 통해 Drush 명령을 사용하여 수행 할 수없는 작업을 볼 수 없습니다.

Phing 사용법을 배우는 데 시간을 투자하는 것이 타당한 지 결정하려고합니다. Shell 스크립트를 통해 Phing vs. Drush 명령을 통합하여 얻을 수있는 이점에 대한 명확성을 찾고 있습니다.

그래서 제 질문은 Drush와 Jenkins와 함께 Phing을 사용하는 사람들을위한 것입니다. Drush / Drush-Make와 Phing은 어떻게 다른가요? 프로세스에서 Phing을 사용하기로 결정한 이유는 무엇입니까?

감사

답변:


15

대답은 확실히 중복되지 않는다는 것입니다.

drush 명령 (적어도 건물 부분)을 포함하는 bash 스크립트를 사용하여 동일한 최종 결과를 얻을 수 있다는 것은 사실입니다. 그러나 JenkinsCI와 같은 CI 프레임 워크에 프로세스를 통합하려는 경우 phing (ant 또는 capistrano를 대체 할 수 있음)과 같은 것을 사용하는 것이 좋습니다.

phing을 사용하면 빌드 프로세스를 지능적인 방식으로 Jenkins에 다시보고 할 수있는 개별 세그먼트로 나눌 수 있습니다.

예를 들어. 내 빌드 프로세스의 일부로 drush를 사용하여 node와 shouldfail의 두 모듈을 활성화한다고 가정 해보십시오. 그런 다음 빌드가 실패합니다. 그러나 JenkinsCI에 다음 쉘 명령을 실행하도록 지시하면 JenkinsCI는 빌드가 통과되었다고 말할 것입니다.

drush --quiet --yes @staging en node shouldfail

분명히 맞지 않습니다. 그러나 대신 개미 또는 phing을 사용하여 동일한 프로세스를 정의하는 경우 Jenkins가 이해하는 일부 실패 논리를 추가하여 정상적으로 실패 할 수도 있습니다. 다음 phing 빌드 스크립트는 이전 명령과 동일한 작업을 시도하지만 예상대로 실패합니다.

<project name="staging" default="enable modules" description="Jenkins Staging Build">

    <target name="enable modules">
      <exec  command="drush --quiet --yes @staging en node shouldfail" error='error' checkreturn="true">
      </exec>
      <loadfile  property="en.error" file="error" />
      <if>
        <contains string="${en.error}" substring="warning" />
        <then>
          <property name="en.fail" value="Could not enable all modules" />
        </then>
      </if>
      <fail if="en.fail" message="${en.fail}" />
    </target>

</project>

BTW 개미와 phing은 거의 동일합니다. Phing을 사용하는 PHP 개발자의 장점은보다 편안하게 phing을 확장 할 수 있다는 것입니다.

Drupal 개발과 drush가 정상인 것처럼, 나는 phing을 확장하는 데 너무 많은 가치를 보지 못하고 exec 작업을 실행하면 스마트 빌드 템플릿을 만드는 것으로 충분하다고 생각합니다.

글쎄, 내 질문에 대답하기 위해 나는 phing을 알아낼 시간을 투자하게되었습니다. 실제로는 매우 직관적이며 알아내는 데 너무 오래 걸리지 않습니다.


2

현재 Phing에서 사용할 수 있는 Drush 작업이 있습니다 .

exec를 사용하는 대신 Drush comands를 다음과 같이 포함시킬 수 있습니다.

  <drush command="site-install" assume="yes"">
        <option name="locale">uk</option>
        <option name="site-name" value="${sitename}" />
        <param>expert</param>
  </drush> 

나는 drushtask를 조금 사용했고 drush 경고와 성공적으로 상호 작용할 수 없었습니다. 그 이유 때문에 다른 점에서 제한이 있다는 사실을 알기 때문에 그것을 버렸습니다.
DKinzer

지원 대기열에서 Drush 작업과 관련된 문제 / 제한 또는 문제 대기열 ( drupal.org/project/issues/phingdrushtask ) 에 대한 기능 요청을 설명하는 것이 좋습니다 . 다른 사람들이 답을 찾고 기여할 수 있도록하기 위해.
Pierre Buyle

2

Phing 스크립트는 여러 명령의 실행 및 결과를 제어하기 위해 쉘 스크립트를 대체합니다. Drush는 Drupal 사이트 또는 Drupal과 관련이있는 명령을위한 CLI 인터페이스입니다. 그들은 서로를 보완합니다.


1

귀하의 질문 : Phing과 Drush가 중복됩니까?

TLDR; 버전 : Sorta. 그러나 대부분은 아닙니다.

요약되지 않은 버전 : 브리징 Drush와 phing은 몇 가지 경우에만 겹칩니다. 주로 웹 사이트 덤프 및 보관은 가장 큰 중복 중 하나입니다. phing에서 할 수는 있지만 많은 작업을 작성해야합니다. 데이터베이스를 덤프 할 수 있지만 하나의 명령으로 drush가 쉽게 수행 할 수 있습니다. Phing은 그렇게하지만 명령 줄 스크립트 만 작성하면됩니다. Phing이 빛나는 곳은 PHPUnit 테스트를 실행하는 기능이며 CSS 파일을 압축하는 항아리와 같은 외부 도구를 실행하고 drupal 사이트 / 응용 프로그램 빌드를 만들고 패키지화하는 등입니다.

피핑이란 무엇입니까?

Phing은 기본적으로 명령을 실행하는 파일럿입니다. Ant에 익숙한 경우 Phing은 실제로 Ant와 가까운 포트입니다 (Java 기반 사촌). Phing은 PHP로 작성되었습니다.

Phing을 사용하여 작업을 자동화하고 해당 작업을 기반으로 결과를보고 할 수 있습니다. 반면에 Drush는 작업 만 수행합니다. 출력 결과를 평가할 수 없습니다.

피싱 / 드 러쉬 사용 사례의 예 :

데이터베이스와 phing을 scpprod에서 testing에 이르기까지 패키지 에 덤프하려면 서두르십시오 .

Phing은 이러한 설정을 외부 build.properties파일 에 저장 하여 프로젝트에 제공 할 수 있습니다. 또한 각 환경에 따라 다른 설정을 저장할 수도 있습니다. 예를 들어 Phing은 drush에 의해 덤프 된 최신 문서를 올바른 문서 루트로 심볼릭 링크 할 수 있습니다.

이 모든 것이 어떻게 작동합니까?

Phing은 xml에 의해 구동됩니다. build.xml 파일을 사용하고 속성 (때때로 대상이라고 함)을 취하고 간단한 명령을 실행합니다.

이것에 더 많은 것 :

Phing 프로젝트 리더가이 슬라이드 공유를 검토하는 것이 좋습니다.

http://www.slideshare.net/michieltcs/building-and-deploying-php-applications-with-phing

높은 수준의 구체적인 사용 (플러스 코드)을 제공합니다. drupal과 관련이 없지만 작동 방식에 대한 더 나은 아이디어를 제공합니다.

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