제목 그대로 "CI/CD를 무엇으로 어떻게 진행해야할까?"에 대한 생각이다.
단위 테스트(unit Test)에 대한 코드를 저번주 토요일에 완료하고 커버리지를 모두 채울 수 있었다.
이제 github action을 이용해서 CI/CD를 적용시켜 보고자 여러 포스팅을 둘러보았는데,
docker를 이용하는 경우도 있고, AWD codeDeploy를 이용하는 것도 있고, 그냥 github Action에 있는 marketplace에 있는 만들어진 action을 이용해 CD만 하는 포스팅도 있었다.
개발이라는 것이 워낙 길도 방법도 많은 곳이라 딱 잡아서 이것이 정답이야! 라고 할 수 있는 것이 아니라 이것도 정답이고 저것도 정답이야. 너한테 맞는걸 사용해! 라는 느낌이 더 많다.
따라서 나는 많은 github Action을 이용한 CI/CD구현 방법에서 나에게 맞는 선택지를 골라야 했다.
아무래도 사례가 많은 경우는 AWD codeDeploy를 이용하는 방법이었다. 전반적으로 잘 정리된 포스팅이 많고 내용도 AWS설정에 있어서 많은 부분을 차지하고 있었다.
docker를 이용하는 사례들은 따로 docker에 대해서 추가적인 학습시간이 필요해 보였다.
따라서 marketplace에 있는 만들어진 appleboy를 이용해서 CD부분을 완성하고, 따로 AWD codeDeploy를 이용한 CI/CD에서 CI부분만 따로 내쪽에 적용해 나만의 CI/CD를 구성해 보는 것이 좋겠다고 생각이 들었다.
name: deploy
on:
push:
branches:
- master
jobs:
AUTO_DEPLOY:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Run scripts in server
uses: appleboy/ssh-action@master
with:
password: ${{ secrets.PASSWORD }}
host: ${{ secrets.HOST }}
username: ${{ secrets.USER_NAME }}
port: ${{ secrets.PORT }}
script: ${{ secrets.SCRIPT }}
위는 appleboy를 이용한 CD부분이다. 다른 CI/CD의 로직양에 비해서 매우 짧고 간단하며, 가독성도 높아보인다.
이 CD를 부분을 만들기 전에 job을 나누어 CI에서는 패키지 설치를 위한 npm ci와 테스트코드로 로직의 문제를 확인하기 위한 npm test로 ci부분을 만들고 위의 appleboy를 이용하여 자동적으로 배포가 이루어 질 수 있게 끔 CD를 구성하여 github action에 사용될 yaml파일을 만들어 봐야겠다.
좋은 글 잘 읽었습니다, 감사합니다.