2017-11-23 8 views
0

각도 클라이언트 및 나머지 API로 훌륭한 CI/CD 솔루션을 구축하려고합니다. 내 모서리 클라이언트의 "한 번 빌드, 배포"설정을 갖고 싶습니다. 대부분 각도 CLI는 이것에 대해 훌륭하지만, 내가 할 수없는 것은 배포하는 동안 조작 할 수있는 어딘가에 API URL을 저장하는 좋은 해결책을 찾는다.CI/CD 설정에서 angular5, angular-cli의 Api URL 구성

시나리오 내가 시도 :

1) environment.env.ts 파일의 URL을 저장. 이 방법의 문제점은 environment.ts 파일이 "ng build"단계의 아티팩트에 내장되어 있으므로 배포하는 동안 url을 변경할 수 없다는 것입니다. 모든 소스를 빌드 단계의 아티팩트로 저장 한 다음 배포 중에 "빌드"/ 번들을 수행 할 수는 있지만 매우 느린 배포 단계로 진행되며 여러 환경에 동일한 아티팩트를 실제로 배포하지는 않습니다.

2) URL을 별도의 assets/settings.json 파일에 저장. 이 문제는 settings.json을 얻으려면 비동기 http.get 호출이 필요하며 나머지 API를 호출하기 전에 URL을 받았는지 확인하는 좋은 방법을 찾을 수 없습니다.

누구나 이러한 문제에 대한 좋은 해결책이 있습니까? 아니면 더 나은 접근 방식?

+0

나는 이것에 관한 몇 가지 github 문제를 발견했다. https://github.com/angular/angular-cli/issues/3855#issuecomment-274803729 https://gist.github.com/fernandohu/122e88c3bcd210bbe41c608c36306db9 – Snorre

+0

대체품 2에 대한 해결책을 찾은이 대저택을 발견했습니다. 앵귤러 cli는 configs를 더 잘 다루어야한다고 생각합니다. https://plnkr.co/edit/o7GohlMJ5nxgJtMEgKEP?p=preview – Snorre

답변

1

아이디어로 env 설정을 이미 env 파일에 배치 할 수 있습니다. 빌드시 ci/cd setup에서 정확한 env over 명령 매개 변수를 선택하십시오. 여기

ng build --env=prod 

참조 세부 통찰력 : Link

는 다른 방법으로는 ENV 구성 파일을 보유하고 빌드가 CI/CD 공정을 시작하기 전에 그들을 대체 할 수있는 두 번째 자식의 repo를 만들 수 있습니다.

+0

맞는지 잘 모르겠지만 URL을 --env = prod와 번들로 묶지 않으려 고합니다. 왜냐하면 내 빌드 서버 이 환경을 어떤 환경 에든 배치하면 변경해야합니다. – Snorre

+0

보통 웹 앱의 dev에 대상 env가 있습니다. 따라서 환경에 다른 환경 설정을 구성 할 수 있습니다. 따라서 대상 시스템으로 전송하기 전에 모든 대상 env에 대한 코드를 다시 작성할 수 있습니다. 일반 빌드에서는 테스트를 빌드하고 실행할 뿐이지 만 나중에 다시 빌드 할 때 소스 코드로 이슈가 생성됩니다. 예를 들어 main.bundle.js 환경 JavaScript 코드를 직접 구문 분석하고 바꿔야 할 필요가있는 까다로운 빌드 후 env를 변경하려는 경우. 나는 표준이 아니기 때문에 이것을 권장하지 않는다. –