CI/CD는 개발 과정에서 필요한 빌드, 테스트, 배포등의 과정을 자동화하는 것이다. CI/CD 자동화를 통해서 개발자들은 코드를 자동으로 테스트하고 배포할 수 있고 이를 통해 효율적인 작업과, 더 빠르고 더 자주 배포를 진행할 수 있게 돼 베포하는 시간을 절약해서 개발자의 한정적인 자원을 더욱 적절한 곳에 사용할 수 있게 해준다.
CI/CD 플랫폼의 종류를 구분하자면 크게 두가지,설치형과 클라우드형으로 나눌 수 있다.
설치형은 파이프라인을 구축하는 개발자가 직접 특정 컴퓨터에 CI/CD 플랫폼을 설치해서 활용하는 방법이며 대표적인 설치형 CI/CD 플랫폼으로는 Jenkins
가 있다.
반대로 클라우드형같은 경우에는 CI/CD 플랫폼을 운영할 컴퓨터를 개발자가 직접 관리할 필요 없이 서비스 제공자가 클라우드에서 모두 운영해주는 형태인데 클라우드형 CI/CD 플랫폼을 이용하면 별도의 컴퓨팅 자원에 대한 관리 없이 CI/CD 파이프라인의 구축에만 신경 쓸 수 있다. 하지만, 컴퓨터에 직접 접근할 수 없고 플랫폼에서 제공해주는 수준까지만 할 수 있기에 세부적인 조정이 불가능하다는 단점이 있다. 대표적인 클라우드형 CI/CD 플랫폼의 예시로는 Travis CI, GitHub Actions 등이 있습니다.
출처: https://docs.github.com/en/actions/learn-github-actions/understanding-github-actions
use
키워드와 함께 사용할 수 있으며 브랜치로 체크아웃하고, 환경을 설정하는 등 복잡하지만 자주 사용되는 과정들을 미리 정의해두고 편리하게 활용할 수 있습니다.name: KakaoGroup Publish
on:
push:
branches: ['main']
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v3
- name: Node.js 16.x
uses: actions/setup-node@v3
with:
node-version: 16.x
- name: Setting environment variables
run: |
echo "VITE_CLIENT_KEY=$KAKAO_CLIENT_KEY" >> .env
env:
KAKAO_CLIENT_KEY: ${{secrets.KAKAO_CLIENT_KEY}}
- name: InstallDependencies
run: npm install
- name: Build Project
run: npm run build
- name: publish Project
uses: peaceiris/actions-gh-pages@v3
with:
github_token: ${{ secrets.KAKAO_WEB_PAGE_KEY }}
publish_dir: ./dist
개인 프로젝트에 처음으로 CD를 적용해보았는데 정말 편리했다. 또한 개인 프로젝트라고 하더라도 브랜치 전략을 어떻게 가지고 갈지에 대해 생각을 많이 하고 접목시켜본 프로젝트였다.