새벽_나그네
12시 지난 새벽
새벽_나그네
전체 방문자
오늘
어제
  • 분류 전체보기
    • TIL
    • DevLog
    • Algorithm
    • ComputerScience
    • etc

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 스파르타코딩클럽
  • 국비지원
  • Selenium 4
  • machine learning
  • 프로그래머스
  • 자기주도학습
  • 내일배움카드
  • AI트랙
  • 내일배움캠프
  • Github
  • 내일배움단
  • til
  • 개발일지
  • portfolio
  • 코딩프로젝트
  • 코린이
  • docker
  • Python
  • 코딩
  • TodayILearned

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
새벽_나그네

12시 지난 새벽

[개발환경셋팅] 3. git action을 이용한 간단한 ci 맛보기
DevLog

[개발환경셋팅] 3. git action을 이용한 간단한 ci 맛보기

2023. 5. 8. 04:42

간략하게 CI/CD의 개념에 대해서 설명하자면 CI/CD는 소프트웨어 개발 과정에서 품질과 생산성을 향상하기 위한 자동화된 프로세스입니다.

CI(Continuous Integration)는 코드의 빌드, 테스트, 리뷰, 머지 등의 과정을 자동화하여 개발자들이 코드 변경에 대한 피드백을 신속하게 받을 수 있도록 합니다.

CD(Continuous Delivery/Deployment)는 소프트웨어를 빠르고 안정적으로 배포하기 위한 자동화된 프로세스입니다. Continuous Delivery는 수동으로 배포할 수 있도록 배포 자동화까지 수행하고, Continuous Deployment는 배포까지 자동화하여 배포 가능한 상태의 소프트웨어를 지속적으로 제공합니다.

CI/CD를 사용하면 소프트웨어 개발 및 배포에 대한 자동화와 지속적인 개선이 가능해지며, 빠른 속도와 높은 품질을 유지할 수 있습니다.

 

github에는 git action이라는 것을 이용하여 특정한 이벤트를 트리거로 삼아서 원하는 기능을 수행할 수 있게 해주는 기능이 있습니다. 여기서는 pre-commit 패키지를 이용해서 commit 전에 isort black flake8을 수행했던 것처럼 git action을 이용해서 main branch에 pull request가 들어왔을 때  isort black flake8를 자동으로 수행하고 그 결과를 나타낼 수 있도록 해보도록 하겠습니다.

 

밑의 사진의 폴더 구조를 확인하길 바랍니다.. github - workflows 밑의. yml 파일을 이용하여 git action을 수행하게 할 수 있습니다.

- 실행 예시

위 내용은 push와 main에 pull request를 보내는 것을 트리거로 삼아서 gitaction을 이용해서 작성된 행동을 하게 만들어놓은 내용이었습니다. 밑에 코드 공유와 설명을 하도록 하겠습니다.

name: Lint

on:
  push:
  pull_request:
    branches: [ "main" ]

jobs:
  build:

    runs-on: ubuntu-latest
    strategy:
      matrix:
        python-version: [3.9]

    steps:
    - uses: actions/checkout@v3
    - name: Set up Python ${{ matrix.python-version }}
      uses: actions/setup-python@v3
      with:
        python-version: ${{ matrix.python-version }}

    - name: Install pipenv
      run: |
        python -m pip install --upgrade pipenv wheel
    - id: cache-pipenv
      uses: actions/cache@v2
      with:
        path: ~/.local/share/virtualenvs/
        key: ${{ runner.os }}-pipenv-${{ hashFiles('**/Pipfile.lock') }}

    - name: Install dependencies
      if: steps.cache-pipenv.outputs.cache-hit != 'true'
      run: |
        pipenv install

    - name: Lint check
      run: |
        pipenv run isort --check-only .
        pipenv run black --check .
        pipenv run flake8

사실적으로 코드의 흐름은 code 내용중 `-name`을 확인하면 짐작이 가능합니다. 하지만 중요한 포인트는 on: 에서 어떤 조건을 통하여 코드를 실행하게 만드는지가 되겠습니다. 이것을 이용해서 향후에는 tag가 변경되었을 때 또는 태그 숫자의 가장 앞자리가 변경되었을 때 등의 조건으로 변경이 가능하고 이렇게 되었을 때는 gitaction을 이용해서 aws와 연결 자동으로 코드를 배포하는 로직까지 구현할 수 있습니다.

 

해당 내용을 직접 클론해서 테스트해보고 싶으시다면 밑의 저장소를 이용해 보시기 바랍니다.

https://github.com/nmdkims/boilerplate

 

GitHub - nmdkims/boilerplate

Contribute to nmdkims/boilerplate development by creating an account on GitHub.

github.com

 

이것으로 프로젝트 설정에 대한 내용을 마치도록 하겠습니다.

 

저작자표시 비영리 변경금지 (새창열림)

'DevLog' 카테고리의 다른 글

[개발환경셋팅] 안드로이드 앱 출시 준비  (0) 2023.09.17
[개발환경셋팅] 2. commit message template, pull request template 설정  (0) 2023.05.08
[개발환경셋팅] 1. Django 프로젝트 Boilerplate 만들기  (1) 2023.05.08
[개념완성] Django INSTALLED_APPS 앱등록  (0) 2023.05.01
[개념완성] get_object_or_404  (0) 2023.04.21
    'DevLog' 카테고리의 다른 글
    • [개발환경셋팅] 안드로이드 앱 출시 준비
    • [개발환경셋팅] 2. commit message template, pull request template 설정
    • [개발환경셋팅] 1. Django 프로젝트 Boilerplate 만들기
    • [개념완성] Django INSTALLED_APPS 앱등록
    새벽_나그네
    새벽_나그네
    IT, 프로그래밍, 정보, 스마트스토어

    티스토리툴바