4 - &composer_github_auth |
5 githubTokenRateLimitRequest=`curl -H "Authorization: token 310659f0a8658693af9ccb9da8969584b598910a" https://api.github.com/rate_limit`
6 githubTokenRateLimit=`echo $githubTokenRateLimitRequest | jq '.rate.remaining'`
7 echo "Number of github api requests remaining is $githubTokenRateLimit"
8 if [ "$githubTokenRateLimit" -gt 500 ]; then
9 echo "Using composer github api token"
10 composer config --global --auth github-oauth.github.com 310659f0a8658693af9ccb9da8969584b598910a
12 echo "Not using composer github api token"
16 echo "--------------------------------------"
17 echo "Checking for PHP styling (PSR-12) issues"
18 echo "--------------------------------------"
19 composer global require "squizlabs/php_codesniffer=3.*" || failTest=true
20 $HOME/.config/composer/vendor/bin/phpcs -p -n --extensions=php,inc --report-width=120 --standard=ci/phpcs.xml --report=full . || failTest=true
21 # todo clean up method visibility and other refactors in src/
22 # $HOME/.config/composer/vendor/bin/phpcs -p -n --extensions=php,inc --report-width=120 --standard=ci/phpcs_src.xml --report=full src/ || failTest=true
30 echo "-----------------------------------------------"
31 jobTest="${mes} - Checking for PHP styling (PSR-12) issues"
32 jobTests+="${jobTest}\n"
34 echo "-----------------------------------------------"
37 echo "--------------------------------------"
38 echo "Checking for PHP theme styling issues"
39 echo "--------------------------------------"
40 npm install || failTest=true
41 npx stylelint "**/*.css" || failTest=true
42 npx stylelint "**/*.scss" || failTest=true
49 echo "-----------------------------------------------"
50 jobTest="${mes} - Checking for PHP theme styling issues"
51 jobTests+="${jobTest}\n"
53 echo "-----------------------------------------------"
56 echo "------------------------------"
57 echo "Checking for PHP syntax errors"
58 echo "------------------------------"
60 if find . -type f -name "*.php" -exec php -d error_reporting=32767 -l {} \; 2>&1 >&- | grep "^"; then failSyntax=true; fi
61 if find . -type f -name "*.inc" -exec php -d error_reporting=32767 -l {} \; 2>&1 >&- | grep "^"; then failSyntax=true; fi
71 echo "---------------------------------------"
72 jobTest="${mes} - Checking for PHP syntax errors"
73 jobTests+="${jobTest}\n"
75 echo "---------------------------------------"
76 - &dockers_env_start |
78 echo "---------------------------------------------------------------------"
79 echo "Start up the appropriate testing docker system to allow testing below"
80 echo "---------------------------------------------------------------------"
81 cd ci/${DOCKER_DIR} || failTest=true
82 docker-compose up -d || failTest=true
83 cd ../../ || failTest=true
90 echo "------------------------------------------------------------------------------"
91 jobTest="${mes} - Start up the appropriate testing docker system to allow testing below"
92 jobTests+="${jobTest}\n"
94 echo "------------------------------------------------------------------------------"
97 echo "------------------"
98 echo "Main OpenEMR Build"
99 echo "------------------"
100 if [ "$SKIP_COMPOSER_PLATFORM_REQS" = true ]; then
101 echo "(For PHP8 build to work, using --ignore-platform-reqs parameter for composer install; this is temporary)"
102 composer install --ignore-platform-reqs || failTest=true
104 composer install || failTest=true
106 npm install || failTest=true
107 npm run build || failTest=true
108 composer global require phing/phing || failTest=true
109 $HOME/.config/composer/vendor/bin/phing vendor-clean || failTest=true
110 $HOME/.config/composer/vendor/bin/phing assets-clean || failTest=true
111 composer global remove phing/phing || failTest=true
112 composer dump-autoload -o || failTest=true
113 rm -fr node_modules || failTest=true
120 echo "---------------------------"
121 jobTest="${mes} - Main OpenEMR Build"
122 jobTests+="${jobTest}\n"
124 echo "---------------------------"
127 echo "------------------"
128 echo "CCDA OpenEMR Build"
129 echo "------------------"
130 cd ccdaservice || failTest=true
131 npm install || failTest=true
132 cd ../ || failTest=true
139 echo "---------------------------"
140 jobTest="${mes} - CCDA OpenEMR Build"
141 jobTests+="${jobTest}\n"
143 echo "---------------------------"
144 - &install_configure |
146 echo "----------------------------------------------------------------------------------------------"
147 echo "Install and Configure OpenEMR for testing (remove registration modal on login and turn on api)"
148 echo "----------------------------------------------------------------------------------------------"
149 sudo chmod 666 sites/default/sqlconf.php || failTest=true
150 sudo chmod -R 777 sites/default/documents || failTest=true
151 sed -e 's@^exit;@ @' < contrib/util/installScripts/InstallerAuto.php > contrib/util/installScripts/InstallerAutoTemp.php || failTest=true
152 docker exec -i $(docker ps | grep _openemr | cut -f 1 -d " ") sh -c "php -f ${OPENEMR_DIR}/contrib/util/installScripts/InstallerAutoTemp.php rootpass=root server=mysql loginhost=%" || failTest=true
153 docker exec -i $(docker ps | grep _openemr | cut -f 1 -d " ") sh -c "rm -f ${OPENEMR_DIR}/contrib/util/installScripts/InstallerAutoTemp.php" || failTest=true
154 docker exec -i $(docker ps | grep _openemr | cut -f 1 -d " ") sh -c 'mysql -u openemr --password="openemr" -h mysql -e "INSERT INTO product_registration (opt_out) VALUES (1)" openemr' || failTest=true
155 docker exec -i $(docker ps | grep _openemr | cut -f 1 -d " ") sh -c 'mysql -u openemr --password="openemr" -h mysql -e "UPDATE globals SET gl_value = 1 WHERE gl_name = \"rest_api\"" openemr' || failTest=true
156 docker exec -i $(docker ps | grep _openemr | cut -f 1 -d " ") sh -c 'mysql -u openemr --password="openemr" -h mysql -e "UPDATE globals SET gl_value = 1 WHERE gl_name = \"rest_fhir_api\"" openemr' || failTest=true
157 docker exec -i $(docker ps | grep _openemr | cut -f 1 -d " ") sh -c 'mysql -u openemr --password="openemr" -h mysql -e "UPDATE globals SET gl_value = 1 WHERE gl_name = \"rest_portal_api\"" openemr' || failTest=true
158 docker exec -i $(docker ps | grep _openemr | cut -f 1 -d " ") sh -c 'mysql -u openemr --password="openemr" -h mysql -e "UPDATE globals SET gl_value = 1 WHERE gl_name = \"rest_portal_fhir_api\"" openemr' || failTest=true
165 echo "-------------------------------------------------------------------------------------------------------"
166 jobTest="${mes} - Install and Configure OpenEMR for testing (remove registration modal on login and turn on api)"
167 jobTests+="${jobTest}\n"
169 echo "-------------------------------------------------------------------------------------------------------"
172 echo "---------------"
173 echo "Run Unit Tests"
174 echo "---------------"
175 docker exec -i $(docker ps | grep _openemr | cut -f 1 -d " ") sh -c "cd ${OPENEMR_DIR}; php ${OPENEMR_DIR}/vendor/bin/phpunit --testsuite unit --testdox" || failTest=true
182 echo "-----------------------"
183 jobTest="${mes} - Run Unit Tests"
184 jobTests+="${jobTest}\n"
186 echo "-----------------------"
192 docker exec -i $(docker ps | grep _openemr | cut -f 1 -d " ") sh -c "${CHROMIUM_INSTALL}; export PANTHER_NO_SANDBOX=1; cd ${OPENEMR_DIR}; php ${OPENEMR_DIR}/vendor/bin/phpunit --testsuite e2e --testdox" || failTest=true
199 echo "----------------------"
200 jobTest="${mes} - Run E2e Tests"
201 jobTests+="${jobTest}\n"
203 echo "----------------------"
209 docker exec -i $(docker ps | grep _openemr | cut -f 1 -d " ") sh -c "cd ${OPENEMR_DIR}; php ${OPENEMR_DIR}/vendor/bin/phpunit --testsuite api --testdox" || failTest=true
216 echo "----------------------"
217 jobTest="${mes} - Run Api Tests"
218 jobTests+="${jobTest}\n"
220 echo "----------------------"
221 - &build_test_fixtures |
224 echo "Run Fixture Tests"
226 docker exec -i $(docker ps | grep _openemr | cut -f 1 -d " ") sh -c "cd ${OPENEMR_DIR}; php ${OPENEMR_DIR}/vendor/bin/phpunit --testsuite fixtures --testdox" || failTest=true
233 echo "----------------------"
234 jobTest="${mes} - Run Fixture Tests"
235 jobTests+="${jobTest}\n"
237 echo "----------------------"
238 - &build_test_services |
241 echo "Run Service Tests"
243 docker exec -i $(docker ps | grep _openemr | cut -f 1 -d " ") sh -c "cd ${OPENEMR_DIR}; php ${OPENEMR_DIR}/vendor/bin/phpunit --testsuite services --testdox" || failTest=true
250 echo "----------------------"
251 jobTest="${mes} - Run Service Tests"
252 jobTests+="${jobTest}\n"
254 echo "----------------------"
255 - &build_test_validators |
258 echo "Run Validator Tests"
260 docker exec -i $(docker ps | grep _openemr | cut -f 1 -d " ") sh -c "cd ${OPENEMR_DIR}; php ${OPENEMR_DIR}/vendor/bin/phpunit --testsuite validators --testdox" || failTest=true
267 echo "----------------------"
268 jobTest="${mes} - Run Validator Tests"
269 jobTests+="${jobTest}\n"
271 echo "----------------------"
272 - &build_test_controllers |
275 echo "Run Controller Tests"
277 docker exec -i $(docker ps | grep _openemr | cut -f 1 -d " ") sh -c "cd ${OPENEMR_DIR}; php ${OPENEMR_DIR}/vendor/bin/phpunit --testsuite controllers --testdox" || failTest=true
284 echo "----------------------"
285 jobTest="${mes} - Run Controller Tests"
286 jobTests+="${jobTest}\n"
288 echo "----------------------"
289 - &build_test_common |
292 echo "Run Common Tests"
294 docker exec -i $(docker ps | grep _openemr | cut -f 1 -d " ") sh -c "cd ${OPENEMR_DIR}; php ${OPENEMR_DIR}/vendor/bin/phpunit --testsuite common --testdox" || failTest=true
301 echo "----------------------"
302 jobTest="${mes} - Run Common Tests"
303 jobTests+="${jobTest}\n"
305 echo "----------------------"
306 - &job_summary_prep |
312 jobSummary="--------------------------------------------\n"
313 jobSummary+="--------------------------------------------\n"
314 jobSummary+="${mes} - JOB SUMMARY\n"
315 jobSummary+="--------------------------------------------\n"
316 jobSummary+="${jobTests}"
317 jobSummary+="--------------------------------------------"
319 - echo "extension=ldap.so" >>php --ini | grep "Loaded Configuration" | sed -e "s|.:\s||"``
322 - echo 'error_reporting = "E_ALL & ~E_NOTICE & ~E_STRICT"' >> ~/.phpenv/versions/$(phpenv version-name)/etc/conf.d/travis.ini
325 - name: 'Psr12 style'
329 - *composer_github_auth
332 - echo -e "${jobSummary}"
333 - if $failJob; then travis_terminate 1; fi
334 - name: 'Theme style'
340 - echo -e "${jobSummary}"
341 - if $failJob; then travis_terminate 1; fi
342 - name: 'Syntax - PHP 7.2'
348 - echo -e "${jobSummary}"
349 - if $failJob; then travis_terminate 1; fi
350 - name: 'Syntax - PHP 7.3'
356 - echo -e "${jobSummary}"
357 - if $failJob; then travis_terminate 1; fi
358 - name: 'Syntax - PHP 7.4'
364 - echo -e "${jobSummary}"
365 - if $failJob; then travis_terminate 1; fi
366 - name: 'Syntax - PHP 8.0'
372 - echo -e "${jobSummary}"
373 - if $failJob; then travis_terminate 1; fi
374 - name: 'Build and test - PHP 7.3 - Apache - MariaDB 10.5'
377 - DOCKER_DIR=apache_73_105
378 - OPENEMR_DIR=/var/www/localhost/htdocs/openemr
379 - CHROMIUM_INSTALL="apk update; apk add --no-cache chromium chromium-chromedriver; export PANTHER_CHROME_DRIVER_BINARY=/usr/lib/chromium/chromedriver"
383 - *composer_github_auth
390 - *build_test_fixtures
391 - *build_test_services
392 - *build_test_validators
393 - *build_test_controllers
396 - echo -e "${jobSummary}"
397 - if $failJob; then travis_terminate 1; fi
398 - name: 'Build and test - PHP 7.3 - Apache - MariaDB 10.4'
401 - DOCKER_DIR=apache_73_104
402 - OPENEMR_DIR=/var/www/localhost/htdocs/openemr
403 - CHROMIUM_INSTALL="apk update; apk add --no-cache chromium chromium-chromedriver; export PANTHER_CHROME_DRIVER_BINARY=/usr/lib/chromium/chromedriver"
407 - *composer_github_auth
414 - *build_test_fixtures
415 - *build_test_services
416 - *build_test_validators
417 - *build_test_controllers
420 - echo -e "${jobSummary}"
421 - if $failJob; then travis_terminate 1; fi
422 - name: 'Build and test - PHP 7.3 - Apache - MariaDB 10.3'
425 - DOCKER_DIR=apache_73_103
426 - OPENEMR_DIR=/var/www/localhost/htdocs/openemr
427 - CHROMIUM_INSTALL="apk update; apk add --no-cache chromium chromium-chromedriver; export PANTHER_CHROME_DRIVER_BINARY=/usr/lib/chromium/chromedriver"
431 - *composer_github_auth
438 - *build_test_fixtures
439 - *build_test_services
440 - *build_test_validators
441 - *build_test_controllers
444 - echo -e "${jobSummary}"
445 - if $failJob; then travis_terminate 1; fi
446 - name: 'Build and test - PHP 7.3 - Apache - MariaDB 10.2'
449 - DOCKER_DIR=apache_73_102
450 - OPENEMR_DIR=/var/www/localhost/htdocs/openemr
451 - CHROMIUM_INSTALL="apk update; apk add --no-cache chromium chromium-chromedriver; export PANTHER_CHROME_DRIVER_BINARY=/usr/lib/chromium/chromedriver"
455 - *composer_github_auth
462 - *build_test_fixtures
463 - *build_test_services
464 - *build_test_validators
465 - *build_test_controllers
468 - echo -e "${jobSummary}"
469 - if $failJob; then travis_terminate 1; fi
470 - name: 'Build and test - PHP 7.3 - Apache - MySQL 8'
473 - DOCKER_DIR=apache_73_8
474 - OPENEMR_DIR=/var/www/localhost/htdocs/openemr
475 - CHROMIUM_INSTALL="apk update; apk add --no-cache chromium chromium-chromedriver; export PANTHER_CHROME_DRIVER_BINARY=/usr/lib/chromium/chromedriver"
479 - *composer_github_auth
486 - *build_test_fixtures
487 - *build_test_services
488 - *build_test_validators
489 - *build_test_controllers
492 - echo -e "${jobSummary}"
493 - if $failJob; then travis_terminate 1; fi
494 - name: 'Build and test - PHP 7.3 - Apache - MySQL 5.7'
497 - DOCKER_DIR=apache_73_57
498 - OPENEMR_DIR=/var/www/localhost/htdocs/openemr
499 - CHROMIUM_INSTALL="apk update; apk add --no-cache chromium chromium-chromedriver; export PANTHER_CHROME_DRIVER_BINARY=/usr/lib/chromium/chromedriver"
503 - *composer_github_auth
510 - *build_test_fixtures
511 - *build_test_services
512 - *build_test_validators
513 - *build_test_controllers
516 - echo -e "${jobSummary}"
517 - if $failJob; then travis_terminate 1; fi
518 - name: 'Build and test - PHP 7.2 - Nginx - MariaDB 10.5'
521 - DOCKER_DIR=nginx_72
522 - OPENEMR_DIR=/usr/share/nginx/html/openemr
523 - CHROMIUM_INSTALL="apt-get update; apt-get install -y zip libnss3 chromium=80.0.3987.162-1~deb10u1 chromium-common=80.0.3987.162-1~deb10u1"
527 - *composer_github_auth
533 - *build_test_fixtures
534 - *build_test_services
535 - *build_test_validators
536 - *build_test_controllers
539 - echo -e "${jobSummary}"
540 - if $failJob; then travis_terminate 1; fi
541 - name: 'Build and test - PHP 7.3 - Nginx - MariaDB 10.5'
544 - DOCKER_DIR=nginx_73
545 - OPENEMR_DIR=/usr/share/nginx/html/openemr
546 - CHROMIUM_INSTALL="apt-get update; apt-get install -y zip libnss3 chromium=80.0.3987.162-1~deb10u1 chromium-common=80.0.3987.162-1~deb10u1"
550 - *composer_github_auth
556 - *build_test_fixtures
557 - *build_test_services
558 - *build_test_validators
559 - *build_test_controllers
562 - echo -e "${jobSummary}"
563 - if $failJob; then travis_terminate 1; fi
564 - name: 'Build and test - PHP 7.4 - Nginx - MariaDB 10.5'
567 - DOCKER_DIR=nginx_74
568 - OPENEMR_DIR=/usr/share/nginx/html/openemr
569 - CHROMIUM_INSTALL="apt-get update; apt-get install -y zip libnss3 chromium=80.0.3987.162-1~deb10u1 chromium-common=80.0.3987.162-1~deb10u1"
573 - *composer_github_auth
579 - *build_test_fixtures
580 - *build_test_services
581 - *build_test_validators
582 - *build_test_controllers
585 - echo -e "${jobSummary}"
586 - if $failJob; then travis_terminate 1; fi
587 - name: 'Build and test - PHP 8.0 - Nginx - MariaDB 10.5'
590 - DOCKER_DIR=nginx_80
591 - OPENEMR_DIR=/usr/share/nginx/html/openemr
592 - CHROMIUM_INSTALL="apt-get update; apt-get install -y zip libnss3 chromium=80.0.3987.162-1~deb10u1 chromium-common=80.0.3987.162-1~deb10u1"
593 - SKIP_COMPOSER_PLATFORM_REQS=true
597 - *composer_github_auth
603 - *build_test_fixtures
604 - *build_test_services
605 - *build_test_validators
606 - *build_test_controllers
609 - echo -e "${jobSummary}"
610 - if $failJob; then travis_terminate 1; fi
612 - name: 'Build and test - PHP 8.0 - Nginx - MariaDB 10.5'