github_ci_php71_pgsql.yml 18 KB

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