github_ci_php81_mysql.yml.disabled 17 KB

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