개발 프로세스, 즉 소프트웨어 개발 프로세스 모델은 소프트웨어 개발 생명주기(SDLC, Software Develpment Life Cycle)을 기반으로 만들어짐
전통적인 개발 프로세스. Maintenance 까지 완료되면 처음으로 돌아가 다시 시작함.
DevOps는 개발(development)과 운영(operations)의 합성어로, 소프트웨어의 개발부터 운영까지 전반에 걸친 과정을 통합하고 자동화하는 것을 목표로 하는 문화와 방식 및 도구
코드 통합, 테스트, 배포 과정을 자동화 시켜 지속적 통합 및 배포(CI/CD)를 하는 것.
https://www.netapp.com/ko/devops-solutions/what-is-devops/
Github가 공식적으로 제공하는 빌드, 테스트 및 배포 파이프라인을 자동화할 수 있는 CI/CD 플랫폼
Pull Request
나 push
같은 이벤트를 트리거로 GitHub 작업 워크플로(Workflow)를 구성할 수 있음.yml
(혹은 .yaml
) 파일에 의해 구성되며, 테스트, 배포 등 기능에 따라 여러개의 워크플로도 만들 수 있음.github/workflows
디렉토리 이하에 위치함Yet Another Markup Language의 약자로, 사람이 읽을 수 있는 데이터 직렬화 언어
name: Bare Minimum Requirements
on: [push, pull_request]
jobs:
test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Bare Minimum Requirements
uses: actions/setup-node@v1
with:
node-version: '16'
- run: npm install
- run: npm test
YAML은 일반적으로 설정 파일(configure file 등)에 사용하기에 좋아서 spring boot, github action 등 다양한 CI/CD 툴이나 프레임워크에서 사용되고 있음
# .github/workflows/client.yml
name: client
on:
push:
branches:
- reference
# Allows you to run this workflow manually from the Actions tab
jobs:
build:
runs-on: ubuntu-20.04
steps:
- name: Checkout source code.
uses: actions/checkout@v2
- name: Install dependencies
run: npm install
working-directory: ./my-agora-states-client
- name: Build
run: npm run build
working-directory: ./my-agora-states-client
- name: SHOW AWS CLI VERSION
run: |
aws --version
- name: Sync Bucket
env:
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY }}
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_KEY }}
AWS_EC2_METADATA_DISABLED: true
run: |
aws s3 sync \
--region ap-northeast-2 \
build s3://fe-75-lhj5924-s3 \
--delete
working-directory: ./my-agora-states-client