Luc Didry d642eb
image: hatsoftwares/lufi-test-ci:bullseye
Luc Didry e41b08
stages:
Luc Didry bafefd
  - create_release
Luc Didry 73eed1
  - publish_changelog
Luc Didry bffff5
  - pouet_it
Luc Didry e41b08
  - carton
Luc Didry e41b08
  - carton_bdd
Luc Didry e41b08
  - tests
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 c8f3c4
.retry: &retry
Luc Didry c8f3c4
  retry: 2
Luc Didry c8f3c4
  except:
Luc Didry c8f3c4
    - tags
Luc Didry e41b08
.carton_bdd_template: &carton_bdd_definition
Luc Didry c8f3c4
  <<: *retry
Luc Didry e41b08
  stage: carton_bdd
Luc Didry c8f3c4
  cache:
Luc Didry c8f3c4
    key: "$CI_COMMIT_REF_NAME"
Luc Didry e41b08
    paths:
Luc Didry e41b08
      - local/
Luc Didry c8f3c4
    policy: pull
Luc Didry c8f3c4
  artifacts:
Luc Didry c8f3c4
    paths:
Luc Didry c8f3c4
      - local.tar
Luc Didry c8f3c4
    expire_in: 3 hours
Luc Didry 5f134d
  needs:
Luc Didry 5f134d
    - carton
Luc Didry c8f3c4
  after_script:
Luc Didry c8f3c4
    - tar cf local.tar local/
Luc Didry c8f3c4
Luc Didry c8f3c4
.tests_template: &tests_template
Luc Didry c8f3c4
  <<: *retry
Luc Didry e41b08
  stage: tests
Luc Didry c8f3c4
  coverage: '/Total.* (\d+\.\d+)$/'
Luc Didry c8f3c4
  before_script:
Luc Didry c8f3c4
    - tar xf local.tar && rm local.tar
Luc Didry 84c04d
    - which mariadb_config && cd $(dirname $(which mariadb_config)) && ln -s mariadb_config mysql_config
Luc Didry 59f4a7
    - cd $CI_PROJECT_DIR
Luc Didry 59f4a7
    - pwd
Luc Didry c8f3c4
  script:
Luc Didry c8f3c4
    - MOJO_CONFIG="t/${CI_JOB_NAME}.conf" make test
Luc Didry c8f3c4
    - MOJO_CONFIG="t/${CI_JOB_NAME}.conf" make cover
Luc Didry c8f3c4
Luc Didry c8f3c4
.sqlite_template: &sqlite_definition
Luc Didry c8f3c4
  <<: *tests_template
Luc Didry 5f134d
  needs:
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 9333df
      # - name: openstackswift/saio
Luc Didry 9333df
      #   alias: swiftstack-picoswiftstack
Luc Didry e41b08
.pg_template: &pg_definition
Luc Didry c8f3c4
  <<: *tests_template
Luc Didry 5f134d
  needs:
Luc Didry e41b08
    - carton_postgresql
Luc Didry e41b08
  services:
Luc Didry 59f4a7
    - name: postgres:11
Luc Didry e41b08
      alias: postgres
Luc Didry e41b08
    - name: rroemhild/test-openldap
Luc Didry e41b08
      alias: rroemhild-test-openldap
Luc Didry 9333df
      # - name: openstackswift/saio
Luc Didry 9333df
      #   alias: swiftstack-picoswiftstack
Luc Didry e41b08
.mysql_template: &mysql_definition
Luc Didry c8f3c4
  <<: *tests_template
Luc Didry 5f134d
  needs:
Luc Didry e41b08
    - carton_mysql
Luc Didry e41b08
  services:
Luc Didry 59f4a7
    - name: mariadb:10.3
Luc Didry e41b08
      alias: mariadb
Luc Didry e41b08
    - name: rroemhild/test-openldap
Luc Didry e41b08
      alias: rroemhild-test-openldap
Luc Didry 9333df
      # - name: openstackswift/saio
Luc Didry 9333df
      #   alias: swiftstack-picoswiftstack
Luc Didry 73eed1
Luc Didry bffff5
### Publish tag changelog and create a toot
Luc Didry 73eed1
##
Luc Didry 73eed1
#
Luc Didry bffff5
include:
Luc Didry bafefd
  - 'https://framagit.org/fiat-tux/gitlabci-snippets/-/raw/53cf9e6c8c427ecbff4abb9615347a77f7786806/create-release-from-ci.gitlab-ci.yml'
Luc Didry bafefd
  - 'https://framagit.org/fiat-tux/gitlabci-snippets/-/raw/4e4e03322e95e9b0124c714456ebf1bdc02ad43f/publish_changelog.gitlab-ci.yml'
Luc Didry bafefd
  - 'https://framagit.org/fiat-tux/gitlabci-snippets/-/raw/4e4e03322e95e9b0124c714456ebf1bdc02ad43f/pouet-it-from-ci.gitlab-ci.yml'
Luc Didry e41b08
Luc Didry e41b08
### Podcheck
Luc Didry e41b08
##
Luc Didry e41b08
#
Luc Didry e41b08
podcheck:
Luc Didry c8f3c4
  stage: carton
Luc Didry e41b08
  script:
Luc Didry e41b08
    - make podcheck
Luc Didry 73eed1
  except:
Luc Didry 73eed1
    - tags
Luc Didry e41b08
Luc Didry 84c04d
### Cpanfile.snapshot
Luc Didry 84c04d
## Used to get a cpanfile.snapshot from a fresh server (not like my dev VM)
Luc Didry 84c04d
#
Luc Didry 84c04d
#cpanfile_snapshot:
Luc Didry 84c04d
#  stage: carton
Luc Didry 84c04d
#  script:
Luc Didry 84c04d
#    - rm cpanfile.snapshot
Luc Didry 84c04d
#    - which mariadb_config && cd $(dirname $(which mariadb_config)) && ln -s mariadb_config mysql_config
Luc Didry 84c04d
#    - carton install
Luc Didry 84c04d
#    - cat cpanfile.snapshot
Luc Didry 84c04d
#  except:
Luc Didry 84c04d
#    - tags
Luc Didry 84c04d
Luc Didry e41b08
### Install common dependencies
Luc Didry e41b08
##
Luc Didry e41b08
#
Luc Didry e41b08
carton:
Luc Didry c8f3c4
  <<: *retry
Luc Didry e41b08
  stage: carton
Luc Didry c8f3c4
  cache:
Luc Didry c8f3c4
    key: "$CI_COMMIT_REF_NAME"
Luc Didry e41b08
    paths:
Luc Didry e41b08
      - local/
Luc Didry e41b08
  script:
Luc Didry 44507c
    - carton install --deployment --without=sqlite --without=postgresql --without=mysql
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 59f4a7
  before_script:
Luc Didry 59f4a7
    - which mariadb_config && cd $(dirname $(which mariadb_config)) && ln -s mariadb_config mysql_config
Luc Didry 59f4a7
    - cd $CI_PROJECT_DIR
Luc Didry 44507c
  script:
Luc Didry 44507c
    - carton install --deployment --without=sqlite --without=postgresql
Luc Didry e41b08
Luc Didry c8f3c4
### Tests
Luc Didry e41b08
##
Luc Didry e41b08
#
Luc Didry e41b08
sqlite:
Luc Didry e41b08
  <<: *sqlite_definition
Luc Didry e41b08
postgresql:
Luc Didry e41b08
  <<: *pg_definition
Luc Didry 44507c
mysql:
Luc Didry 44507c
  <<: *mysql_definition