개발자가 feature branch를 만들고 feature branch 에 대한 Merge Request를 하고 승인을 하면
파이프라인이 작동해서 새로 배포되는 것까지 확인을 했다.
그런데, feature branch 를 push를 하게 될 경우에 GitLab은 새로운 코드의 변경 사항을 확인하고
feature branch에 대해서도 파이프라인을 작동시켜버렸다.
결과적으로 아직 검증이 끝나지 않은 상태에서 서비스가 업데이트가 되어버린 것이다.
이 경우에는 feature branch의 어떤 변화에 대해서는 CI/CD 파이프라인이 작동하지 말아라라는 예외 조건을 줘야 한다.
예외조건을 설정하는 것을 보자.
--> CI/CD Pipeline를 수정해보면 해결 가능하다.
해당 job 이 main 에서만 실행되도록 조건을 걸어주면 된다.
build / test / deploy 중에서 build 랑 deploy는 feature branch에서는 작동하지 말고,
test 정는 feature branch 에서도 작동하기를 바란다면, test 에 해당하는 job 들에는
only
- main
이거를 추가해주지 않으면 된다.
그리고 나서 commit changes 하고, 잘 적용된 게 맞는지 테스트를 해보자.
어떤 작업을 할때는 가장 먼저 git pull 해줘야 한다.
그리고 나서, ls -al 을 해서, .gitlab-ci.yml 파일을 들어가서 잘 적용된건지 확인을 해주자.
새롭게 branch 를 만들어서 코드 변경을 하게 되면 test 쪽만 파이프라인이 진행이 될 것이다.
branch 를 만들자. 그리고 switch 해서 이동하자. 그리고 확인하자.
이제 app.py 를 수정해주자. / git status 로 확인 한 번 해주고 / git add / git commit 해주자
이제 push 를 할 것인데, remote branch 랑 연결이 아직 안 되어있다. upstream branch, 즉 push를 할건데 어디로 할건지 모르기 때문에 구체적으로 push 하는 방법을 알려줄 것이다. 그걸 복사붙여넣기해서 명령해주면 된다.
이제 gitlab 에 가서 pipeline 이 test job 만 작동을 했는지 확인을 해보자.
테스트 부분만 파이프라인이 작동한 걸 확인했다.
파이프라인은 더욱 더 정교하게 설계할 수도 있다.
예를 들어서 README 파일이 수정되어도 지금은 배포까지 새로 되는 상황이다.
그런데 README 파일은 수정이 되어도 파이프라인이 작동하지 않도록 하는 거를 해볼 수 있다.
그런 정교한 건 실제로 진행해야 할때가 되면 충분히 그 방법을 찾아낼 수가 있을 것이다. 자신감! 할 수 있다는 확신.
이제 CI/CD 이벤트를 Slack을 통해서 알려주는 작업을 해보자.
Merge Request --> Approve --> Merge --> Build/Deploy 라는 과정을 거치게 될 때,
그 상황들을 팀원들과 공유가 되어야 원할한 업무 진행이 가능하다.
Slack 기반의 communication channel 을 만들어보자.
채널을 만들었다.
여기서 해당 채널과 gitlab 을 연결할 것인데, 아주 간편하게 연결할 수 있도록 플러그 같은게 제공되고 있다.
More .... 에서 Automations 으로 들어가자
apps 로 가서 incoming webhooks 라는 걸 검색하자
add 버튼을 눌러서 진행을 하다보면, 연결할 채널이 나올 건데, 아까 만들었던 채널을 선택해주면 된다.
그리고나면
Webhook URL 이라는게 나올건데, 그걸 이용해서 gitlab 과 연결을 할 것이다.
GitLab 에서 연동할 프로젝트를 선택해주고 왼쪽 하단에 settings에서 Integrations 을 들어가보자.
말그대로 GitLab과 통합(Integrations) 할 수 있는 여러 툴들이 있다. 거기서 slack notifications 을 검색해서 찾아내자.
Active 에 체크를 하고,
어떤 이벤트가 발생하면 어떤 채널로 알려줄거냐는 칸에는
#cicd-event-app 이라고 넣어서, 슬랙의 채널명을 알려주면 된다.
그리고 밑에 설정에 보면 webhook URL 넣는 곳이 있는데 아까 slack에서 복사한 URL을 넣으면 된다.
먼저, Test settings 을 먼저 해보자.
제대로 연결이 된 걸 확인할 수 있다!
변경 사항을 저장을 하고 실제 코드 작업을 해보자.
가장 먼저 현재 branch 확인하고, 작업하기 전에는 git pull 을 해서 최신 코드를 받아오고 시작하자.
그리고나서
git branch feature/slack-noti-test
git switch feature/slack-noti-test
그리고나서 app.py 수정을 해주자
git add app.py
git commit -m "~~"
그리고 나서 git push 를 해서 상세 명령어 얻어내서 명령실행해보자
그리고 나면 slack 에 알림이 올 것이다.
하이퍼링크를 클릭해보면,
이렇게 확인까지 해볼 수 있다. 어떤 걸 수정했는지 확인할 수 있다.
그리고 파이프라인도 성공했다. test 부분만 작동하는 것도 확인했다.