summaryrefslogtreecommitdiff
path: root/azure
diff options
context:
space:
mode:
authorNikita Popov <nikita.ppv@gmail.com>2020-09-18 11:32:05 +0200
committerNikita Popov <nikita.ppv@gmail.com>2020-12-18 12:52:54 +0100
commit7a5cc7aa67388ea44b9157665dba6cc425ec988c (patch)
tree6d0754acc4a5317da924d223657b11853fc4ebfc /azure
parent037512cfce6048aae3d3900abb12310e66bc97a5 (diff)
downloadphp-git-7a5cc7aa67388ea44b9157665dba6cc425ec988c.tar.gz
Add basic libmysqlclient CI job
This tests that mysqli and pdo_mysql build against libmysqlclient, and that tests pass for pdo_mysql. mysqli has too many test failures. This is not an officially supported configuration.
Diffstat (limited to 'azure')
-rw-r--r--azure/libmysqlclient_job.yml35
-rw-r--r--azure/libmysqlclient_test.yml53
2 files changed, 88 insertions, 0 deletions
diff --git a/azure/libmysqlclient_job.yml b/azure/libmysqlclient_job.yml
new file mode 100644
index 0000000000..72be92780f
--- /dev/null
+++ b/azure/libmysqlclient_job.yml
@@ -0,0 +1,35 @@
+parameters:
+ configurationName: ''
+ configurationParameters: ''
+ runTestsParameters: ''
+ timeoutInMinutes: 60
+
+jobs:
+ - job: ${{ parameters.configurationName }}
+ timeoutInMinutes: ${{ parameters.timeoutInMinutes }}
+ pool:
+ vmImage: 'ubuntu-20.04'
+ steps:
+ - script: |
+ sudo apt-get update -y | true
+ sudo apt install bison re2c
+ displayName: 'APT'
+ - script: |
+ set -o
+ sudo service mysql start
+ mysql -uroot -proot -e "CREATE DATABASE IF NOT EXISTS test"
+ displayName: 'Setup MySQL server'
+ # Does not support caching_sha2_auth :(
+ #- template: libmysqlclient_test.yml
+ # parameters:
+ # configurationName: ${{ parameters.configurationName }} - MySQL 5.6.49
+ # libmysql: mysql-5.6.49-linux-glibc2.12-x86_64.tar.gz
+ - template: libmysqlclient_test.yml
+ parameters:
+ configurationName: ${{ parameters.configurationName }} - MySQL 5.7.31
+ libmysql: mysql-5.7.31-linux-glibc2.12-x86_64.tar.gz
+ - template: libmysqlclient_test.yml
+ parameters:
+ configurationName: ${{ parameters.configurationName }} - MySQL 8.0.21
+ libmysql: mysql-8.0.21-linux-glibc2.12-x86_64.tar.xz
+ configurationParameters: ${{ parameters.configurationParameters }} --enable-werror
diff --git a/azure/libmysqlclient_test.yml b/azure/libmysqlclient_test.yml
new file mode 100644
index 0000000000..c163345dc4
--- /dev/null
+++ b/azure/libmysqlclient_test.yml
@@ -0,0 +1,53 @@
+parameters:
+ configurationName: ''
+ configurationParameters: ''
+ libmysql: ''
+
+steps:
+ - script: |
+ set -e
+ LIBMYSQL=${{ parameters.libmysql }}
+ MYSQL_BASE=${LIBMYSQL%%-linux-*}
+ MYSQL_VERSION=${MYSQL_BASE#*-}
+ MYSQL_DIR=$HOME/$MYSQL_BASE
+ mkdir -p $MYSQL_DIR
+ URL=https://cdn.mysql.com/Downloads/MySQL-${MYSQL_VERSION%.*}/$LIBMYSQL
+ wget -nv $URL
+ tar -xf $LIBMYSQL --strip-components=1 -C $MYSQL_DIR
+ PDO_MYSQL=${MYSQL_DIR}
+ MYSQLI=${MYSQL_DIR}/bin/mysql_config
+ ./buildconf --force
+ ./configure ${{ parameters.configurationParameters }} \
+ --enable-option-checking=fatal \
+ --disable-all \
+ --enable-pdo \
+ --with-pdo-mysql=${PDO_MYSQL} \
+ --with-mysqli=${MYSQLI}
+ make clean
+ make -j$(/usr/bin/nproc) >/dev/null
+ displayName: 'Build ${{ parameters.configurationName }}'
+ condition: or(succeeded(), failed())
+ - script: |
+ export MYSQL_TEST_USER=root
+ export MYSQL_TEST_PASSWD=root
+ export PDO_MYSQL_TEST_DSN="mysql:host=127.0.0.1;dbname=test"
+ export PDO_MYSQL_TEST_HOST=127.0.0.1
+ export PDO_MYSQL_TEST_USER=root
+ export PDO_MYSQL_TEST_PASS=root
+ export TEST_PHP_JUNIT=junit.xml
+ export REPORT_EXIT_STATUS=no
+ rm -rf junit.xml | true
+ sapi/cli/php run-tests.php -P -q \
+ -g FAIL,XFAIL,BORK,WARN,LEAK,XLEAK,SKIP \
+ --offline --show-diff --show-slow 1000 --set-timeout 120 \
+ ext/pdo_mysql
+ displayName: 'Test ${{ parameters.configurationName }}'
+ condition: or(succeeded(), failed())
+ - task: PublishTestResults@2
+ inputs:
+ testResultsFormat: 'JUnit'
+ testResultsFiles: junit.xml
+ testRunTitle: '${{ parameters.configurationName }}'
+ failTaskOnFailedTests: true
+ displayName: 'Export ${{ parameters.configurationName }} Results'
+ condition: or(succeeded(), failed())