Luc Didry e41b08
image: hatsoftwares/lufi-test-ci:latest
Luc Didry e41b08
stages:
Luc Didry 73eed1
  - publish_changelog
Luc Didry e41b08
  - podcheck
Luc Didry e41b08
  - carton
Luc Didry e41b08
  - carton_bdd
Luc Didry e41b08
  - tests
Luc Didry e41b08
before_script:
Luc Didry e41b08
  - rm -f *db
Luc Didry e41b08
variables:
Luc Didry e41b08
  POSTGRES_DB: lufi_db
Luc Didry e41b08
  POSTGRES_USER: lufi
Luc Didry e41b08
  POSTGRES_PASSWORD: lufi_pwd
Luc Didry e41b08
  MYSQL_DATABASE: lufi_db
Luc Didry e41b08
  MYSQL_USER: lufi
Luc Didry e41b08
  MYSQL_PASSWORD: lufi_pwd
Luc Didry e41b08
  MYSQL_ROOT_PASSWORD: root
Luc Didry e41b08
Luc Didry e41b08
### Jobs templates
Luc Didry e41b08
##
Luc Didry e41b08
#
Luc Didry e41b08
.carton_bdd_template: &carton_bdd_definition
Luc Didry e41b08
  stage: carton_bdd
Luc Didry e41b08
  retry: 2
Luc Didry e41b08
  artifacts:
Luc Didry e41b08
    paths:
Luc Didry e41b08
      - local/
Luc Didry e41b08
    expire_in: 1 week
Luc Didry e41b08
  dependencies:
Luc Didry e41b08
    - carton
Luc Didry 73eed1
  except:
Luc Didry 73eed1
    - tags
Luc Didry e41b08
.sqlite_template: &sqlite_definition
Luc Didry e41b08
  stage: tests
Luc Didry e41b08
  retry: 2
Luc Didry e41b08
  dependencies:
Luc Didry e41b08
    - carton_sqlite
Luc Didry e41b08
  services:
Luc Didry e41b08
    - name: rroemhild/test-openldap
Luc Didry e41b08
      alias: rroemhild-test-openldap
Luc Didry e41b08
  coverage: '/Total.* (\d+\.\d+)$/'
Luc Didry 73eed1
  except:
Luc Didry 73eed1
    - tags
Luc Didry e41b08
.pg_template: &pg_definition
Luc Didry e41b08
  stage: tests
Luc Didry e41b08
  retry: 2
Luc Didry e41b08
  dependencies:
Luc Didry e41b08
    - carton_postgresql
Luc Didry e41b08
  services:
Luc Didry e41b08
    - name: postgres:9.6
Luc Didry e41b08
      alias: postgres
Luc Didry e41b08
    - name: rroemhild/test-openldap
Luc Didry e41b08
      alias: rroemhild-test-openldap
Luc Didry e41b08
  coverage: '/Total .*(\d+\.\d+)$/'
Luc Didry 73eed1
  except:
Luc Didry 73eed1
    - tags
Luc Didry e41b08
.mysql_template: &mysql_definition
Luc Didry e41b08
  stage: tests
Luc Didry e41b08
  retry: 2
Luc Didry e41b08
  dependencies:
Luc Didry e41b08
    - carton_mysql
Luc Didry e41b08
  services:
Luc Didry e41b08
    - name: mariadb:10.1
Luc Didry e41b08
      alias: mariadb
Luc Didry e41b08
    - name: rroemhild/test-openldap
Luc Didry e41b08
      alias: rroemhild-test-openldap
Luc Didry e41b08
  coverage: '/Total .*(\d+\.\d+)$/'
Luc Didry 73eed1
  except:
Luc Didry 73eed1
    - tags
Luc Didry 73eed1
Luc Didry 73eed1
### Publish tag changelog
Luc Didry 73eed1
##
Luc Didry 73eed1
#
Luc Didry 73eed1
publish_changelog:
Luc Didry 73eed1
  stage: publish_changelog
Luc Didry 73eed1
  script:
Luc Didry 73eed1
    - export PROJECT_API_URL="https://framagit.org/api/v4/projects/${CI_PROJECT_ID}"
Luc Didry 73eed1
    - export DESCRIPTION_URL="${PROJECT_API_URL}/repository/tags/${CI_COMMIT_TAG}/release"
