매우 구체적인 문제가 있습니다. Python 패키지 (egg)를 배포하고 개발자의 삶을 편하게하기 위해 노력하고 있습니다. Makefile
을 개발했습니다.Makefile에서 필수 구성 요소의 전제 조건을 무시합니다.
내 배포판에는 코드 (Python 소스 파일)가 포함되어 있고 일부에는 Dokumentation (HTML, PDF, ...)이 포함되어 있습니다.
따라서, 내 Makefile
이러한 목표를 가지고 :
doc/admin/html: doc/admin/src/*
echo "Build the HTML doc..."
doc/admin/pdf: doc/admin/src/*
echo "Build the PDF doc..."
doc: doc/admin/html doc/admin/pdf
$(PACKAGE).egg: doc/admin/html doc/admin/pdf src/*
echo "Build the egg..."
egg: $(PACKAGE).egg
이 지금까지 잘 작동합니다. 개발자가 소스 파일이나 문서를 변경하자마자 doc
대상 및/또는 egg
대상이있는 전체 배포판을 사용하여 문서를 다시 작성할 수 있습니다.
이제 내 문제 : 배포판을 테스트하기 위해 다른 대상이 test_egg
있습니다. 내 현재 대상이 정의를 다음과 같이
test_egg: $(PACKAGE).egg
echo "Test the egg..."
이 타겟은 개발자와 CI에서 하나를 수행한다. 문제 : CI 중에 $(PACKAGE).egg
파일이 다른 작업에 의해 빌드 된 다음 테스트 환경으로 전송됩니다 (gitlab-ci를 사용하고 있습니다). 따라서이 테스트 환경에서는 $(PACKAGE).egg
이 있지만 설명서의 경우 doc/admin/html
및 doc/admin/pdf
폴더는 존재하지 않습니다. 그들은이 달걀을위한 중간 파일 일 뿐이므로이 타겟을 필요로하지 않습니다.
내 질문은 다음과 같습니다 test_egg
대상을 정의하여 을 실행하고 $(PACKAGE).egg
이있을 때 문서를 다시 작성하지 않으려면 어떻게해야합니까?
doc/admin/*
폴더를 INTERMEDIATE
으로 정의 할 수 있지만 개발자가 doc
대상을 사용하여 문서를 작성하지 못하게합니다.
도움을 주시면 감사하겠습니다.
감사합니다,하지만이 작동하지 않습니다. 어쨌든 계란을 재건할지 여부를 확인 중입니다 ..'대상 파일 'test_egg'을 고려하십시오. 'test_egg'파일이 없습니다. 대상 파일 'cs.erp-10.1.1-py2.7.egg'고려 중. 대상 파일 'doc/admin/html'을 고려하십시오. –
개발자가 알을 만들기 위해 리버브해야하는 방법 중 하나로서 난 알에 대한 종속성을 제거했습니다. 이 목표는 CI를위한 것이며, CI에서 나는 계란이 있다는 것을 알고 있으며 그렇지 않다면 나는 그것을 실패하고 싶습니다.하지만 여전히 고마워요! 이것이 다른 사람들을위한 올바른 답변 일 수 있으므로 대답을 수락 할 것입니다. –
맞습니다. 문제를 충분히 이해하지 못했고 주문에만 필요한 전제 조건이 필요하지 않습니다. 필요에 따라 다시 빌드되지만, 이것에 의존하는 대상도 다시 빌드되지 않습니다. 당신이 필요로하는 것이 아닙니다. 내 대답을 더 나은 옵션으로 수정했습니다. –