Commit 9ec56533 authored by Thomas Braun's avatar Thomas Braun
Browse files

Merge branch 'rework-ci-and-add-database-upgrade-job' into 'main'

.gitlab-ci.yml: Prefer ready made cppTango CI docker images and add tango db upgrade test job

While at it we also switch to cppTango main for running the tests.

See merge request !144
parents 8fdebf23 76612295
Loading
Loading
Loading
Loading
Loading
+46 −30
Original line number Diff line number Diff line
@@ -106,33 +106,23 @@ run-tests-with-mariadb:
    - amd64
    - docker
    - linux
  image: debian:bookworm
  image: registry.gitlab.com/tango-controls/docker/ci/cpp/debian12:cppTango_version_main
  before_script:
    - apt-get update
    - sudo apt-get update
    - >
      apt-get install -y
      build-essential
      cmake
      sudo apt-get install -y
      libboost-test-dev
      libtango-dev
      libmariadb-dev-compat
      mariadb-server
      pipx
      python3
      sudo
    - pipx install gcovr==8.4
    - pipx ensurepath
    - source ~/.bashrc
    - sudo cp ci/99_non-default-port.cnf /etc/mysql/mariadb.conf.d
    - sudo cp ci/debian.cnf /etc/mysql
    - service mariadb restart
    - sudo service mariadb restart
    - sudo mysql --defaults-file=/etc/mysql/debian.cnf -u root -e "SET PASSWORD = PASSWORD('secret');"
    - echo "TANGO_HOST=127.0.0.1:10000" > /etc/tangorc
    - echo "TANGO_HOST=127.0.0.1:10000" | sudo tee -a /etc/tangorc
  script:
    - mkdir build
    - cmake -B build -S . -G Ninja -DTDB_ENABLE_COVERAGE=ON -DBUILD_TESTING=ON -DMYSQL_ADMIN=root -DMYSQL_HOST="127.0.0.1:4711" -DMYSQL_ADMIN_PASSWD=secret
    - cmake --build build
    - cd build
    - cmake -DTDB_ENABLE_COVERAGE=ON -DBUILD_TESTING=ON -DMYSQL_ADMIN=root -DMYSQL_HOST="127.0.0.1:4711" -DMYSQL_ADMIN_PASSWD=secret ..
    - make
    - ctest --output-on-failure
    # coverage
    - cd ..
@@ -168,31 +158,57 @@ run-tests-with-mysql:
    - amd64
    - docker
    - linux
  image: ubuntu:noble
  image: registry.gitlab.com/tango-controls/docker/ci/cpp/ubuntu-24.04:cppTango_version_main
  before_script:
    - apt-get update
    - sudo apt-get update
    - >
      apt-get install -y
      build-essential
      cmake
      sudo apt-get install -y
      libboost-test-dev
      libtango-dev
      libmysqlclient-dev
      mysql-server
      sudo
    - service mysql restart
    - sudo mysql -u root -e "ALTER USER 'root'@'localhost' IDENTIFIED BY 'secret';"
    - echo "TANGO_HOST=127.0.0.1:10000" > /etc/tangorc
    - sudo service mysql restart
    - sudo mysql -e "ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'secret'; FLUSH PRIVILEGES;"
    - echo "TANGO_HOST=127.0.0.1:10000" | sudo tee -a /etc/tangorc
  script:
    - mkdir build
    - cmake -B build -S . -G Ninja -DBUILD_TESTING=ON -DMYSQL_ADMIN=root -DMYSQL_ADMIN_PASSWD=secret -DMYSQL_HOST="127.0.0.1"
    - cmake --build build
    - cd build
    - cmake -DBUILD_TESTING=ON -DMYSQL_ADMIN=root -DMYSQL_ADMIN_PASSWD=secret ..
    - make
    - ctest --output-on-failure
  artifacts:
    reports:
      junit: build/JU_*.xml

test-db-upgrade:
  stage: test
  dependencies: []
  tags:
    - amd64
    - docker
    - linux
  image: registry.gitlab.com/tango-controls/docker/ci/cpp/debian12:cppTango_version_main
  before_script:
    - sudo apt-get update
    - >
      sudo apt-get install -y
      libboost-test-dev
      libmariadb-dev-compat
      mariadb-server
    - sudo service mariadb restart
    - sudo mysql -u root -e "SET PASSWORD = PASSWORD('secret');"
    - echo "TANGO_HOST=127.0.0.1:10000" | sudo tee -a /etc/tangorc
  script:
    - cmake -B build -S . -DBUILD_TESTING=OFF -DMYSQL_ADMIN=root -DMYSQL_ADMIN_PASSWD=secret
    - cd build
    - ./create_db.sh
    - mariadb-dump -u root -psecret --routines --events --compact tango > database-before.sql
    - mariadb -u root -psecret < update_db_from_5.23_to_5.24.sql
    - mariadb-dump -u root -psecret --routines --events --compact tango > database-after.sql
    - diff -Nur database-before.sql database-after.sql
  artifacts:
    paths:
      - build/database-before.sql
      - build/database-after.sql

release_job:
  dependencies: []
  tags:
+7 −0
Original line number Diff line number Diff line
@@ -217,6 +217,13 @@ All tests always pass.

Testing is currently not support on Windows.

# Database upgrade todos for developers

- Create a new update_db_from_A.BB_to_C.DD.sql.in. The SQL statements must be idempotent, meaning they should
  have the same result on applying them to already upgraded databases.
- Add it to configure/CMakeLists.txt
- Add it to the test-db-upgrade gitlab CI job

# Release procedure

- Check that all MRs and issues which were handled in the currently cycle