mirror of
https://github.com/gsi-upm/senpy
synced 2024-12-22 13:08:13 +00:00
134 lines
3.7 KiB
YAML
134 lines
3.7 KiB
YAML
# 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}
|