일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- 이분탐색
- 알람 시스템
- docker
- 결제서비스
- spring event
- 구현
- 완전탐색
- 트랜잭샨
- 디버깅
- 프로그래머스
- 객체지향패러다임
- prg 패턴
- 백준
- 수신자 대상 다르게
- 쿠키
- BFS
- 셀러리
- 코드 계약
- piplining
- 누적합
- AWS
- branch 전략
- 레디스 동시성
- jwt 표준
- 검색어 추천
- 좋은 코드 나쁜 코드
- 숫자 블록
- gRPC
- 카카오
- 깊게 생각해보기
- Today
- Total
코딩관계론
Git action을 통한 test 자동화 프로세스 구축 본문
머리말
이 글은 프로그램의 품질을 높이기 위해 도입한 테스트 자동화 환경과 그 경험을 공유하는 글입니다. 아래에서는 도입 과정에서 사용한 도구와 기술적인 내용들을 자세히 설명합니다. 또한, 발생한 문제들과 해결 방법도 함께 언급합니다.
[Test code 자동 실행 결과]
프로그램의 품질을 높이기 위해 django의 test code를 자동으로 실행할 수 있는 환경을 구축하였습니다. 이를 위해서는 프로그램을 실행시켜주는 서버가 필요합니다.
전 git action을 선택했는데, 왜냐하면 이미 git action을 통하면 제가 생각했던 기능들을 쉽게 구현할 수 있으며, 다양한 예제들이 존재하기 때문입니다.
아래의 사진은 테스트 코드가 성공했을 때 or 실패했을 때 사용자에게 잔디로 알려주는 최종 결과물입니다.
[Test code 자동 설명]
먼저 우리 팀에서는 dev/aws에서 로컬 버전의 소스들이 모아지면 extension 브랜치로 merge가 진행됩니다. 따라서 extension, dev/aws 브랜치에 pull request가 들어오면 자동으로 테스트 코드를 수행하도록 하였습니다.
그러나, django에서 테스트 파일을 실행할 때 test용 database를 생성할지 사용자에게 요청하는 단계가 있습니다. 그러나 git_action에서 사용자가 답변을 입력할 수 없기에 --no-input 옵션을 사용하여 사용자의 답변을 요구하지 않도록 하였습니다.
또한 제가 만든 프로그램은 특정 컨테이너에 의존하고 있는 환경이어서 compose를 up하고 python manage.py test를 진행했어야 했지만 서버가 단독으로 구동이 된다면 python manage.py test의 명령어로만 진행하셔도 무방합니다.
git action의 success 함수를 사용하여 action의 성공 여부에 따라서 사용자에게 메세지를 달리 구성해서 전송하도록 했습니다.
좀 더 읽기 쉽게 하기 위해 구체적인 코드나 명령어는 인용 부호 안에 넣었습니다. 이 글이 도움이 되었기를 바랍니다.
name: Run test code
on:
push:
branches:
- extension
- dev/aws
pull_request:
branches:
- extension
- dev/aws
jobs:
build:
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
python-version: ["3.7"]
steps:
- uses: actions/checkout@v3
- name: Set up Python ${{ matrix.python-version }} with checkout
uses: actions/setup-python@v3
- name: build-docker-compose
run: |
docker-compose -f docker-compose-dev.yml build
- name: run_test_code
run: |
docker-compose -f docker-compose-dev.yml up -d
docker-compose -f docker-compose-dev.yml run --rm app sh -c "python3 manage.py test --no-input"
- name: Send jandi when it succeed
if: ${{ success() }}
uses: ./.github/workflows/actions/jandi-notify
with:
status: success
incoming_url: https://wh.jandi.com/connect-api/webhook/<잔디에서 얻을 수 있는 webhook>
- name: Send jandi when failed
if: ${{ failure() }}
uses: ./.github/workflows/actions/jandi-notify
with:
status: failure
incoming_url: https://wh.jandi.com/connect-api/webhook/<잔디에서 얻을 수 있는 webhook>
'Git_Action' 카테고리의 다른 글
Git Action - Git Action.YAML (0) | 2023.02.05 |
---|---|
Git Action - YAML (1) | 2023.02.05 |