image: python:3.9

#services:
#  - postgres:13

variables:
  POSTGRES_DB: kszkepzes
  CONTAINER_IMAGE: 'registry.kszk.bme.hu/kszk/devteam/$CI_PROJECT_NAME:$CI_COMMIT_REF_NAME'

cache:
  key: '$CI_JOB_NAME-$CI_COMMIT_REF_SLUG'
  paths:
    - .cache/pip
    - env/

stages:
  - Test and Flake8
  - Docker Build
  - deploy

Flake8:
  stage: Test and Flake8
  only:
    - dev
    - master
    - tags
  tags: [kszk]
  script:
    - python -V
    - python3 -m venv env
    - source env/bin/activate
    - pip install -r requirements/production.txt
    - flake8 --max-line-length=125 --exclude=src/kszkepzes,migrations,env

# TODO write tests
# Test:
#   stage: Test and Flake8
#   only:
#     - dev
#     - master
#   tags: [kszk]
#   variables:
#     DATABASE_URL: 'postgresql://postgres:postgres@postgres:5432/$POSTGRES_DB'
#     SECRET_KEY: 'secret'
#     AUTHSCH_KEY: 'secret'
#     AUTHSCH_SECRET: 'secret'
#   script:
#     - python -V
#     - python3 -m venv env
#     - source env/bin/activate
#     - pip install -r requirements/production.txt
#     - python src/manage.py test

Docker build to KSZK registry:
  stage: Docker Build
  tags: [kszk]
  only:
    - tags
  image:
    name: gcr.io/kaniko-project/executor:debug
    entrypoint: ['']
  script:
    - echo "{\"auths\":{\"registry.kszk.bme.hu\":{\"username\":\"$REGISTRY_USER\",\"password\":\"$REGISTRY_PASSWORD\"}}}" > /kaniko/.docker/config.json
    - /kaniko/executor --context $CI_PROJECT_DIR --dockerfile $CI_PROJECT_DIR/Dockerfile --destination $CONTAINER_IMAGE

Deploy to Kubernetes:
  stage: deploy
  image: alpine
  tags: [devteam]
  environment:
    name: master
  script:
    - apk add --no-cache curl
    - curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl"
    - chmod +x ./kubectl
    - mv ./kubectl /usr/local/bin/kubectl
    - kubectl version
    - cd k8s
    - sed -i "s|##IMAGETAG##|${CI_COMMIT_REF_NAME}|" deployment.yml
    # A kovetkezo ket sor egy undorito workaround a mindig valtozo init kontenerek miatt letrejovo es beakado replicasetek miatt. Pls replace, ha van jobb otlet.
    - kubectl delete deployment apache-static || true
    - kubectl delete deployment kszkepzes-backend || true
    - kubectl apply -f deployment.yml
  only:
    - tags