# Uncomment if you want to use docker-in-docker # image: gsiupm/dockermake:latest # services: # - docker:dind # When using dind, it's wise to use the overlayfs driver for # improved performance. stages: - test - publish - test_image - deploy variables: KUBENS: senpy LATEST_IMAGE: "${HUB_REPO}:${CI_COMMIT_SHORT_SHA}" SENPY_DATA: "/senpy-data/" # This is configured in the CI job NLTK_DATA: "/senpy-data/nltk_data" # Store NLTK downloaded data docker: stage: publish image: name: gcr.io/kaniko-project/executor:debug entrypoint: [""] variables: PYTHON_VERSION: "3.10" tags: - docker script: - echo $CI_COMMIT_TAG > senpy/VERSION - sed "s/{{PYVERSION}}/$PYTHON_VERSION/" Dockerfile.template > Dockerfile - echo "{\"auths\":{\"$CI_REGISTRY\":{\"username\":\"$CI_REGISTRY_USER\",\"password\":\"$CI_REGISTRY_PASSWORD\"},\"https://index.docker.io/v1/\":{\"auth\":\"$HUB_AUTH\"}}}" > /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 --destination $HUB_REPO:$CI_COMMIT_TAG only: - tags docker-latest: stage: publish image: name: gcr.io/kaniko-project/executor:debug entrypoint: [""] variables: PYTHON_VERSION: "3.10" tags: - docker script: - echo git.${CI_COMMIT_SHORT_SHA} > senpy/VERSION - sed "s/{{PYVERSION}}/$PYTHON_VERSION/" Dockerfile.template > Dockerfile - echo "{\"auths\":{\"$CI_REGISTRY\":{\"username\":\"$CI_REGISTRY_USER\",\"password\":\"$CI_REGISTRY_PASSWORD\"},\"https://index.docker.io/v1/\":{\"auth\":\"$HUB_AUTH\"}}}" > /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 $LATEST_IMAGE --destination "${HUB_REPO}:latest" only: refs: - master testimage: only: - tags tags: - docker stage: test_image image: "$CI_REGISTRY_IMAGE:$CI_COMMIT_TAG" script: - python -m senpy --no-run --test testpy37: tags: - docker variables: SENPY_STRICT: "false" image: python:3.7 stage: test script: - pip install -r requirements.txt -r test-requirements.txt - python setup.py test testpy310: tags: - docker variables: SENPY_STRICT: "true" image: python:3.10 stage: test script: - pip install -r requirements.txt -r test-requirements.txt -r extra-requirements.txt - python setup.py test push_pypi: only: - tags tags: - docker image: python:3.10 stage: publish script: - echo $CI_COMMIT_TAG > senpy/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.10 stage: deploy script: - pip install senpy==$CI_COMMIT_TAG # Allow PYPI to update its index before we try to install when: delayed start_in: 10 minutes latest-demo: only: refs: - master tags: - docker image: alpine/k8s:1.22.6 stage: deploy environment: production variables: KUBECONFIG: "/kubeconfig" # Same image as docker-latest IMAGEWTAG: "${LATEST_IMAGE}" KUBEAPP: "senpy" script: - echo "${KUBECONFIG_RAW}" > $KUBECONFIG - kubectl --kubeconfig $KUBECONFIG version - cd k8s/ - cat *.yaml *.tmpl 2>/dev/null | envsubst | kubectl --kubeconfig $KUBECONFIG apply --namespace ${KUBENS:-default} -f - - kubectl --kubeconfig $KUBECONFIG get all,ing -l app=${KUBEAPP} --namespace=${KUBENS:-default}