-
-
Notifications
You must be signed in to change notification settings - Fork 2.8k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Qual: .github workflow must exist when included
./.github/workflows/gh-travis.yml is included and inactive, but it must exist for ci.yml. To keep ci.yml the same accross versions, gh-travis.yml is included.
- Loading branch information
Showing
5 changed files
with
381 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,49 @@ | ||
--- | ||
# This runs a travis script inside a github runner | ||
name: Travis | ||
# Controls when the workflow will run | ||
on: | ||
# push: | ||
# pull_request: | ||
workflow_call: | ||
inputs: | ||
gh_event: | ||
required: true | ||
type: string | ||
workflow_dispatch: | ||
|
||
concurrency: | ||
group: travis-${{ github.workflow }}-${{ github.event.pull_request.number || github.ref | ||
}} | ||
cancel-in-progress: true | ||
env: | ||
gh_event: ${{ inputs.gh_event || github.event_name }} | ||
GITHUB_JSON: ${{ toJSON(github) }} # Helps in debugging Github Action | ||
# A workflow run is made up of one or more jobs that can run sequentially or in parallel | ||
jobs: | ||
# This workflow contains a single job | ||
gh-travis: | ||
# The type of runner that the job will run on | ||
runs-on: ubuntu-latest | ||
strategy: | ||
fail-fast: false | ||
# matrix: | ||
# php-version: | ||
# # PHPStan requires PHP >= 7.2. | ||
# #- "7.2" | ||
# - "8.2" | ||
# Steps represent a sequence of tasks that will be executed as part of the job | ||
steps: | ||
- name: Checkout travis file | ||
uses: actions/checkout@v4 | ||
- name: Run .travis.yml build script | ||
uses: ktomk/run-travis-yml@v1 | ||
with: | ||
# run-job: travis # name of a job in travis file | ||
allow-failure: false | ||
# file: .travis.yml | ||
# steps: | # Default: setup, before_install, install, before_script, script, after_script, before_deploy | ||
# install | ||
# script | ||
# env: | ||
# TRAVIS_PHP_VERSION: ${{ matrix.php-version }} |
Empty file.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,58 @@ | ||
--- | ||
on: | ||
# pull_request: | ||
# push: | ||
# schedule: | ||
# # execute once a day, the 1st | ||
# - cron: 10 9 * * * | ||
workflow_call: | ||
inputs: | ||
gh_event: | ||
required: true | ||
type: string | ||
workflow_dispatch: | ||
|
||
concurrency: | ||
group: phan-${{ github.workflow }}-${{ github.ref }} | ||
cancel-in-progress: true | ||
env: | ||
gh_event: ${{ inputs.gh_event || github.event_name }} | ||
PHAN_CONFIG: > | ||
${{ 'dev/tools/phan/config.php' }} | ||
PHAN_BASELINE: dev/tools/phan/baseline.txt | ||
PHAN_MIN_PHP: 7.0 | ||
PHAN_QUICK: ${{ github.event.schedule && '' || '--quick' }} | ||
GITHUB_JSON: ${{ toJSON(github) }} # Helps in debugging Github Action | ||
|
||
name: phan | ||
jobs: | ||
phan: | ||
name: Run phan | ||
runs-on: ubuntu-latest | ||
# Do not run schedule on forks | ||
if: | | ||
github.repository == 'Dolibarr/dolibarr' | ||
|| github.event.schedule == false | ||
steps: | ||
- uses: actions/checkout@v4 | ||
- name: Setup PHP | ||
uses: shivammathur/setup-php@v2 | ||
with: | ||
php-version: 8.2 | ||
coverage: none # disable xdebug, pcov | ||
tools: cs2pr,phan | ||
- name: Run Phan analysis | ||
run: | | ||
phan $PHAN_QUICK -k $PHAN_CONFIG -B $PHAN_BASELINE --analyze-twice --minimum-target-php-version $PHAN_MIN_PHP --output-mode=checkstyle -o _phan.xml | ||
- name: Add results to PR | ||
if: ${{ always() }} | ||
run: | | ||
cs2pr --prepend-filename --prepend-source --notices-as-warnings _phan.xml | ||
- name: Provide phan log as artifact | ||
uses: actions/upload-artifact@v4 | ||
if: ${{ always() }} | ||
with: | ||
name: phan-srcrt | ||
# path: ${{ github.workspace }}/phan.log | ||
path: ${{ github.workspace }}/_phan.xml | ||
retention-days: 2 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,88 @@ | ||
--- | ||
# This is a basic workflow to check code with PHPSTAN tool | ||
name: PHPStan | ||
# Controls when the workflow will run | ||
on: | ||
# push: | ||
# pull_request: | ||
workflow_call: | ||
inputs: | ||
gh_event: | ||
required: true | ||
type: string | ||
workflow_dispatch: | ||
|
||
concurrency: | ||
group: stan-${{ github.workflow }}-${{ github.event.pull_request.number || github.ref | ||
}} | ||
cancel-in-progress: true | ||
env: | ||
gh_event: ${{ inputs.gh_event || github.event_name }} | ||
CACHE_KEY_PART: ${{ ( inputs.gh_event == 'pull_request' || github.event_name == 'pull_request' ) && format('{0}-{1}', github.base_ref, github.head_ref) || github.ref_name }} | ||
GITHUB_JSON: ${{ toJSON(github) }} # Helps in debugging Github Action | ||
# A workflow run is made up of one or more jobs that can run sequentially or in parallel | ||
jobs: | ||
# This workflow contains a single job | ||
php-stan: | ||
# The type of runner that the job will run on | ||
runs-on: ubuntu-latest | ||
strategy: | ||
fail-fast: false | ||
matrix: | ||
php-version: | ||
# PHPStan requires PHP >= 7.2. | ||
#- "7.2" | ||
- '8.2' | ||
# Steps represent a sequence of tasks that will be executed as part of the job | ||
steps: | ||
# Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it | ||
- uses: actions/checkout@v4 | ||
|
||
# Get PHP and addons | ||
- name: Setup PHP | ||
id: setup-php | ||
uses: shivammathur/setup-php@v2 | ||
with: | ||
php-version: ${{ matrix.php-version }} | ||
tools: phpstan, cs2pr | ||
extensions: calendar, json, imagick, gd, zip, mbstring, intl, opcache, imap, | ||
mysql, pgsql, sqlite3, ldap, xml, mcrypt | ||
|
||
# Restore old cache | ||
- name: Restore phpstan cache | ||
id: cache | ||
uses: actions/cache/restore@v4 | ||
with: | ||
path: ./.github/tmp | ||
key: phpstan-cache-${{ matrix.php-version }}-${{ env.CACHE_KEY_PART }}-${{ | ||
github.run_id }} | ||
restore-keys: | | ||
phpstan-cache-${{ matrix.php-version }}-${{ env.CACHE_KEY_PART }}- | ||
phpstan-cache-${{ matrix.php-version }}-${{ github.head_ref }}- | ||
phpstan-cache-${{ matrix.php-version }}-${{ github.base_ref }}- | ||
phpstan-cache-${{ matrix.php-version }}- | ||
- name: Show debug into | ||
run: cd ./.github/tmp && ls -al | ||
|
||
# Run PHPStan | ||
- name: Run PHPStan | ||
id: phpstan | ||
run: | | ||
phpstan -vvv analyse --error-format=checkstyle --memory-limit 7G -a build/phpstan/bootstrap_action.php | tee _stan.xml | cs2pr --graceful-warnings | ||
# continue-on-error: true | ||
|
||
# Save cache | ||
- name: Save phpstan cache | ||
uses: actions/cache/save@v4 | ||
if: ${{ success() || ( ! cancelled() && steps.cache.outputs.cache-hit != 'true' ) }} | ||
with: | ||
path: ./.github/tmp | ||
key: phpstan-cache-${{ matrix.php-version }}-${{ env.CACHE_KEY_PART }}-${{ | ||
github.run_id }} | ||
- name: Provide phpstan log as artifact | ||
uses: actions/upload-artifact@v4 | ||
if: ${{ always() }} | ||
with: | ||
name: phpstan-srcrt | ||
path: ${{ github.workspace }}/_stan.xml | ||
retention-days: 2 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,186 @@ | ||
--- | ||
name: Win CI | ||
# yamllint disable-line rule:truthy | ||
on: | ||
# push: | ||
# pull_request: | ||
workflow_call: | ||
inputs: | ||
gh_event: | ||
required: true | ||
type: string | ||
workflow_dispatch: | ||
|
||
concurrency: | ||
group: win-ci-${{ github.workflow }}-${{ github.event.pull_request.number || github.ref | ||
}} | ||
cancel-in-progress: true | ||
env: | ||
gh_event: ${{ inputs.gh_event || github.event_name }} | ||
PHPUNIT_LOG: phpunit_tests.log | ||
DOLIBARR_LOG: documents/dolibarr.log | ||
PHPSERVER_LOG: phpserver.log | ||
PHPSERVER_DOMAIN_PORT: 127.0.0.1:8000 # could be 127.0.0.1:8000 if config modified | ||
CACHE_KEY_PART: ${{ ( inputs.gh_event == 'pull_request' || github.event_name == 'pull_request' ) && format('{0}-{1}', github.base_ref, github.head_ref) || github.ref_name }} | ||
PHP_INI_SCAN_DIR: C:\myphpini | ||
CKEY: win-ci-2 | ||
GITHUB_JSON: ${{ toJSON(github) }} # Helps in debugging Github Action | ||
jobs: | ||
win-test: | ||
strategy: | ||
matrix: | ||
os: [windows-latest] | ||
# php_version: [7.4, 8.0] # Add more versions if needed | ||
php_version: [7.4] # Add more versions if needed | ||
runs-on: ${{ matrix.os }} | ||
steps: | ||
- name: Checkout code | ||
uses: actions/checkout@v4 | ||
- name: Setup MariaDB | ||
uses: ankane/setup-mariadb@v1 | ||
with: | ||
# mariadb-version: ${{ matrix.mariadb-version }} | ||
database: travis # Specify your database name | ||
- name: Setup PHP | ||
uses: shivammathur/setup-php@v2 | ||
with: | ||
php-version: ${{ matrix.php_version }} | ||
# ini-values: post_max_size=256M, max_execution_time=180 | ||
extensions: > | ||
calendar, gd, imagick, imap, intl, json, ldap, mbstring, | ||
mcrypt, mysql, mysqli, opcache, pgsql, sqlite3, xml, zip | ||
tools: > | ||
composer, | ||
phpunit:9.5 | ||
coverage: none | ||
env: | ||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | ||
# phpts: ts # ts for thread-safe, default nts | ||
|
||
# Restore cache | ||
- name: Restore cache | ||
id: cache | ||
uses: actions/cache/restore@v4 | ||
with: | ||
# See https://github.com/actions/cache/issues/1275#issuecomment-1925217178 | ||
enableCrossOsArchive: true | ||
path: | | ||
db_init.sql | ||
db_init.sql.md5 | ||
key: ${{ matrix.os }}-${{ env.ckey }}-${{ matrix.php_version }}-${{ env.CACHE_KEY_PART | ||
}}-${{ github.run_id }} | ||
restore-keys: | | ||
${{ matrix.os }}-${{ env.ckey }}-${{ matrix.php_version }}-${{ env.CACHE_KEY_PART }}- | ||
${{ matrix.os }}-${{ env.ckey }}-${{ matrix.php_version }}-${{ github.head_ref }}- | ||
${{ matrix.os }}-${{ env.ckey }}-${{ matrix.php_version }}-${{ github.base_ref }}- | ||
${{ matrix.os }}-${{ env.ckey }}-${{ matrix.php_version }}- | ||
- name: Create local php.ini with open_basedir restrictions | ||
shell: cmd | ||
# Objective: separate step, and before database initialisation to verify open_basedir restrictions | ||
run: |- | ||
echo "BASEDIR=%CD%" >> %GITHUB_ENV% | ||
ECHO "==== Show INI file usage before our configuration ===" | ||
php --ini | ||
ECHO "==== Set PHP_INI_SCAN_DIR to include the INI File we create ===" | ||
mkdir %PHP_INI_SCAN_DIR% | ||
SET INIFILE="%PHP_INI_SCAN_DIR%\dolibarr.ini" | ||
SET HTDOCS_DIR=%CD%\htdocs | ||
SET DATA_DIR=%CD%\documents | ||
SET TEST_DIR=%CD%\test | ||
SET INITDEMO_DIR=%CD%\dev\initdemo | ||
ECHO "==== Create INI file to set open_basedir ===" | ||
echo [php] > %INIFILE% | ||
echo open_basedir^="%HTDOCS_DIR%;%DATA_DIR%;%TEST_DIR%;%INITDEMO_DIR%;%PHPROOT%" >> %INIFILE% | ||
REM Unset PHP_INI_SCAN_DIR to disable open_basedir restritions (to limit debug effort) | ||
REM SET PHP_INI_SCAN_DIR= | ||
ECHO "==== Show contents of INI file to set open_basedir ===" | ||
type %INIFILE% | ||
ECHO "==== Verify it is used by PHP ===" | ||
php --ini | ||
REM TEST OPEN_BASEDIR restriction is not limiting wrongly | ||
REM THE DATA_DIR MUST BE CREATED HERE - open_base does not allow it's creation | ||
mkdir "%DATA_DIR%" | ||
mkdir "%DATA_DIR%\mytest" | ||
php -r "$d=implode(DIRECTORY_SEPARATOR,[__DIR__,'documents','mytest']);echo 'IS_DIR '.$d.' '.((int) is_dir($d)).PHP_EOL;" | ||
php -r "$d=__DIR__.'\documents/mytest';echo 'TEST PATH IS SHOWN: '.$d.PHP_EOL;" | ||
php -r "$d=__DIR__.'\documents/mytest';echo 'IS_DIR '.$d.' '.((int) is_dir($d)).PHP_EOL;" | ||
ECHO "The above should show 2 successful tests" | ||
- name: Run Bash script that Initialises the database | ||
# Note this is bash (MSYS) on Windows | ||
shell: bash | ||
run: | | ||
ECHO "#[group]Directory contents to verify cache files, ..." | ||
ls -l | ||
ECHO "#[endgroup]" | ||
ECHO "==== Verify openbase_dir restriction" | ||
php --ini | ||
# Run bash script to initialise database | ||
ECHO "==== Start 'setup_conf.sh' to setup database" | ||
${SHELL} -xv dev/setup/phpunit/setup_conf.sh | ||
## Updating test configuration to not stop on first failure (to see all errors) - need sed | ||
sed -i -e 's/stopOnFailure="[^"]*"/stopOnFailure="false"/' test/phpunit/phpunittest.xml | ||
ECHO "#[group]Directory contents after database setup to verify cache files, ..." | ||
ls -l | ||
ECHO "#[endgroup]" | ||
# Export some tool paths to reuse the from CMD shell. | ||
echo "TAIL=$(cygpath -w "$(which tail)")" >> "$GITHUB_ENV" | ||
echo "GREP=$(cygpath -w "$(which grep)")" >> "$GITHUB_ENV" | ||
echo "TEE=$(cygpath -w "$(which tee)")" >> "$GITHUB_ENV" | ||
echo "BASEDIR=$(realpath .)" >> "$GITHUB_ENV" | ||
- name: Run PHPUnit tests | ||
# continue-on-error: true | ||
shell: cmd | ||
# setting up php.ini, starting the php server are currently in this step | ||
run: |- | ||
ECHO "==== Visually verify our dolibarr.INI file usage ===" | ||
php --ini | ||
ECHO "==== Add our web server information to the config file ===" | ||
echo $dolibarr_main_url_root="http://${{ env.PHPSERVER_DOMAIN_PORT }}"; >> htdocs/conf/conf.php | ||
ECHO "#[group]==== Dolibarr config file contents" | ||
cat htdocs/conf/conf.php | ||
ECHO "#[endgroup]" | ||
ECHO "==== START PHP server" | ||
start /B php -S %PHPSERVER_DOMAIN_PORT% -t htdocs >> %PHPSERVER_LOG% 2>&1 | ||
ECHO "#[group]==== Output from curl on PHP server" | ||
curl "http://${{ env.PHPSERVER_DOMAIN_PORT }}" | ||
ECHO "#[endgroup]" | ||
ECHO "==== START PHPUNIT TESTS" | ||
REM 'DOSKEY' USED to recover error code (no pipefile equivalent in windows?) | ||
( php "%PHPROOT%\phpunit" -d memory_limit=-1 -c %CD%\test\phpunit\phpunittest.xml "test\phpunit\AllTests.php" --exclude-group WindowsWaitingForFix & call doskey /exename=err err=%%^^errorlevel%% ) | "${{ env.TEE }}" "${{ env.PHPUNIT_LOG }}" | ||
echo "" | ||
echo "Ensure that PHPUNIT completed (no early exit from code)" | ||
"${{ env.TAIL }}" -5 "${{ env.PHPUNIT_LOG }}" | "${{ env.GREP }}" -qE "(OK .*[0-9]+ tests.*[0-9]+ assertions|Tests: [0-9]+)" || EXIT /B 1 | ||
echo "PHPUNIT seems to have completed with a test result, reuse the exit code" | ||
for /f "tokens=2 delims==" %%A in ('doskey /m:err') do EXIT /B %%A | ||
- name: Convert Raw Log to Annotations | ||
uses: mdeweerd/logToCheckStyle@v2024.3.5 | ||
if: ${{ failure() }} | ||
with: | ||
in: ${{ env.PHPUNIT_LOG }} | ||
|
||
- name: Provide dolibarr and phpunit logs as artifact | ||
uses: actions/upload-artifact@v4 | ||
if: ${{ ! cancelled() }} | ||
with: | ||
name: win-ci-logs | ||
path: | | ||
${{ env.PHPUNIT_LOG }} | ||
${{ env.DOLIBARR_LOG }} | ||
${{ env.PHPSERVER_LOG }} | ||
db_init.sql | ||
db_init.sql.md5 | ||
retention-days: 2 | ||
|
||
# Save cache | ||
- name: Save cache | ||
uses: actions/cache/save@v4 | ||
if: ${{ ! cancelled() }} | ||
with: | ||
# See https://github.com/actions/cache/issues/1275#issuecomment-1925217178 | ||
enableCrossOsArchive: true | ||
key: ${{ steps.cache.outputs.cache-primary-key }} | ||
path: db_init.* |