stages:
  - test
  - publish
  - check_published

docker:
  stage: publish
  image:
    name: gcr.io/kaniko-project/executor:debug
    entrypoint: [""]
  tags:
    - docker
  script:
    - echo "{\"auths\":{\"$CI_REGISTRY\":{\"username\":\"$CI_REGISTRY_USER\",\"password\":\"$CI_REGISTRY_PASSWORD\"}}}" > /kaniko/.docker/config.json
    # The skip-tls-verify flag is there because our registry certificate is self signed
    - /kaniko/executor --context $CI_PROJECT_DIR --skip-tls-verify --dockerfile $CI_PROJECT_DIR/Dockerfile --destination $CI_REGISTRY_IMAGE:$CI_COMMIT_TAG
  only:
    - tags

test:
  tags:
    - docker
  image: python:3.7
  stage: test
  script:
    - pip install -r requirements.txt -r test-requirements.txt
    - python setup.py test

push_pypi:
  only:
    - tags
  tags:
    - docker
  image: python:3.7
  stage: publish
  script:
    - echo $CI_COMMIT_TAG > soil/VERSION
    - pip install twine
    - python setup.py sdist bdist_wheel
    - TWINE_PASSWORD=$PYPI_PASSWORD TWINE_USERNAME=$PYPI_USERNAME python -m twine upload dist/*

check_pypi:
  only:
    - tags
  tags:
    - docker
  image: python:3.7
  stage: check_published
  script:
    - pip install soil==$CI_COMMIT_TAG
  # Allow PYPI to update its index before we try to install 
  when: delayed
  start_in: 2 minutes
