github_ci_php81_mysql.yml 17 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332
  1. name: GitHub CI PHP 8.1 MySQL
  2. on:
  3. push:
  4. branches:
  5. - develop
  6. - 1*
  7. - 2*
  8. pull_request:
  9. types: [opened]
  10. permissions:
  11. contents: read
  12. jobs:
  13. github_ci_php81_mysql:
  14. runs-on: ubuntu-latest
  15. services:
  16. mysql:
  17. image: mysql:5.7
  18. env:
  19. MYSQL_ROOT_PASSWORD: password
  20. ports:
  21. - 32574:3306
  22. steps:
  23. # git clone dolibarr into GITHUB_WORKSPACE = /home/runner/work/dolibarr/dolibarr
  24. - uses: actions/checkout@v3
  25. with:
  26. fetch-depth: 1
  27. - name: Version PHP
  28. run: |
  29. php -i | head -
  30. - name: Install packages for PHP 8.1
  31. run: |
  32. sudo composer self-update 2.2.18
  33. sudo chmod -R a+rwx /home/runner
  34. composer -n config -g vendor-dir htdocs/includes
  35. sudo add-apt-repository -y ppa:ondrej/php
  36. sudo apt-get update
  37. sudo apt-get install -y pgloader memcached
  38. sudo apt install apache2 php8.1 php8.1-cli php8.1-curl php8.1-mysql php8.1-pgsql php8.1-gd php8.1-imap php8.1-intl php8.1-ldap php8.1-xml php8.1-mbstring php8.1-xml php8.1-zip libapache2-mod-php8.1
  39. sudo update-alternatives --set php /usr/bin/php8.1
  40. php -i | head -
  41. composer -n require --ignore-platform-reqs phpunit/phpunit ^8 \
  42. php-parallel-lint/php-parallel-lint ^1.2 \
  43. php-parallel-lint/php-console-highlighter ^0 \
  44. php-parallel-lint/php-var-dump-check ~0.4 \
  45. squizlabs/php_codesniffer ^3
  46. sudo rm -fr htdocs/includes/phpunit/php-code-coverage/src/Report/Html
  47. - name: Adding path of binaries tools installed by composer to the PATH
  48. run: |
  49. export PATH="$GITHUB_WORKSPACE/htdocs/includes/bin:$PATH"
  50. echo $PATH
  51. # We must have a directory bin created by the previous composer call
  52. ls $GITHUB_WORKSPACE/htdocs/includes/bin
  53. - name: Version information
  54. run: |
  55. composer -V
  56. # Check Parallel-lint version
  57. echo "Parallel-lint version"
  58. htdocs/includes/bin/parallel-lint -V
  59. # Check PHP CodeSniffer version
  60. echo "PHPCS version"
  61. htdocs/includes/bin/phpcs --version | head -
  62. htdocs/includes/bin/phpcs -i | head -
  63. # Check PHP Vardump check version
  64. echo "PHP Vardump check version"
  65. htdocs/includes/bin/var-dump-check --version
  66. # Check PHPUnit version
  67. echo "PHPUnit version"
  68. htdocs/includes/bin/phpunit --version | head -
  69. # Check Apache version
  70. echo "Apache version"
  71. apache2 -v | head -
  72. # Check Database
  73. echo "Database version"
  74. mysql --version | head -
  75. psql --version
  76. echo "Check pgloader version"
  77. pgloader --version
  78. - name: Create database
  79. run: |
  80. pwd
  81. echo GITHUB_WORKSPACE = $GITHUB_WORKSPACE
  82. sudo apt-get install -y mysql-client
  83. mysql --version | head -
  84. mysql --host 127.0.0.1 --port 32574 -uroot -ppassword -e "SELECT VERSION();" | head -
  85. mysql --host 127.0.0.1 --port 32574 -uroot -ppassword -e "SHOW DATABASES"
  86. echo "Drop and create database"
  87. mysql --host 127.0.0.1 --port 32574 -uroot -ppassword -e 'DROP DATABASE IF EXISTS travis;'
  88. mysql --host 127.0.0.1 --port 32574 -uroot -ppassword -e "CREATE DATABASE IF NOT EXISTS travis CHARACTER SET = 'utf8';"
  89. mysql --host 127.0.0.1 --port 32574 -uroot -ppassword -e "CREATE USER 'travis'@'127.0.0.1' IDENTIFIED BY 'password';"
  90. mysql --host 127.0.0.1 --port 32574 -uroot -ppassword -e 'GRANT ALL PRIVILEGES ON travis.* TO travis@127.0.0.1;'
  91. mysql --host 127.0.0.1 --port 32574 -uroot -ppassword -e 'FLUSH PRIVILEGES;'
  92. mysql --host 127.0.0.1 --port 32574 -uroot -ppassword -D travis < dev/initdemo/mysqldump_dolibarr_3.5.0.sql
  93. mysql --host 127.0.0.1 --port 32574 -uroot -ppassword -D travis -e "UPDATE llx_const set value = '0666' WHERE name = 'MAIN_UMASK';"
  94. - name: Generate Dolibarr conf file
  95. run: |
  96. export CONF_FILE=$GITHUB_WORKSPACE/htdocs/conf/conf.php
  97. echo "Setting up Dolibarr $CONF_FILE"
  98. echo '<?php' > $CONF_FILE
  99. echo '$'dolibarr_main_url_root=\'http://127.0.0.1\'';' >> $CONF_FILE
  100. echo '$'dolibarr_main_document_root=\'/var/www/html\'';' >> $CONF_FILE
  101. echo '$'dolibarr_main_data_root=\'/var/www/html/documents\'';' >> $CONF_FILE
  102. echo '$'dolibarr_main_db_host=\'127.0.0.1\'';' >> $CONF_FILE
  103. echo '$'dolibarr_main_db_name=\'travis\'';' >> $CONF_FILE
  104. echo '$'dolibarr_main_db_user=\'root\'';' >> $CONF_FILE
  105. echo '$'dolibarr_main_db_pass=\'password\'';' >> $CONF_FILE
  106. echo '$'dolibarr_main_instance_unique_id=\'travis1234567890\'';' >> $CONF_FILE
  107. echo '$'dolibarr_main_db_type=\'mysqli\'';' >> $CONF_FILE
  108. echo '$'dolibarr_main_db_port=\'32574\'';' >> $CONF_FILE
  109. echo '$'dolibarr_main_authentication=\'dolibarr\'';' >> $CONF_FILE
  110. cat $CONF_FILE
  111. - name: Generate install.forced.php file to test installation
  112. run: |
  113. export INSTALL_FORCED_FILE=$GITHUB_WORKSPACE/htdocs/install/install.forced.php
  114. echo "Setting up Dolibarr $INSTALL_FORCED_FILE to test installation"
  115. # Ensure we catch errors
  116. set +e
  117. echo '<?php' > $INSTALL_FORCED_FILE
  118. echo '$'force_install_noedit=2';' >> $INSTALL_FORCED_FILE
  119. # For mysql
  120. echo '$'force_install_type=\'mysqli\'';' >> $INSTALL_FORCED_FILE
  121. #echo '$'force_install_type=\'pgsql\'';' >> $INSTALL_FORCED_FILE
  122. echo '$'force_install_dbserver=\'127.0.0.1\'';' >> $INSTALL_FORCED_FILE
  123. echo '$'force_install_database=\'travis\'';' >> $INSTALL_FORCED_FILE
  124. echo '$'force_install_databaselogin=\'root\'';' >> $INSTALL_FORCED_FILE
  125. echo '$'force_install_databasepass=\'password\'';' >> $INSTALL_FORCED_FILE
  126. # For mysql
  127. echo '$'force_install_port=\'32574\'';' >> $INSTALL_FORCED_FILE
  128. #echo '$'force_install_port=\'5432\'';' >> $INSTALL_FORCED_FILE
  129. echo '$'force_install_prefix=\'llx_\'';' >> $INSTALL_FORCED_FILE
  130. echo '$'force_install_createdatabase=false';' >> $INSTALL_FORCED_FILE
  131. echo '$'force_install_createuser=false';' >> $INSTALL_FORCED_FILE
  132. echo '$'force_install_mainforcehttps=false';' >> $INSTALL_FORCED_FILE
  133. echo '$'force_install_main_data_root=\'/var/www/html\'';' >> $INSTALL_FORCED_FILE
  134. cat $INSTALL_FORCED_FILE
  135. - name: Create document directory
  136. run: |
  137. echo "Create documents directory and set permissions"
  138. # and admin/temp subdirectory needed for unit tests
  139. sudo mkdir -p /var/www/html/documents/admin/temp
  140. sudo chmod -R a+rwx /var/www/html/documents
  141. sudo echo "***** First line of dolibarr.log" > /var/www/html/documents/dolibarr.log
  142. sudo chmod a+rwx /var/www/html/documents/dolibarr.log
  143. - name: Copy app into /var/www
  144. run: |
  145. sudo cp -r $GITHUB_WORKSPACE/htdocs/. /var/www/html
  146. sudo mv /var/www/html/index.html /var/www/html/index.disabled.html
  147. sudo ln -fs /var/www/html /var/www/htdocs
  148. sudo cp -r $GITHUB_WORKSPACE/test/. /var/www/test
  149. sudo cp -r $GITHUB_WORKSPACE/dev/. /var/www/dev
  150. sudo cp -r $GITHUB_WORKSPACE/scripts/. /var/www/scripts
  151. - name: Setup Apache
  152. run: |
  153. pwd
  154. whoami
  155. # install apache web server
  156. a2query -s
  157. a2query -m
  158. ls /etc/apache2/sites-available
  159. #sudo cp -f $GITHUB_WORKSPACE/build/travis-ci/apache-githubaction.conf /etc/apache2/sites-available/000-default.conf
  160. #sudo sed -e "s?%GITHUB_WORKSPACE%?$(pwd)?g" --in-place /etc/apache2/sites-available/000-default.conf
  161. a2ensite 000-default
  162. a2enmod php8.1
  163. ls /etc/apache2/sites-enabled
  164. sudo adduser $(whoami) www-data
  165. sudo adduser $(whoami) root
  166. sudo adduser root www-data
  167. sudo chown -R www-data:www-data /etc/apache2/sites-available/
  168. sudo chmod -R 777 /etc/apache2/sites-available/
  169. sudo chown -R www-data:www-data /var/www/html/
  170. ls -l /var/www/html
  171. #ls -l /var/www/html/conf
  172. #ls -l /var/www/html/install/
  173. set +e
  174. sudo cat /etc/apache2/sites-enabled/000-default.conf
  175. sudo service apache2 restart
  176. curl -I localhost
  177. - name: Chech Apache availability
  178. run: |
  179. echo "Checking webserver availability by a wget -O - --debug http://127.0.0.1"
  180. # Ensure we stop on error with set -e
  181. set +e
  182. ls /var/log/apache2
  183. #wget -O - --debug http://127.0.0.1/robots.txt
  184. # The wget should return a page with line '<meta name="generator" content="Dolibarr installer">
  185. wget -O - --debug http://127.0.0.1 > $GITHUB_WORKSPACE/test.html 2>&1
  186. head -n 200 $GITHUB_WORKSPACE/test.html
  187. echo Logs are...
  188. #sudo cat /tmp/install.log
  189. sudo cat /var/log/apache2/access.log
  190. sudo cat /var/log/apache2/error.log
  191. sudo cat /var/log/apache2/other_vhosts_access.log
  192. set +e
  193. - name: Upgrading Dolibarr
  194. run: |
  195. # Ensure we catch errors. Set this to +e if you want to go to the end to see log files.
  196. set -e
  197. sudo chmod -R a+rwx $GITHUB_WORKSPACE
  198. sudo chmod -R a+rwx /var/www
  199. ls -l /var/www
  200. cd /var/www/html/install
  201. echo Execute upgrade, upgrade2 and step5 for each major version
  202. php upgrade.php 3.5.0 3.6.0 ignoredbversion > $GITHUB_WORKSPACE/upgrade350360.log
  203. php upgrade2.php 3.5.0 3.6.0 > $GITHUB_WORKSPACE/upgrade350360-2.log
  204. php step5.php 3.5.0 3.6.0 > $GITHUB_WORKSPACE/upgrade350360-3.log
  205. php upgrade.php 3.6.0 3.7.0 ignoredbversion > $GITHUB_WORKSPACE/upgrade360370.log
  206. php upgrade2.php 3.6.0 3.7.0 > $GITHUB_WORKSPACE/upgrade360370-2.log
  207. php step5.php 3.6.0 3.7.0 > $GITHUB_WORKSPACE/upgrade360370-3.log
  208. php upgrade.php 3.7.0 3.8.0 ignoredbversion > $GITHUB_WORKSPACE/upgrade370380.log
  209. php upgrade2.php 3.7.0 3.8.0 > $GITHUB_WORKSPACE/upgrade370380-2.log
  210. php step5.php 3.7.0 3.8.0 > $GITHUB_WORKSPACE/upgrade370380-3.log
  211. php upgrade.php 3.8.0 3.9.0 ignoredbversion > $GITHUB_WORKSPACE/upgrade380390.log
  212. php upgrade2.php 3.8.0 3.9.0 > $GITHUB_WORKSPACE/upgrade380390-2.log
  213. php step5.php 3.8.0 3.9.0 > $GITHUB_WORKSPACE/upgrade380390-3.log
  214. php upgrade.php 3.9.0 4.0.0 ignoredbversion > $GITHUB_WORKSPACE/upgrade390400.log
  215. php upgrade2.php 3.9.0 4.0.0 > $GITHUB_WORKSPACE/upgrade390400-2.log
  216. php step5.php 3.9.0 4.0.0 > $GITHUB_WORKSPACE/upgrade390400-3.log
  217. php upgrade.php 4.0.0 5.0.0 ignoredbversion > $GITHUB_WORKSPACE/upgrade400500.log
  218. php upgrade2.php 4.0.0 5.0.0 > $GITHUB_WORKSPACE/upgrade400500-2.log
  219. php step5.php 4.0.0 5.0.0 > $GITHUB_WORKSPACE/upgrade400500-3.log
  220. php upgrade.php 5.0.0 6.0.0 ignoredbversion > $GITHUB_WORKSPACE/upgrade500600.log
  221. php upgrade2.php 5.0.0 6.0.0 > $GITHUB_WORKSPACE/upgrade500600-2.log
  222. php step5.php 5.0.0 6.0.0 > $GITHUB_WORKSPACE/upgrade500600-3.log
  223. php upgrade.php 6.0.0 7.0.0 ignoredbversion > $GITHUB_WORKSPACE/upgrade600700.log
  224. php upgrade2.php 6.0.0 7.0.0 > $GITHUB_WORKSPACE/upgrade600700-2.log
  225. php step5.php 6.0.0 7.0.0 > $GITHUB_WORKSPACE/upgrade600700-3.log
  226. php upgrade.php 7.0.0 8.0.0 ignoredbversion > $GITHUB_WORKSPACE/upgrade700800.log
  227. php upgrade2.php 7.0.0 8.0.0 > $GITHUB_WORKSPACE/upgrade700800-2.log
  228. php step5.php 7.0.0 8.0.0 > $GITHUB_WORKSPACE/upgrade700800-3.log
  229. php upgrade.php 8.0.0 9.0.0 ignoredbversion > $GITHUB_WORKSPACE/upgrade800900.log
  230. php upgrade2.php 8.0.0 9.0.0 > $GITHUB_WORKSPACE/upgrade800900-2.log
  231. php step5.php 8.0.0 9.0.0 > $GITHUB_WORKSPACE/upgrade800900-3.log
  232. php upgrade.php 9.0.0 10.0.0 ignoredbversion > $GITHUB_WORKSPACE/upgrade9001000.log
  233. php upgrade2.php 9.0.0 10.0.0 > $GITHUB_WORKSPACE/upgrade9001000-2.log
  234. php step5.php 9.0.0 10.0.0 > $GITHUB_WORKSPACE/upgrade9001000-3.log
  235. php upgrade.php 10.0.0 11.0.0 ignoredbversion > $GITHUB_WORKSPACE/upgrade10001100.log
  236. php upgrade2.php 10.0.0 11.0.0 > $GITHUB_WORKSPACE/upgrade10001100-2.log
  237. php step5.php 10.0.0 11.0.0 > $GITHUB_WORKSPACE/upgrade10001100-3.log
  238. php upgrade.php 11.0.0 12.0.0 ignoredbversion > $GITHUB_WORKSPACE/upgrade11001200.log
  239. php upgrade2.php 11.0.0 12.0.0 > $GITHUB_WORKSPACE/upgrade11001200-2.log
  240. php step5.php 11.0.0 12.0.0 > $GITHUB_WORKSPACE/upgrade11001200-3.log
  241. php upgrade.php 12.0.0 13.0.0 ignoredbversion > $GITHUB_WORKSPACE/upgrade12001300.log
  242. php upgrade2.php 12.0.0 13.0.0 > $GITHUB_WORKSPACE/upgrade12001300-2.log
  243. php step5.php 12.0.0 13.0.0 > $GITHUB_WORKSPACE/upgrade12001300-3.log
  244. php upgrade.php 13.0.0 14.0.0 ignoredbversion > $GITHUB_WORKSPACE/upgrade13001400.log
  245. php upgrade2.php 13.0.0 14.0.0 > $GITHUB_WORKSPACE/upgrade13001400-2.log
  246. php step5.php 13.0.0 14.0.0 > $GITHUB_WORKSPACE/upgrade13001400-3.log
  247. php upgrade.php 14.0.0 15.0.0 ignoredbversion > $GITHUB_WORKSPACE/upgrade14001500.log
  248. php upgrade2.php 14.0.0 15.0.0 > $GITHUB_WORKSPACE/upgrade14001500-2.log
  249. php step5.php 14.0.0 15.0.0 > $GITHUB_WORKSPACE/upgrade14001500-3.log
  250. php upgrade.php 15.0.0 16.0.0 ignoredbversion > $GITHUB_WORKSPACE/upgrade15001600.log
  251. php upgrade2.php 15.0.0 16.0.0 > $GITHUB_WORKSPACE/upgrade15001600-2.log
  252. php step5.php 15.0.0 16.0.0 > $GITHUB_WORKSPACE/upgrade15001600-3.log
  253. php upgrade.php 16.0.0 17.0.0 ignoredbversion > $GITHUB_WORKSPACE/upgrade16001700.log
  254. php upgrade2.php 16.0.0 17.0.0 > $GITHUB_WORKSPACE/upgrade16001700-2.log
  255. php step5.php 16.0.0 17.0.0 > $GITHUB_WORKSPACE/upgrade16001700-3.log
  256. php upgrade.php 17.0.0 18.0.0 ignoredbversion > $GITHUB_WORKSPACE/upgrade17001800.log
  257. php upgrade2.php 17.0.0 18.0.0 > $GITHUB_WORKSPACE/upgrade17001800-2.log
  258. php step5.php 17.0.0 18.0.0 > $GITHUB_WORKSPACE/upgrade17001800-3.log
  259. - name: Result of migration scripts
  260. if: always()
  261. run: |
  262. ls -alrt $GITHUB_WORKSPACE/
  263. echo Show content of last file
  264. cat "$(ls -rt $GITHUB_WORKSPACE/ | tail -n1)"
  265. - name: Enabling new modules
  266. run: |
  267. # Enable modules not enabled into original dump
  268. set -e
  269. cd /var/www/html/install
  270. php upgrade2.php 0.0.0 0.0.0 MAIN_MODULE_API,MAIN_MODULE_ProductBatch,MAIN_MODULE_SupplierProposal,MAIN_MODULE_STRIPE,MAIN_MODULE_ExpenseReport > $GITHUB_WORKSPACE/enablemodule.log
  271. php upgrade2.php 0.0.0 0.0.0 MAIN_MODULE_WEBSITE,MAIN_MODULE_TICKET,MAIN_MODULE_ACCOUNTING,MAIN_MODULE_MRP >> $GITHUB_WORKSPACE/enablemodule.log
  272. php upgrade2.php 0.0.0 0.0.0 MAIN_MODULE_RECEPTION,MAIN_MODULE_RECRUITMENT >> $GITHUB_WORKSPACE/enablemodule.log
  273. php upgrade2.php 0.0.0 0.0.0 MAIN_MODULE_KnowledgeManagement,MAIN_MODULE_EventOrganization,MAIN_MODULE_PARTNERSHIP >> $GITHUB_WORKSPACE/enablemodule.log
  274. php upgrade2.php 0.0.0 0.0.0 MAIN_MODULE_EmailCollector >> $GITHUB_WORKSPACE/enablemodule.log
  275. echo $?
  276. cd -
  277. - name: Result of enabling modules scripts
  278. if: always()
  279. run: |
  280. echo Show content of enablemodule.log file
  281. cat $GITHUB_WORKSPACE/enablemodule.log
  282. - name: Unit testing
  283. run: |
  284. # Ensure we catch errors. Set this to +e instead of -e if you want to go to the end to see dolibarr.log file.
  285. set -e
  286. cd /var/www/html
  287. sudo chmod -R a+rwx /var/www/html/documents
  288. includes/bin/phpunit -d memory_limit=-1 -c /var/www/test/phpunit/phpunittest.xml /var/www/test/phpunit/AllTests.php
  289. phpunitresult=$?
  290. echo "Phpunit return code = $phpunitresult"
  291. set +e
  292. - name: Code quality check - Lint
  293. if: github.event_name == 'push'
  294. run: |
  295. htdocs/includes/bin/parallel-lint -e php --exclude dev/tools/test/namespacemig --exclude htdocs/includes/composer --exclude htdocs/includes/myclabs --exclude htdocs/includes/phpspec --exclude dev/initdata/dbf/includes \
  296. --exclude htdocs/includes/sabre --exclude htdocs/includes/phpoffice/PhpSpreadsheet --exclude htdocs/includes/sebastian \
  297. --exclude htdocs/includes/squizlabs/php_codesniffer --exclude htdocs/includes/jakub-onderka --exclude htdocs/includes/php-parallel-lint --exclude htdocs/includes/symfony \
  298. --exclude htdocs/includes/mike42/escpos-php/example --exclude htdocs/includes/maximebf \
  299. --exclude htdocs/includes/phpunit/ --exclude htdocs/includes/tecnickcom/tcpdf/include/barcodes --exclude htdocs/includes/webmozart --exclude htdocs/includes/webklex --blame .
  300. - name: Code quality check - phpcs
  301. if: github.event_name == 'push'
  302. run: |
  303. htdocs/includes/bin/phpcs -s -p -d memory_limit=-1 --extensions=php --colors --tab-width=4 --standard=dev/setup/codesniffer/ruleset.xml --encoding=utf-8 --runtime-set ignore_warnings_on_exit true .;
  304. - name: Code quality check - var-dump-check
  305. if: github.event_name == 'push'
  306. run: |
  307. htdocs/includes/bin/var-dump-check --extensions php --tracy --exclude htdocs/includes --exclude test/ --exclude htdocs/public/test/ --exclude htdocs/core/lib/functions.lib.php .