Spinnaker와 Jenkins가 연동된 환경에서 Spinnaker를 통해 배포수행시 Jenkins 상에서 사용했던 정보를 활용해야 하는 경우가 생겼을 때  Jenkins에서 어떤 방식으로 Spinnaker 에 관련정보를 전달할 수 있는지에 대해서 알아보도록 하겠습니다.

우선 관련된 방법을 간단히 설명하자면 Jenkins에서 Artifact로 관련 정보를 text 형태로 저장하고 이를 Spinnaker의 Properties로 불러오도록 하는 방식입니다.

그렇다면 어떻게 설정하면 되는지에 대하여 알아보도록 하겠습니다.

Jenkins에서 설정

먼저 Jenkins에 artifact를 만드는 방법에 대하여 알아보도록 하겠습니다.

Jenkinsfile내에서 지정된 stage에서 spinnaker에서 사용할 “TAG” 지시어를 파일로 추가하고 archiveArtifacts 지시어를 사용하여

파일로 저장하게 합니다. 파일명은 spinnaker에서 지정할 예정이기에 원하는 파일명으로 지정해도 무방합니다.

참고로 Artifact는 try/catch/finally를 사용하여 build 과정이 완료된 시점에 archiveAritfacts가 이루어지도록 하였습니다.

참고사항

pipeline내에 spinnaker property는 다음 링크를 참고하여 좀더 확장된 방식의 property를 설정하여 사용할 수 있습니다.

https://www.spinnaker.io/guides/user/pipeline/expressions/

이후 build now를 클릭하여 build를 수행하면 중앙부분에 Artifacts 파일이 생성됨을 확인할 수 있습니다.

(참고로 해당 파일은 build history별로 상이하게 저장되므로 버전관리가 된다고 보아도 무방합니다.)

또한 알아두면 좋을것은 해당 Artifact 파일은 Jenkins slave 에서 build가 진행되더라도 Jenkins master 서버에 저장되어지고

실제 위 이미지에서 볼수 있듯이 Web 을 통한 다운로드가 가능합니다.

Spinnaker에서 설정

이제는 Spinnaker에서 설정을 진행할 차례입니다.

Spinnaker에서는 Application 설정시 Automated Triggers에서 property File 지정을 할 수 있습니다.

Property File은 앞서 Jenkins에서 Artifact로 지정되었던 파일명을 입력합니다.

이후 Deploy (Manifest) Stage를 추가하여 다음과 같이 Manifest를 추가합니다.

Manifest에서는 다음과 같이 Jenkins에서 지정되었던 TAG 번호를 변수로 사용하게 됩니다.

이후 지정했던 TAG 번호가 실제 배포됨을 확인할 수 있습니다.

참고사항

Spinnaker는 Jenkins Job을 Polling 하게 되고 이때 Success된 Job만을 배포하도록 되어 있다.

실제 Spinnaker에서는 아래와 같은 선택 가능한 리스트가 출력되며

실제 Jenkins에서 해당 Job들을 확인해보면

참고사이트

오픈소스컨설팅 기술담당으로 근무하고 있으며, IT에 대한 철학과 이해를 통해 고객이 오픈 소스를 활용한 엔터프라이즈 시스템을 효과적으로 사용할 수 있는 다양한 트렌드와 기술 적용을 돕고 있습니다.

Leave a Reply

Your email address will not be published. Required fields are marked *