Continuous Deployment
코드 변경시 자동 테스트와 빌드를 거쳐 운영환경에 배포하는 것
개발팀과 운영팀간의 협업을 돕고 안정적인 운영과 고객의 요구에 빠른 대응을 가능하게 함
보안과 안전성을 고려한
CI/CD 파이프라인 구성에 있어서 보안과 안전성에 대한 고려가 필요
지속적인 모니터링, 피드백을 통한 개선이 필요함
소스 코드 버전 관리
빌드 자동화
테스트 자동화
품질 테스트 및 승인 절차 자동화
모니터링과 피드백 등
Github Actions 로
인텔리제이로 서버 애플리케이션을 만든다
도커파일과 Github Action 설정 파일을 만든다
깃 허브에 push한다
Github Actions Workflow에 의해 프로젝트 빌드/이미지 빌드/도커 허브 push
(추가)Github Actions Workflow에 의해 인스턴스 연결, 이미지 pull, 배포의 자동화 까지 실행
AWS 액세스 키 발급
외부 접근을 위한 AWS 액세스 키 발급
IAM - [사용자] - [보안 자격 증명] - '엑세스 키 만들기' - '외부에서 실행되는 애플리케이션'
*주의 액세스 키 출력 화면을 빠져 나갈 시 재 확인이 불가능 함
Github Actions Workflow 사용을 위해 Github Secret에 환경변수로 등록한다

Github Actions 설정 파일 수정 - 액션추가
#지속적 통합을 위한 스크립트 아래에 작성합니다.
- name: Configure AWS credentials # AWS 인증
uses: aws-actions/configure-aws-credentials@v1
with: # 시크릿 키에 등록한 엑세스 키 사용
aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY }}
aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
aws-region: ap-northeast-2 # 리전 - 대한민국/서울
- name: Start Session Manager session # 세션메니저로 EC2연결
run: aws ssm start-session --target {인스턴스 id}
- name: Deploy to Server
env:
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY }}
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
AWS_REGION: ap-northeast-2
run: |
aws ssm send-command \ # 세션메니저를 통해 실행할 명령어
--instance-ids {인스턴스 id} \
--document-name "AWS-RunShellScript" \
--parameters "commands=[
'if sudo docker ps -a --format \\'{{.Names}}\\' | grep -q \'^server$\\'; then', # server라는 이름의 컨테이너가 실행중이면
' sudo docker stop server', # 컨테이너 종료
' sudo docker rm server', # 컨테이너 삭제
'fi',
'sudo docker pull ${{ secrets.AWS_ACCESS_KEY }}/spring-cicd:${GITHUB_SHA::7}',
'sudo docker tag ${{ secrets.AWS_ACCESS_KEY }}/spring-cicd:${GITHUB_SHA::7} spring-cicd', # 이미지 pull, 이미지 tag 변경
'sudo docker run -d --name server -p 8080:8080 spring-cicd'
]" \ # 이미지로 컨테이너 실행
--output text

수정 후 커밋

Action flow 완료

실행을 확인
좋은 정보 얻어갑니다, 감사합니다.