Привет, есть апп, допустим на питоне, который в пайплайне собирается в докер, кладется к реп на gitlab и затем пушится в виде докера на прод.
Как его тестировать? Я бы хотел тестировать после билда, те в идеале я бы хотел взять Dockerfile из самого проекта, собрать апп( оно и так делается) и запускать тесты уже на собраном докере , а затем деплоить.
Я не хочу писать в тесте еще раз руками сборку того, что уже и так написано в Dockerfile
Вот тестовый проект
Dockerfile
FROM alpine:3.11
WORKDIR /app
RUN apk add --update --no-cache python3 openssl tzdata git\
&& pip3 install --upgrade pip \
&& pip3 install --upgrade flask flask-restful notion
COPY main.py /app
CMD ["python3", "-u", "/app/main.py"]
gitlab-ci.yml
stages:
- publish
- deploy
variables:
TAG_LATEST: $CI_REGISTRY_IMAGE/$CI_COMMIT_REF_NAME:latest
TAG_COMMIT: $CI_REGISTRY_IMAGE/$CI_COMMIT_REF_NAME:$CI_COMMIT_SHORT_SHA
publish:
image: docker:latest
stage: publish
services:
- docker:dind
script:
- docker build -t $TAG_COMMIT -t $TAG_LATEST .
- docker login -u gitlab-ci-token -p $CI_BUILD_TOKEN $CI_REGISTRY
- docker push $TAG_COMMIT
- docker push $TAG_LATEST
deploy:
image: alpine:latest
stage: deploy
tags:
- deployment
script:
- chmod og= $ID_RSA
- apk update && apk add openssh-client
- ssh -i $ID_RSA -o StrictHostKeyChecking=no $SERVER_USER@$SERVER_IP "docker login -u gitlab-ci-token -p $CI_BUILD_TOKEN $CI_REGISTRY"
- ssh -i $ID_RSA -o StrictHostKeyChecking=no $SERVER_USER@$SERVER_IP "docker pull $TAG_COMMIT"
- ssh -i $ID_RSA -o StrictHostKeyChecking=no $SERVER_USER@$SERVER_IP "docker container rm -f my-app || true"
- ssh -i $ID_RSA -o StrictHostKeyChecking=no $SERVER_USER@$SERVER_IP "docker run -d -p 5050:5050 --name my-app $TAG_COMMIT"
environment:
name: production
url: http://XX.XX.XX.XX
only:
- master