728x90 반응형 Cloud71 [Cloud] Github Actions: Concept of CI CI: Continuous Intergration 야러 개발자들이 동시에 작업하고 있는 소스 코드의 변경사항과 테스트를 통합하여 한번에 프로세싱하게 한다. 이는 일련의 과정들을 자동으로 반드시 진행하게 하여 반복되는 문제점에 대한 개선사항을 테스트하게 된다. Muti stage 설계 local: 각 개발자가 작업하는 소스코드가 있는 공간 dev: local 단계의 소스코드를 모아서 관리하는 공간 test: 소스코드의 결함을 찾아내는 공간 staging: test 와 비슷 한개념으로 production 으로 넘어가기 전 단계인 공간 production: 실제 서비스가 운영되는 공간으로 유저가 사용하게되는 공간 django 에서는 settings.py 와 .env 파일등을 각 stage 별로 관리하게 된다... Dev./Github Actions 2023. 8. 28. [Cloud] CD: Github Actions - TEST & act Github actions act 자동 배포 과정도 테스트를 진행하면서 개발을 하게 되는데, 테스트를 해보기위해 계속해서 push 를 하거나 pull request 를 만드는 것은 비효율적이다. 이런 부분들을 자동화 하기위해서 act 를 사용한다. act 는 Github actions 워크플로우를 로컬의 개발환경에서 실행할 수 있게 해주는 오픈소스 도구이다. act 는 도커를 사용하기 때문에 도커가 깔려 있어야 하며 아래의 장점들을 가지고 있다. 디버깅 : 푸시하면서 디버깅 할 필요 없음 빠른 반복 : 원격 실행을 기다릴 필요가 없음 https://github.com/nektos/act GitHub - nektos/act: Run your GitHub Actions locally 🚀 Run your Gi.. Dev./Github Actions 2023. 8. 24. [Cloud] CD: Github Actions - workflow_run & Dependency workflow_run & Dependency workflow 의 dependency 설정 (조건부 실행) workflow_dispatch 로 직접 실행시키게 되면, call-workflow step 에 따라 정해진 workflow 가 실행된다. # lesson4_caller.yml name: call workflow on: workflow_dispatch: jobs: get-workflow-name: name: echo workflow name runs-on: ubuntu-latest steps: - run: echo "This workflow is ${{ github.workflow }}" call-workflow: uses: ./.github/workflows/lesson4.yml strategy:.. Dev./Github Actions 2023. 8. 23. [Cloud] CD: Github Actions - Mutiple workflow Multiple workflow workflow 를 여러개를 만들다보면 push 할 때마다 다른 yml 파일들 때문에 계속해서 배포되는 작업이 이루어지는데, 이를 각각의 workflow 별로 핸들링하거나 연관있는 것들 끼리 핸들링 할 수 있게 해보자. lesson4.yml 파일 작성 # lesson4.yml name: resuable workflow on: workflow_call: jobs: greeting: name: greeting runs-on: ubuntu-latest steps: - name: greeting run: echo "Hello, Stranger"ßßå 이후 push 하면 기존에 있던 yml 파일이 있기 때문에 자동으로 배포가 됨 그래서 필요한 내용이 업데이트 될 때마다 배포가 되게.. Dev./Github Actions 2023. 8. 23. [Cloud] CD - NCP: Rollback tag 현재에는 yml 파일에 latest 로 태그가 들어가기 때문에 롤백을 실행할 수 없다. 이미지에 고유 식별자가 없으면 어떤 변경이 언제 이루어졌는지 추적할 수 없고 오류진단과 디버깅을 쉽게 할 수 없다. 또한 새롭게 배포가 된 이후에 에러가 발생했을 때 안정적인 버전으로 빠르게 복귀가 필요한 경우도 종종 발생한다. 기본적으로 태그를 여러개 등록이 가능하기 때문에 유니크한 정보값을 생성을 위해 timestamp 를 사용하고 롤백을 위한 다중 태그를 등록하자. # yml 파일 env: # IMAGE_TAG: ${{ vars.NCP_CONTAINER_REGISTRY }}/lion-app:latest IMAGE: ${{ vars.NCP_CONTAINER_REGISTRY }}/lion-app IMAGE_TAG: .. Dev./Cloud 2023. 8. 22. [Cloud] CD - NCP: Load balancer Load balancer NCP 에서 Load balancer 만들어 주기 (프록시 로드밸런서 사용예정) proxy load balancer 는 클라이언트와 서버간의 중개자로 작동하며 클라이언트의 요청을 받아 적절한 타겟 서버로 전달하고 서버의 응답을 클라이언트에게 전달한다. Load balancer 여러 서버 간의 트래픽을 분산 → 처리시간 단축 특정 서버에 문제가 생기면 다른 서버로 routing 서버를 추가하거나 제거하며 스케일링 Subnet : Load balancer 가 동작하는 곳 네트워크의 논리적인 분할, 특정 IP 주소 범위 범위를 정하고 Gateway 설정 리스너 포트 80 Target : Load balancer 가 트래픽을 분산시킬 서버(인스턴스) 프로토콜 : TCP 포트 : 8000.. Dev./Cloud 2023. 8. 22. [Cloud] CD: Github Actions - 환경변수, docker-compose workflow 내 환경변수 설정 및 docker-compose.prod.yml 수정 repository 가 sercret 에 있던걸 variables 로 변경 https://docs.github.com/en/actions/learn-github-actions/variables#using-the-env-context-to-access-environment-variable-values name: CD using Docker Image on: push: branches: - main env: # 자주 사용하는 부분은 묶어서 사용할 수 있다. IMAGE_TAG: ${{ vars.NCP_CONTAINER_REGISTRY }}/lion-app:latest jobs: build_push_to_ncp: name: p.. Dev./Github Actions 2023. 8. 21. [Cloud] CD: Github Actions - ssh, git pull ssh 로 접속해서 git pull 받기 ssh 로 접속하기 위해서는 키가 필요한데 이 부분은 github 에 저장해두고 사용한다. # lession2.yml name: CD by git pull on: workflow_dispatch: # from now on, this file is not in automation process # push: # branches: # - main jobs: deployment: runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - name: git pull via SSH uses: appleboy/ssh-action@v1.0.0 with: host: ${{ secrets.HOST }} username: ${{ se.. Dev./Github Actions 2023. 8. 19. [Cloud] CD: Github Actions - docker build docker 파일을 actions 로 빌드해보기 이번에는 push 가 되었을 때 도커파일로 장고 앱이 빌드가 되고 이미지가 출력되는 워크플로우를 만들어보자 기존에 사용하던 명령어 docker run --name lion-app ... docker images 참고용 .github/workflow/lesson1.yml name: lesson1 on: # if the below events are on, push: # push event pull_request: # pull_request event jobs: # these below tasks are on echo-event: name: echo event runs-on: ubuntu-latest steps: - name: get event run: ech.. Dev./Github Actions 2023. 8. 18. [Cloud] CD: Github Actions - workflow push & pull-request 알림 workflow 만들기 github actions → using workflow 로 가서 어떻게 사용하는지 확인한다. workflow 작성 # lesson1.yml name: lesson1 on: push: pull_request: jobs: echo-event: name: echo event runs-on: ubuntu-latest steps: - name: get event run: echo "This event is ${{github.event_name}}" push 를 하면 github actions 에 해당 내용들이 기록되어진다. 이번에는 pull-request 를 확인해보자 dev branch 를 파서 새롭게 업데이트 한 후 push 를 하면, dev_.. Dev./Github Actions 2023. 8. 18. [Cloud] CD: Continuous Deployment (feat. github actions) NCP 로 배포를 해보면서 자동화의 필요성을 계속해서 알게되었다. 업데이트 될 때마다 테스트를 하고 자동으로 뿌려주는 과정을 설계하는 CD, Continuous Deployment 를 적용하려면 뭘 알아야 할까 ? CD 란, 소프트웨어 개발에서의 자동화된 프로세스로, 변경 사항을 자동으로 제품환경에 배포한다. 현업에서는 CI/CD 파이프라인을 이용해 테스트, 빌드, 배포 등을 자동화 하며, Jenkins, GitLab CI, CircleCI 등의 도구를 사용한다. Github actions github actions 는 github 에서 제공하는 CI/CD 도구로, 소프트웨어 개발 워크플로우 자동화에 사용된다. commit, push, pull request 와 같은 github 이벤트에 응답하여 빌드,.. Dev./Github Actions 2023. 8. 17. [Cloud]배포 AWS: Secrets Manager NCP 에서는 지원하지 않는 기능! AWS 에서는 시크릿 키를 관리할 수 있는 기능을 제공해준다. 사용자의 이름, 암호 주소, 데이터베이스 이름, 포트 등을 설정하게 끔 되어 있는데 이 부분에는 사용하는 DB 에 대한 정보를 넣어준다. Region : ap-northeast-2 ← 아시아 / 서울 생성후 python3 로 바꿔서 샘플코드 복사 붙여넣기 common → aws.py # Use this code snippet in your app. # If you need more information about configurations # or implementing the sample code, visit the AWS docs: # import boto3 from botocore.exceptions .. Dev./Cloud 2023. 8. 17. 이전 1 2 3 4 5 6 다음 728x90 반응형