728x90 반응형 Github Actions12 Github Actions: Version Release Release version control 지금까지 이미지의 tag 를 그냥 타임스탬프를 이용하여 구분짓고 latest 로 기져오면서 코드를 짜고 있었는데, 실제 이미지의 버전정보를 그냥 아무 숫자나 가져다 쓰지는 않는다고 한다. 그래서 github 에서 repo 의 태그를 생성하고 버전으로 사용하는 방법을 찾아보자. github actions marketplace 에서 원하는 기능을 제공하는 소스코드를 찾았다. 소스코드의 메커니즘을 보면 secrets 에서 토큰을 받아와 접근 인가를 받고 steps 에 태그를 생성해서 가져다 쓰는 것 같다. 태그를 커스터마이징 하거나, 브랜치 별로 선택할 수도 있는 것 같아서 default 를 false 로 해두고 commit message 로 버전을 컨트롤 할 수 있.. Dev./Github Actions 2023. 10. 15. [Cloud] Github Actions: Lint CI 단계에서 보면 개발자 여러명이서 작업을 하다보면 포맷팅이 각자 다르기 떄문에 몇가지 방식으로 통일해서 사용하자고 약속해 놓은 게 있다. 개발자들이 직접 기억하고 약속을 지킬 수 없으니 프로그램으로 돌려서 일치 시키게 해주는 것. 파이썬 린트 중 하나인 블랙을 설치해서 적용시켜보자 pip install black # 경로에 있는 모든 파일들을 점검하겠다. black . # 해당 경로아래에 있는 파일들만 점검하겠다. black --check lion_app 위 내용을 CI.yml 파일에 적용시켜보자 하고자 하는 작업 job 으로 분리하여 새로운 컨테이너를 만들고 checkout 하여 코드에 접근한뒤 python 을 셋팅하고 black 을 설치하여 확인하고자 하는 경로의 파일들을 점검 # CI.yml n.. Dev./Github Actions 2023. 8. 30. [Cloud] Github Actions: Code develop for TEST TEST 를 위한 기능 디벨롭 settings 파일 구분지어서 오버라이딩하기 각각의 개발환경에 맞는 settings 를 사용하기위해 settings 폴더구조로 각각의 settings.py 를 오버라이딩하여사용하게 한다. # base.py "기존에 있는 settings.py" # local.py # prod.py # staging.py 우선 로컬환경 에서 분리된 내용을 적용시키기 위해서는 wsgi 파일에서 경로를 수정해주어야 한다. # start #!/bin/sh # 파이썬 알파인을 쓰기 떄문에 bash 조차 없다.. 그래서 sh 로 python3 manage.py collectstatic --no-input python3 manage.py migrate gunicorn lion_app.wsgi:appli.. Dev./Github Actions 2023. 8. 29. [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: 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. 이전 1 다음 728x90 반응형