variables: PYPI_USER: SECURE PYPI_PASS: SECURE DOCKER_USER: SECURE DOCKER_PASS: SECURE DOCKER_DRIVER: overlay2 before_script: - FRACTALIS_VERSION=$(grep version setup.py | grep -o "[0-9]\+.[0-9]\+.[0-9]\+") - DOCKER_IMAGE_TAG="fractalis:$FRACTALIS_VERSION" - SDIST=fractalis-$FRACTALIS_VERSION.tar.gz stages: - build_sdist - build_image - test - release build:sdist: stage: build_sdist image: python:3.5.5-alpine3.7 script: - python3 setup.py sdist artifacts: expire_in: 1h paths: - dist/ build:image: stage: build_image image: docker:17.12.1 services: - docker:17.12.1-ce-dind tags: - privileged script: - docker build -t $DOCKER_USER/$DOCKER_IMAGE_TAG -f docker/Dockerfile --build-arg SDIST=dist/$SDIST . - docker save $DOCKER_USER/$DOCKER_IMAGE_TAG -o image.tar dependencies: - build:sdist artifacts: expire_in: 1h paths: - image.tar test: stage: test image: docker:17.12.1 tags: - privileged services: - redis:3.2.11-alpine - rabbitmq:3.7.4-alpine - docker:17.12.1-ce-dind script: - docker load -i image.tar - env - > docker run $DOCKER_USER/$DOCKER_IMAGE_TAG sh -c " env && printf \"REDIS_HOST='$REDIS_PORT_6379_TCP_ADDR'\nBROKER_URL='amqp://guest:guest@$RABBITMQ_PORT_5672_TCP_ADDR:5672//'\nCELERY_RESULT_BACKEND='redis://$REDIS_PORT_6379_TCP_ADDR:6379'\" > /config.py && export FRACTALIS_CONFIG=/config.py && celery worker -D -A fractalis:celery -l debug --concurrency=1 && pytest --color=yes --verbose --capture=no --cov=/usr/lib/python3.4/site-packages/fractalis tests/ " dependencies: - build:image release:pypi: stage: release image: python:3.5.5-alpine3.7 script: - pip3 install twine - twine upload dist/$SDIST -u $PYPI_USER -p $PYPI_PASS dependencies: - build:sdist only: - tags release:docker: stage: release image: docker:17.12.1 services: - docker:17.12.1-ce-dind tags: - privileged script: - docker load -i image.tar - docker login -u $DOCKER_USER -p $DOCKER_PASS - docker push $DOCKER_USER/$DOCKER_IMAGE_TAG dependencies: - build:image only: - tags