기존의 테스팅된 GitLab CI환경의 경우는 SQLite를 기반으로 테스팅 DB를 만들어 테스트 코드를 실행하였다
.gitlab-ci.yml
파일
stages:
- test
- build
- deploy
test:
stage: test
image: python:3.7
script:
- pip install -r requirements.txt
- python manage.py migrate
- pytest companies/tests/test_api.py -v --durations=0 -p no:warnings
build:
stage: build
script:
- echo "start build"
deploy:
stage: deploy
script:
- echo "start deploy"
실제 개발 및 배포환경은 SQLite가 아닌 Postgresql에서 동작하도록 할 필요가 있기 때문에 이와 관련된 환경세팅이 완료되어야 한다는 생각이 들었다.
이번 프로젝트에서는 GitLab CI를 Postgresql에서 실행할 수 있도록 관련 설정을 구성하는 것이 목표이다.
https://gitlab.com/gitlab-org/gitlab/-/blob/master/lib/gitlab/ci/templates/Django.gitlab-ci.yml
위의 링크에 첨부된 예시 소스코드를 살펴보자, 위의 기본적인 python image에 postgresql 이미지를 붙여야한다.
serivce
: Job이 실행되는 도중에 생성되는 Docker 이미지를 설정할 수 있다. 이때 정의되는 image의 경우는 image
로 설정한 이미지와 연동이 가능하다.먼저 직접적인 코드를 작성하기 전에, stage 밑에서 실행되는 job의 이미지가 어느 부분까지 연동이 될 수 있을 지 확인할 필요가 있었다.
→ 즉, 위의 test job에서 사용한 파이썬 이미지를 build에서 이용할 수 있을까(1)
→ 같은 stage에 있는 연동된 이미지를 사용할 수 있을까?(2)
테스트 .gitlab-ci.yml
파일
stages:
- test
- build
- deploy
test:
stage: test
image: python:3.7
script:
- pip install -r requirements.txt
- python manage.py migrate
- pytest companies/tests/test_api.py -v --durations=0 -p no:warnings
build:
stage: build
image: python:3.7
script:
- pip freeze
build2:
stage: build
script:
- pip freeze
deploy:
stage: deploy
script:
- echo "start deploy"
일단 결과는 다음과 같았다. 각 stage의 환경은 동시적으로 동작하기 때문에 job별로 독립적인 환경이 설정된다. 실패한 build2의 로그를 살펴보면 아래와 같다.
사용된 파이썬 이미지가 공통으로 사용될 것이라고 예상하였지만 그렇지 않았음을 보여준다.