Luc Didry 73eed1
    - 'export HEADER="Private-Token: ${GITLAB_API_TOKEN}"'
Luc Didry 73eed1
    - sed -n '/^'$CI_COMMIT_TAG'[[:space:]]/,/^[^\t]/p' CHANGELOG | sed -e 's/^[^\t].*//' -e 's/\t//g' | sed '/^[[:space:]]*$/d' > /tmp/text
Luc Didry 2ac16f
    - if [[ ! -z $GITLAB_API_TOKEN ]]; then curl -s --request POST --data-urlencode "description@/tmp/text" --header "${HEADER}" "${DESCRIPTION_URL}"; fi
Luc Didry 73eed1
  only:
Luc Didry 73eed1
    - tags
Luc Didry e41b08
Luc Didry e41b08
### Podcheck
Luc Didry e41b08
##
Luc Didry e41b08
#
Luc Didry e41b08
podcheck:
Luc Didry e41b08
  stage: podcheck
Luc Didry e41b08
  script:
Luc Didry e41b08
    - make podcheck
Luc Didry 73eed1
  except:
Luc Didry 73eed1
    - tags
Luc Didry e41b08
Luc Didry e41b08
### Install common dependencies
Luc Didry e41b08
##
Luc Didry e41b08
#
Luc Didry e41b08
carton:
Luc Didry e41b08
  stage: carton
Luc Didry e41b08
  artifacts:
Luc Didry e41b08
    paths:
Luc Didry e41b08
      - local/
Luc Didry e41b08
    expire_in: 1 week
Luc Didry e41b08
  dependencies: []
Luc Didry e41b08
  script:
Luc Didry 44507c
    - carton install --deployment --without=sqlite --without=postgresql --without=mysql
Luc Didry e41b08
  when: always
Luc Didry e41b08
  retry: 2
Luc Didry 73eed1
  except:
Luc Didry 73eed1
    - tags
Luc Didry e41b08
Luc Didry e41b08
### Install DB related dependencies
Luc Didry e41b08
##
Luc Didry e41b08
#
Luc Didry e41b08
carton_sqlite:
Luc Didry e41b08
  <<: *carton_bdd_definition
Luc Didry e41b08
  script:
Luc Didry 44507c
    - carton install --deployment --without=postgresql --without=mysql
Luc Didry e41b08
carton_postgresql:
Luc Didry e41b08
  <<: *carton_bdd_definition
Luc Didry e41b08
  script:
Luc Didry 44507c
    - carton install --deployment --without=sqlite --without=mysql
Luc Didry 44507c
carton_mysql:
Luc Didry 44507c
  <<: *carton_bdd_definition
Luc Didry 44507c
  script:
Luc Didry 44507c
    - carton install --deployment --without=sqlite --without=postgresql
Luc Didry e41b08
Luc Didry e41b08
### SQLite tests
Luc Didry e41b08
##
Luc Didry e41b08
#
Luc Didry e41b08
sqlite:
Luc Didry e41b08
  <<: *sqlite_definition
Luc Didry e41b08
  script:
Luc Didry e41b08
    - MOJO_CONFIG=t/sqlite.conf make test
Luc Didry e41b08
    - MOJO_CONFIG=t/sqlite.conf make cover
Luc Didry e41b08
Luc Didry e41b08
### PostgreSQL tests
Luc Didry e41b08
##
Luc Didry e41b08
#
Luc Didry e41b08
postgresql:
Luc Didry e41b08
  <<: *pg_definition
Luc Didry e41b08
  script:
Luc Didry e41b08
    - MOJO_CONFIG=t/postgresql.conf make test
Luc Didry e41b08
    - MOJO_CONFIG=t/postgresql.conf make cover
Luc Didry e41b08
Luc Didry e41b08
### MySQL tests
Luc Didry e41b08
##
Luc Didry e41b08
#
Luc Didry 44507c
mysql:
Luc Didry 44507c
  <<: *mysql_definition
Luc Didry 44507c
  script:
Luc Didry 44507c
    - MOJO_CONFIG=t/mysql.conf make test
Luc Didry 44507c
    - MOJO_CONFIG=t/mysql.conf make cover