개발자가 코드를 변경할 때마다 자동으로 코드를 빌드하고 테스트하는 프로세스
Continuous Delivery/ Continuous Deployment
소프트웨어를 자동으로 빌드하고 테스트한 후, 변경 사항을 프로덕션 환경에 자동으로 배포하는 프로세스
소프트웨어 개발 프로세스를 자동화하고 지속적 통합(CI) 및 지속적 전달(CD)를 구현하는 데 사용되는 강력한 도구
CI/CD는 소프트웨어 개발 및 배포를 더 효율적이고 안정적으로 만드는데 도움
github Actions은 CI/CD를 간편하게 설정하고 관리를 도와줌
// .github/workflows/ci.yml
name: CI
on:
push:
branches:
- main // trigger: push to main branch
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v2
- name: Setup Node.js
uses: actions/setup-node@v2
with:
node-version: '14'
- name: Install dependencies
run: npm install // 푸시가 발생하면 npm 설치
- name: Run tests
run: npm test // 설치 후 npm test 실행
// .github/workflows/cd.yml
name: CD
on:
push:
branches:
- main
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v2
- name: Deploy to AWS Elastic Beanstalk
uses: aws-actions/configure-aws-credentials@v1
with:
aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}
aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
aws-region: us-east-1
- name: Deploy application
run: |
eb init -p nodejs my-app
eb deploy my-app
// .gitlab-ci.yml
stages:
- sync_dev_with_front
variables:
FRONT_BRANCH: front
DEV_BRANCH: dev
sync_dev_with_front:
stage: sync_dev_with_front
only:
- $DEV_BRANCH
script:
- git config user.name "ahyeon"
- git config user.email "ahoney@gmail.com"
- git checkout $FRONT_BRANCH
- git merge --no-ff $CI_COMMIT_SHA
- git push origin $FRONT_BRANCH