Merge pull request #59 from shivammathur/develop

Release 1.4.2
This commit is contained in:
Shivam Mathur 2019-10-14 08:55:35 +05:30 committed by GitHub
commit 62beed29e3
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
36 changed files with 801 additions and 549 deletions

View File

@ -4,9 +4,9 @@
</a> </a>
</p> </p>
# Setup PHP in GitHub Actions <h1 align="center">Setup PHP in GitHub Actions</h1>
<p align="left"> <p align="center">
<a href="https://github.com/shivammathur/setup-php" title="GitHub action to setup PHP"><img alt="GitHub Actions status" src="https://github.com/shivammathur/setup-php/workflows/Main%20workflow/badge.svg"></a> <a href="https://github.com/shivammathur/setup-php" title="GitHub action to setup PHP"><img alt="GitHub Actions status" src="https://github.com/shivammathur/setup-php/workflows/Main%20workflow/badge.svg"></a>
<a href="https://codecov.io/gh/shivammathur/setup-php" title="Code coverage"><img alt="Codecov Code Coverage" src="https://codecov.io/gh/shivammathur/setup-php/branch/master/graph/badge.svg"></a> <a href="https://codecov.io/gh/shivammathur/setup-php" title="Code coverage"><img alt="Codecov Code Coverage" src="https://codecov.io/gh/shivammathur/setup-php/branch/master/graph/badge.svg"></a>
<a href="https://github.com/shivammathur/setup-php/blob/master/LICENSE" title="license"><img alt="LICENSE" src="https://img.shields.io/badge/license-MIT-428f7e.svg"></a> <a href="https://github.com/shivammathur/setup-php/blob/master/LICENSE" title="license"><img alt="LICENSE" src="https://img.shields.io/badge/license-MIT-428f7e.svg"></a>
@ -64,8 +64,9 @@ with:
Specify `coverage: pcov` to use `PCOV`. Specify `coverage: pcov` to use `PCOV`.
It is much faster than `Xdebug`. It is much faster than `Xdebug`.
`PCOV` needs `PHP >= 7.1`
If your source code directory is other than `src`, `lib` or, `app`, specify `pcov.directory` using the `ini-values-csv` input. If your source code directory is other than `src`, `lib` or, `app`, specify `pcov.directory` using the `ini-values-csv` input.
`PCOV` needs `PHPUnit >= 8.0` and `PHP >= 7.1`, `PHPUnit` needs `PHP >= 7.2`. So use `PHP >= 7.2` with `PCOV`
```yaml ```yaml
uses: shivammathur/setup-php@master uses: shivammathur/setup-php@master
@ -149,8 +150,7 @@ jobs:
- name: Check Composer Version - name: Check Composer Version
run: composer -V run: composer -V
- name: Check PHP Extensions - name: Check PHP Extensions
run: php -m run: php -m
``` ```
### Examples ### Examples
@ -163,6 +163,11 @@ Examples for setting up this GitHub Action with different PHP Frameworks/Package
|Laravel with `MySQL` and `Redis`|`ubuntu`|[laravel-mysql.yml](./examples/laravel-mysql.yml "GitHub Action for Laravel with MySQL and Redis")| |Laravel with `MySQL` and `Redis`|`ubuntu`|[laravel-mysql.yml](./examples/laravel-mysql.yml "GitHub Action for Laravel with MySQL and Redis")|
|Laravel with `PostgreSQL` and `Redis`|`ubuntu`|[laravel-postgres.yml](./examples/laravel-postgres.yml "GitHub Action for Laravel with PostgreSQL and Redis")| |Laravel with `PostgreSQL` and `Redis`|`ubuntu`|[laravel-postgres.yml](./examples/laravel-postgres.yml "GitHub Action for Laravel with PostgreSQL and Redis")|
|Laravel without services|`macOS`, `ubuntu` and `windows`|[laravel.yml](./examples/laravel.yml "GitHub Action for Laravel without services")| |Laravel without services|`macOS`, `ubuntu` and `windows`|[laravel.yml](./examples/laravel.yml "GitHub Action for Laravel without services")|
|Lumen with `MySQL` and `Redis`|`ubuntu`|[lumen-mysql.yml](./examples/lumen-mysql.yml "GitHub Action for Lumen with MySQL and Redis")|
|Lumen with `PostgreSQL` and `Redis`|`ubuntu`|[lumen-postgres.yml](./examples/lumen-postgres.yml "GitHub Action for Lumen with PostgreSQL and Redis")|
|Lumen without services|`macOS`, `ubuntu` and `windows`|[lumen.yml](./examples/lumen.yml "GitHub Action for Lumen without services")|
|Phalcon with `MySQL`|`ubuntu`|[phalcon-mysql.yml](./examples/phalcon-mysql.yml "GitHub Action for Phalcon with MySQL")|
|Phalcon with `PostgreSQL`|`ubuntu`|[phalcon-postgres.yml](./examples/phalcon-postgres.yml "GitHub Action for Phalcon with PostgreSQL")|
|Slim Framework|`macOS`, `ubuntu` and `windows`|[slim-framework.yml](./examples/slim-framework.yml "GitHub Action for Slim Framework")| |Slim Framework|`macOS`, `ubuntu` and `windows`|[slim-framework.yml](./examples/slim-framework.yml "GitHub Action for Slim Framework")|
|Symfony with `MySQL`|`ubuntu`|[symfony-mysql.yml](./examples/symfony-mysql.yml "GitHub Action for Symfony with MySQL")| |Symfony with `MySQL`|`ubuntu`|[symfony-mysql.yml](./examples/symfony-mysql.yml "GitHub Action for Symfony with MySQL")|
|Symfony with `PostgreSQL`|`ubuntu`|[symfony-postgres.yml](./examples/symfony-postgres.yml "GitHub Action for Symfony with PostgreSQL")| |Symfony with `PostgreSQL`|`ubuntu`|[symfony-postgres.yml](./examples/symfony-postgres.yml "GitHub Action for Symfony with PostgreSQL")|
@ -180,7 +185,7 @@ Contributions are welcome! See [Contributor's Guide](.github/CONTRIBUTING.md "sh
## :sparkling_heart: Support this project ## :sparkling_heart: Support this project
- Please star the project and share it among your developer friends. - Please star the project and share it.
- Consider supporting on <a href="https://www.patreon.com/shivammathur"><img alt="Support me on Patreon" src="https://shivammathur.com/badges/patreon.svg"></a> and <a href="https://www.paypal.me/shivammathur"><img alt="Support me on Paypal" src="https://shivammathur.com/badges/paypal.svg"></a>. - Consider supporting on <a href="https://www.patreon.com/shivammathur"><img alt="Support me on Patreon" src="https://shivammathur.com/badges/patreon.svg"></a> and <a href="https://www.paypal.me/shivammathur"><img alt="Support me on Paypal" src="https://shivammathur.com/badges/paypal.svg"></a>.
## :bookmark: This action uses the following works ## :bookmark: This action uses the following works

View File

@ -7,13 +7,7 @@ describe('Config tests', () => {
'win32' 'win32'
); );
expect(win32).toContain( expect(win32).toContain(
'Add-Content C:\\tools\\php\\php.ini "post_max_size=256M"' 'Add-Content C:\\tools\\php\\php.ini "post_max_size=256M\nshort_open_tag=On\ndate.timezone=Asia/Kolkata"'
);
expect(win32).toContain(
'Add-Content C:\\tools\\php\\php.ini "short_open_tag=On"'
);
expect(win32).toContain(
'Add-Content C:\\tools\\php\\php.ini "date.timezone=Asia/Kolkata"'
); );
win32 = await config.addINIValues( win32 = await config.addINIValues(
@ -28,9 +22,9 @@ describe('Config tests', () => {
'post_max_size=256M, short_open_tag=On, date.timezone=Asia/Kolkata', 'post_max_size=256M, short_open_tag=On, date.timezone=Asia/Kolkata',
'linux' 'linux'
); );
expect(linux).toContain('echo "post_max_size=256M" >> $ini_file'); expect(linux).toContain(
expect(linux).toContain('echo "short_open_tag=On" >> $ini_file'); 'echo "post_max_size=256M\nshort_open_tag=On\ndate.timezone=Asia/Kolkata" >> $ini_file'
expect(linux).toContain('echo "date.timezone=Asia/Kolkata" >> $ini_file'); );
linux = await config.addINIValues( linux = await config.addINIValues(
'post_max_size=256M, short_open_tag=On, date.timezone=Asia/Kolkata', 'post_max_size=256M, short_open_tag=On, date.timezone=Asia/Kolkata',
@ -44,9 +38,9 @@ describe('Config tests', () => {
'post_max_size=256M, short_open_tag=On, date.timezone=Asia/Kolkata', 'post_max_size=256M, short_open_tag=On, date.timezone=Asia/Kolkata',
'darwin' 'darwin'
); );
expect(darwin).toContain('echo "post_max_size=256M" >> $ini_file'); expect(darwin).toContain(
expect(darwin).toContain('echo "short_open_tag=On" >> $ini_file'); 'echo "post_max_size=256M\nshort_open_tag=On\ndate.timezone=Asia/Kolkata" >> $ini_file'
expect(darwin).toContain('echo "date.timezone=Asia/Kolkata" >> $ini_file'); );
darwin = await config.addINIValues( darwin = await config.addINIValues(
'post_max_size=256M, short_open_tag=On, date.timezone=Asia/Kolkata', 'post_max_size=256M, short_open_tag=On, date.timezone=Asia/Kolkata',

View File

@ -27,7 +27,7 @@ describe('Config tests', () => {
let linux: string = await coverage.addCoverage('pcov', '7.4', 'linux'); let linux: string = await coverage.addCoverage('pcov', '7.4', 'linux');
expect(linux).toContain('addExtension pcov'); expect(linux).toContain('addExtension pcov');
expect(linux).toContain('sudo sed -i "/xdebug/d" $ini_file'); expect(linux).toContain('sudo sed -i "/xdebug/d" $ini_file');
expect(linux).toContain('sudo phpdismod xdebug'); expect(linux).toContain('sudo phpdismod -v 7.4 xdebug');
}); });
it('checking addCoverage with PCOV on darwin', async () => { it('checking addCoverage with PCOV on darwin', async () => {
@ -58,8 +58,8 @@ describe('Config tests', () => {
it('checking disableCoverage on linux', async () => { it('checking disableCoverage on linux', async () => {
let linux: string = await coverage.addCoverage('none', '7.4', 'linux'); let linux: string = await coverage.addCoverage('none', '7.4', 'linux');
expect(linux).toContain('sudo phpdismod xdebug'); expect(linux).toContain('sudo phpdismod -v 7.4 xdebug');
expect(linux).toContain('sudo phpdismod pcov'); expect(linux).toContain('sudo phpdismod -v 7.4 pcov');
expect(linux).toContain('sudo sed -i "/xdebug/d" $ini_file'); expect(linux).toContain('sudo sed -i "/xdebug/d" $ini_file');
expect(linux).toContain('sudo sed -i "/pcov/d" $ini_file'); expect(linux).toContain('sudo sed -i "/pcov/d" $ini_file');
}); });

View File

@ -1,12 +1,5 @@
import * as extensions from '../src/extensions'; import * as extensions from '../src/extensions';
let valid_extensions = ['xdebug', 'pcov'];
jest.mock('../src/pecl', () => ({
checkPECLExtension: jest.fn().mockImplementation(extension => {
return valid_extensions.indexOf(extension) !== -1;
})
}));
describe('Extension tests', () => { describe('Extension tests', () => {
it('checking addExtensionOnWindows', async () => { it('checking addExtensionOnWindows', async () => {
let win32: string = await extensions.addExtension( let win32: string = await extensions.addExtension(
@ -27,7 +20,9 @@ describe('Extension tests', () => {
expect(win32).toContain('Install-PhpExtension pcov'); expect(win32).toContain('Install-PhpExtension pcov');
win32 = await extensions.addExtension('does_not_exist', '7.2', 'win32'); win32 = await extensions.addExtension('does_not_exist', '7.2', 'win32');
expect(win32).toContain('Could not find does_not_exist for PHP7.2 on PECL'); expect(win32).toContain(
'Add-Extension does_not_exist "Install-PhpExtension does_not_exist" extension "Add Extension"'
);
win32 = await extensions.addExtension('xdebug', '7.2', 'fedora'); win32 = await extensions.addExtension('xdebug', '7.2', 'fedora');
expect(win32).toContain('Platform fedora is not supported'); expect(win32).toContain('Platform fedora is not supported');
@ -50,6 +45,14 @@ describe('Extension tests', () => {
expect(linux).toContain('./xdebug.sh'); expect(linux).toContain('./xdebug.sh');
expect(linux).toContain('./pcov.sh'); expect(linux).toContain('./pcov.sh');
linux = await extensions.addExtension('phalcon3, phalcon4', '7.2', 'linux');
expect(linux).toContain('./phalcon.sh master 7.2');
expect(linux).toContain('./phalcon.sh 4.0.x 7.2');
linux = await extensions.addExtension('phalcon3, phalcon4', '7.3', 'linux');
expect(linux).toContain('./phalcon.sh master 7.3');
expect(linux).toContain('./phalcon.sh 4.0.x 7.3');
linux = await extensions.addExtension('xdebug', '7.2', 'fedora'); linux = await extensions.addExtension('xdebug', '7.2', 'fedora');
expect(linux).toContain('Platform fedora is not supported'); expect(linux).toContain('Platform fedora is not supported');
}); });
@ -82,9 +85,7 @@ describe('Extension tests', () => {
expect(darwin).toContain('sudo pecl install xdebug'); expect(darwin).toContain('sudo pecl install xdebug');
darwin = await extensions.addExtension('does_not_exist', '7.2', 'darwin'); darwin = await extensions.addExtension('does_not_exist', '7.2', 'darwin');
expect(darwin).toContain( expect(darwin).toContain('add_extension does_not_exist');
'Could not find does_not_exist for PHP7.2 on PECL'
);
darwin = await extensions.addExtension('xdebug', '7.2', 'fedora'); darwin = await extensions.addExtension('xdebug', '7.2', 'fedora');
expect(darwin).toContain('Platform fedora is not supported'); expect(darwin).toContain('Platform fedora is not supported');

View File

@ -1,15 +0,0 @@
import * as pecl from '../src/pecl';
let valid_extensions = ['xdebug', 'pcov'];
jest.mock('../src/pecl', () => ({
checkPECLExtension: jest.fn().mockImplementation(extension => {
return valid_extensions.indexOf(extension) !== -1;
})
}));
describe('pecl tests', () => {
it('checking checkPECLExtension', async () => {
expect(await pecl.checkPECLExtension('extensionDoesNotExist')).toBe(false);
expect(await pecl.checkPECLExtension('xdebug')).toBe(true);
});
});

View File

@ -1,21 +1,21 @@
name: 'Setup PHP Action' name: 'Setup PHP Action'
author: shivammathur author: shivammathur
description: 'Setup a PHP environment with composer and add it to the PATH' description: 'GitHub action to setup PHP with required extensions, php.ini configuration, code-coverage support and composer'
branding: branding:
icon: 'activity' icon: 'activity'
color: 'purple' color: 'purple'
inputs: inputs:
php-version: php-version:
description: 'PHP version to be installed.' description: 'PHP version you want to install.'
required: true required: true
extension-csv: extension-csv:
description: '(Optional) Comma seperated list of PHP extensions to be installed.' description: '(Optional) PHP extensions you want to install.'
required: false required: false
ini-values-csv: ini-values-csv:
description: '(Optional) Custom values you want to set in php.ini' description: '(Optional) Custom values you want to set in php.ini.'
required: false required: false
coverage: coverage:
description: '(Optional) Driver to calculate code coverage (Accepts: xdebug, pcov and none)' description: '(Optional) Code coverage driver you want to install. (Accepts: xdebug, pcov and none)'
required: false required: false
runs: runs:
using: 'node12' using: 'node12'

View File

@ -5,7 +5,9 @@ jobs:
laravel: laravel:
name: Laravel (PHP ${{ matrix.php-versions }}) name: Laravel (PHP ${{ matrix.php-versions }})
runs-on: ubuntu-latest runs-on: ubuntu-latest
env: env:
DB_DATABASE: laravel
DB_USERNAME: root
DB_PASSWORD: password DB_PASSWORD: password
BROADCAST_DRIVER: log BROADCAST_DRIVER: log
CACHE_DRIVER: redis CACHE_DRIVER: redis

60
examples/lumen-mysql.yml Normal file
View File

@ -0,0 +1,60 @@
# GitHub Action for Lumen with MySQL and Redis
name: Testing Lumen with MySQL
on: [push, pull_request]
jobs:
lumen:
name: Lumen (PHP ${{ matrix.php-versions }})
runs-on: ubuntu-latest
env:
DB_DATABASE: lumen
DB_USERNAME: root
DB_PASSWORD: password
BROADCAST_DRIVER: log
CACHE_DRIVER: redis
QUEUE_CONNECTION: redis
SESSION_DRIVER: redis
services:
mysql:
image: mysql:5.7
env:
MYSQL_ALLOW_EMPTY_PASSWORD: false
MYSQL_ROOT_PASSWORD: password
MYSQL_DATABASE: lumen
ports:
- 3306
options: --health-cmd="mysqladmin ping" --health-interval=10s --health-timeout=5s --health-retries=3
redis:
image: redis
ports:
- 6379/tcp
options: --health-cmd="redis-cli ping" --health-interval=10s --health-timeout=5s --health-retries=3
strategy:
fail-fast: false
max-parallel: 3
matrix:
php-versions: ['7.2', '7.3']
steps:
- name: Checkout
uses: actions/checkout@v1
- name: Setup PHP, with composer and extensions
uses: shivammathur/setup-php@master #https://github.com/shivammathur/setup-php
with:
php-version: ${{ matrix.php-versions }}
extension-csv: mbstring, dom, fileinfo, mysql
coverage: xdebug #optional
- name: Install Composer dependencies
run: |
composer install --no-progress --no-suggest --prefer-dist --optimize-autoloader
composer require predis/predis illuminate/redis
- name: Prepare the application
run: php -r "file_exists('.env') || copy('.env.example', '.env');"
- name: Register Redis as service provider
run: sed -i '$i\$app->register(Illuminate\\Redis\\RedisServiceProvider::class);' bootstrap/app.php
- name: Run Migration
run: php artisan migrate -v
env:
DB_PORT: ${{ job.services.mysql.ports['3306'] }}
- name: Test with phpunit
run: vendor/bin/phpunit --coverage-text
env:
DB_PORT: ${{ job.services.mysql.ports['3306'] }}

View File

@ -0,0 +1,62 @@
# GitHub Action for Lumen with PostgreSQL and Redis
name: Testing Lumen with PostgreSQL
on: [push, pull_request]
jobs:
laravel:
name: Lumen (PHP ${{ matrix.php-versions }})
runs-on: ubuntu-latest
env:
BROADCAST_DRIVER: log
CACHE_DRIVER: redis
QUEUE_CONNECTION: redis
SESSION_DRIVER: redis
DB_CONNECTION: pgsql
DB_HOST: localhost
DB_PASSWORD: postgres
DB_USERNAME: postgres
DB_DATABASE: postgres
services:
postgres:
image: postgres:10.8
env:
POSTGRES_USER: postgres
POSTGRES_PASSWORD: postgres
POSTGRES_DB: postgres
ports:
- 5432/tcp
options: --health-cmd pg_isready --health-interval 10s --health-timeout 5s --health-retries 3
redis:
image: redis
ports:
- 6379/tcp
options: --health-cmd="redis-cli ping" --health-interval=10s --health-timeout=5s --health-retries=3
strategy:
fail-fast: false
max-parallel: 3
matrix:
php-versions: ['7.2', '7.3']
steps:
- name: Checkout
uses: actions/checkout@v1
- name: Setup PHP, with composer and extensions
uses: shivammathur/setup-php@master #https://github.com/shivammathur/setup-php
with:
php-version: ${{ matrix.php-versions }}
extension-csv: mbstring, dom, fileinfo, pgsql
coverage: xdebug #optional
- name: Install Composer dependencies
run: |
composer install --no-progress --no-suggest --prefer-dist --optimize-autoloader
composer require predis/predis illuminate/redis
- name: Prepare the application
run: php -r "file_exists('.env') || copy('.env.example', '.env');"
- name: Register Redis as service provider
run: sed -i '$i\$app->register(Illuminate\\Redis\\RedisServiceProvider::class);' bootstrap/app.php
- name: Run Migration
run: php artisan migrate -v
env:
DB_PORT: ${{ job.services.postgres.ports[5432] }}
- name: Test with phpunit
run: vendor/bin/phpunit --coverage-text
env:
DB_PORT: ${{ job.services.postgres.ports[5432] }}

29
examples/lumen.yml Normal file
View File

@ -0,0 +1,29 @@
# GitHub Action for Lumen
name: Unit Testing Lumen
on: [push, pull_request]
jobs:
lumen:
name: Lumen (PHP ${{ matrix.php-versions }} on ${{ matrix.operating-system }})
runs-on: ${{ matrix.operating-system }}
strategy:
fail-fast: false
max-parallel: 9
matrix:
operating-system: [ubuntu-latest, windows-latest, macOS-latest]
php-versions: ['7.2', '7.3']
steps:
- name: Checkout
uses: actions/checkout@v1
- name: Setup PHP, with composer and extensions
uses: shivammathur/setup-php@master #https://github.com/shivammathur/setup-php
with:
php-version: ${{ matrix.php-versions }}
extension-csv: mbstring, dom, fileinfo, mysql
coverage: xdebug #optional
- name: Install Composer dependencies
run: composer install --no-progress --no-suggest --prefer-dist --optimize-autoloader
- name: Prepare the application
run: php -r "file_exists('.env') || copy('.env.example', '.env');"
- name: Test with phpunit
run: vendor/bin/phpunit --coverage-text
shell: pwsh

View File

@ -0,0 +1,60 @@
# GitHub Action for Phalcon with MySQL
## Notes
## Make sure you have .env.example or .env file in your project
## and you have loaded Dotenv (https://github.com/vlucas/phpdotenv)
name: Testing Phalcon with MySQL
on: [push, pull_request]
jobs:
phalcon:
name: Phalcon (PHP ${{ matrix.php-versions }})
runs-on: ubuntu-latest
env:
DB_ADAPTER: mysql
DB_HOST: 127.0.0.1
DB_NAME: phalcon
DB_USERNAME: root
DB_PASSWORD: password
CODECEPTION_URL: 127.0.0.1
CODECEPTION_PORT: 8888
services:
mysql:
image: mysql:5.7
env:
MYSQL_ALLOW_EMPTY_PASSWORD: false
MYSQL_ROOT_PASSWORD: password
MYSQL_DATABASE: phalcon
ports:
- 3306
options: --health-cmd="mysqladmin ping" --health-interval=10s --health-timeout=5s --health-retries=3
strategy:
fail-fast: false
max-parallel: 3
matrix:
php-versions: ['7.2', '7.3']
steps:
- name: Checkout
uses: actions/checkout@v1
- name: Setup PHP, with composer and extensions
uses: shivammathur/setup-php@master #https://github.com/shivammathur/setup-php
with:
php-version: ${{ matrix.php-versions }}
extension-csv: mbstring, phalcon4, mysql #use phalcon3 for the phalcon 3.x.
coverage: xdebug #optional
- name: Install Composer dependencies
run: composer install --no-progress --no-suggest --prefer-dist --optimize-autoloader
- name: Prepare the application
run: php -r "file_exists('.env') || copy('.env.example', '.env');"
- name: Run Migration
run: |
if [ ! -e phinx.yml ]; then vendor/bin/phinx init; fi
vendor/bin/phinx migrate
vendor/bin/phinx seed:run
env:
DB_PORT: ${{ job.services.mysql.ports['3306'] }}
- name: Run Tests
run: |
(cd public && nohup php -S $CODECEPTION_URL:$CODECEPTION_PORT > phalcon.log 2>&1 &)
vendor/bin/codecept build
vendor/bin/codecept run
env:
DB_PORT: ${{ job.services.mysql.ports['3306'] }}

View File

@ -0,0 +1,61 @@
# GitHub Action for Phalcon with PostgreSQL
## Notes
## Make sure you have .env.example or .env file in your project
## and you have loaded Dotenv (https://github.com/vlucas/phpdotenv)
name: Testing Phalcon with PostgreSQL
on: [push, pull_request]
jobs:
phalcon:
name: Phalcon (PHP ${{ matrix.php-versions }})
runs-on: ubuntu-latest
env:
DB_ADAPTER: pgsql
DB_HOST: 127.0.0.1
DB_NAME: postgres
DB_USERNAME: postgres
DB_PASSWORD: postgres
CODECEPTION_URL: 127.0.0.1
CODECEPTION_PORT: 8888
DB_CONNECTION: pgsql
services:
postgres:
image: postgres:10.8
env:
POSTGRES_USER: postgres
POSTGRES_PASSWORD: postgres
POSTGRES_DB: postgres
ports:
- 5432/tcp
options: --health-cmd pg_isready --health-interval 10s --health-timeout 5s --health-retries 3
strategy:
fail-fast: false
max-parallel: 3
matrix:
php-versions: ['7.2', '7.3']
steps:
- name: Checkout
uses: actions/checkout@v1
- name: Setup PHP, with composer and extensions
uses: shivammathur/setup-php@master #https://github.com/shivammathur/setup-php
with:
php-version: ${{ matrix.php-versions }}
extension-csv: mbstring, phalcon4, pgsql #use phalcon3 for the phalcon 3.x
coverage: xdebug #optional
- name: Install Composer dependencies
run: composer install --no-progress --no-suggest --prefer-dist --optimize-autoloader
- name: Prepare the application
run: php -r "file_exists('.env') || copy('.env.example', '.env');"
- name: Run Migration
run: |
if [ ! -e phinx.yml ]; then vendor/bin/phinx init; fi
vendor/bin/phinx migrate
vendor/bin/phinx seed:run
env:
DB_PORT: ${{ job.services.postgres.ports['5432'] }}
- name: Run Tests
run: |
(cd public && nohup php -S $CODECEPTION_URL:$CODECEPTION_PORT > phalcon.log 2>&1 &)
vendor/bin/codecept build
vendor/bin/codecept run
env:
DB_PORT: ${{ job.services.postgres.ports['5432'] }}

View File

@ -44,15 +44,8 @@ exports.addINIValues = addINIValues;
*/ */
function addINIValuesUnix(ini_values_csv) { function addINIValuesUnix(ini_values_csv) {
return __awaiter(this, void 0, void 0, function* () { return __awaiter(this, void 0, void 0, function* () {
let script = '\n';
let ini_values = yield utils.INIArray(ini_values_csv); let ini_values = yield utils.INIArray(ini_values_csv);
yield utils.asyncForEach(ini_values, function (ini_value) { return '\necho "' + ini_values.join('\n') + '" >> $ini_file\n';
return __awaiter(this, void 0, void 0, function* () {
// add script to set ini value
script += 'echo "' + ini_value + '" >> $ini_file\n';
});
});
return script;
}); });
} }
exports.addINIValuesUnix = addINIValuesUnix; exports.addINIValuesUnix = addINIValuesUnix;
@ -63,15 +56,8 @@ exports.addINIValuesUnix = addINIValuesUnix;
*/ */
function addINIValuesWindows(ini_values_csv) { function addINIValuesWindows(ini_values_csv) {
return __awaiter(this, void 0, void 0, function* () { return __awaiter(this, void 0, void 0, function* () {
let script = '\n';
let ini_values = yield utils.INIArray(ini_values_csv); let ini_values = yield utils.INIArray(ini_values_csv);
yield utils.asyncForEach(ini_values, function (ini_value) { return ('Add-Content C:\\tools\\php\\php.ini "' + ini_values.join('\n') + '"\n');
return __awaiter(this, void 0, void 0, function* () {
// add script to set ini value
script += 'Add-Content C:\\tools\\php\\php.ini "' + ini_value + '"\n';
});
});
return script;
}); });
} }
exports.addINIValuesWindows = addINIValuesWindows; exports.addINIValuesWindows = addINIValuesWindows;

View File

@ -19,6 +19,13 @@ Object.defineProperty(exports, "__esModule", { value: true });
const utils = __importStar(require("./utils")); const utils = __importStar(require("./utils"));
const extensions = __importStar(require("./extensions")); const extensions = __importStar(require("./extensions"));
const config = __importStar(require("./config")); const config = __importStar(require("./config"));
/**
* Function to set coverage driver
*
* @param coverage_driver
* @param version
* @param os_version
*/
function addCoverage(coverage_driver, version, os_version) { function addCoverage(coverage_driver, version, os_version) {
return __awaiter(this, void 0, void 0, function* () { return __awaiter(this, void 0, void 0, function* () {
coverage_driver.toLowerCase(); coverage_driver.toLowerCase();
@ -35,6 +42,12 @@ function addCoverage(coverage_driver, version, os_version) {
}); });
} }
exports.addCoverage = addCoverage; exports.addCoverage = addCoverage;
/**
* Function to setup Xdebug
*
* @param version
* @param os_version
*/
function addCoverageXdebug(version, os_version) { function addCoverageXdebug(version, os_version) {
return __awaiter(this, void 0, void 0, function* () { return __awaiter(this, void 0, void 0, function* () {
let script = '\n'; let script = '\n';
@ -44,6 +57,12 @@ function addCoverageXdebug(version, os_version) {
}); });
} }
exports.addCoverageXdebug = addCoverageXdebug; exports.addCoverageXdebug = addCoverageXdebug;
/**
* Function to setup PCOV
*
* @param version
* @param os_version
*/
function addCoveragePCOV(version, os_version) { function addCoveragePCOV(version, os_version) {
return __awaiter(this, void 0, void 0, function* () { return __awaiter(this, void 0, void 0, function* () {
let script = '\n'; let script = '\n';
@ -57,7 +76,9 @@ function addCoveragePCOV(version, os_version) {
script += script +=
'if [ -e /etc/php/' + 'if [ -e /etc/php/' +
version + version +
'/mods-available/xdebug.ini ]; then sudo phpdismod xdebug; fi\n'; '/mods-available/xdebug.ini ]; then sudo phpdismod -v ' +
version +
' xdebug; fi\n';
script += 'sudo sed -i "/xdebug/d" $ini_file\n'; script += 'sudo sed -i "/xdebug/d" $ini_file\n';
break; break;
case 'darwin': case 'darwin':
@ -81,6 +102,12 @@ function addCoveragePCOV(version, os_version) {
}); });
} }
exports.addCoveragePCOV = addCoveragePCOV; exports.addCoveragePCOV = addCoveragePCOV;
/**
* Function to disable Xdebug and PCOV
*
* @param version
* @param os_version
*/
function disableCoverage(version, os_version) { function disableCoverage(version, os_version) {
return __awaiter(this, void 0, void 0, function* () { return __awaiter(this, void 0, void 0, function* () {
let script = '\n'; let script = '\n';
@ -89,11 +116,15 @@ function disableCoverage(version, os_version) {
script += script +=
'if [ -e /etc/php/' + 'if [ -e /etc/php/' +
version + version +
'/mods-available/xdebug.ini ]; then sudo phpdismod xdebug; fi\n'; '/mods-available/xdebug.ini ]; then sudo phpdismod -v ' +
version +
' xdebug; fi\n';
script += script +=
'if [ -e /etc/php/' + 'if [ -e /etc/php/' +
version + version +
'/mods-available/pcov.ini ]; then sudo phpdismod pcov; fi\n'; '/mods-available/pcov.ini ]; then sudo phpdismod -v ' +
version +
' pcov; fi\n';
script += 'sudo sed -i "/xdebug/d" $ini_file\n'; script += 'sudo sed -i "/xdebug/d" $ini_file\n';
script += 'sudo sed -i "/pcov/d" $ini_file\n'; script += 'sudo sed -i "/pcov/d" $ini_file\n';
break; break;

View File

@ -17,7 +17,14 @@ var __importStar = (this && this.__importStar) || function (mod) {
}; };
Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, "__esModule", { value: true });
const utils = __importStar(require("./utils")); const utils = __importStar(require("./utils"));
const pecl = __importStar(require("./pecl")); /**
* Install and enable extensions
*
* @param extension_csv
* @param version
* @param os_version
* @param log_prefix
*/
function addExtension(extension_csv, version, os_version, log_prefix = 'Add Extension') { function addExtension(extension_csv, version, os_version, log_prefix = 'Add Extension') {
return __awaiter(this, void 0, void 0, function* () { return __awaiter(this, void 0, void 0, function* () {
switch (os_version) { switch (os_version) {
@ -33,44 +40,6 @@ function addExtension(extension_csv, version, os_version, log_prefix = 'Add Exte
}); });
} }
exports.addExtension = addExtension; exports.addExtension = addExtension;
/**
* Enable extensions which are installed but not enabled on windows
*
* @param extension
*/
function enableExtensionWindows(extension, log_prefix) {
return __awaiter(this, void 0, void 0, function* () {
return (`try {
$exist = Test-Path -Path $ext_dir\\php_${extension}.dll
if(!(php -m | findstr -i ${extension}) -and $exist) {
Add-Content C:\\tools\\php\\php.ini "${yield utils.getExtensionPrefix(extension)}=php_${extension}.dll"\n` +
(yield utils.log('Enabled ' + extension, 'win32', 'success', log_prefix)) +
` } elseif(php -m | findstr -i ${extension}) {\n` +
(yield utils.log(extension + ' was already enabled', 'win32', 'success', log_prefix)) +
` }
} catch [Exception] {\n` +
(yield utils.log(extension + ' could not be enabled', 'win32', 'error', log_prefix)) +
` }\n`);
});
}
exports.enableExtensionWindows = enableExtensionWindows;
/**
* Enable extensions which are installed but not enabled on unix
*
* @param extension
* @param os_version
*/
function enableExtensionUnix(extension, os_version, log_prefix) {
return __awaiter(this, void 0, void 0, function* () {
return (`if [ ! "$(php -m | grep -i ${extension})" ] && [ -e "$ext_dir/${extension}.so" ]; then
echo "${yield utils.getExtensionPrefix(extension)}=${extension}" >> $ini_file\n` +
(yield utils.log('Enabled ' + extension, os_version, 'success', log_prefix)) +
`;\n elif [ "$(php -m | grep -i ${extension})" ]; then \n` +
(yield utils.log(extension + ' was already enabled', os_version, 'success', log_prefix)) +
`; fi\n`);
});
}
exports.enableExtensionUnix = enableExtensionUnix;
/** /**
* Install and enable extensions for darwin * Install and enable extensions for darwin
* *
@ -85,48 +54,33 @@ function addExtensionDarwin(extension_csv, version, log_prefix) {
return __awaiter(this, void 0, void 0, function* () { return __awaiter(this, void 0, void 0, function* () {
extension = extension.toLowerCase(); extension = extension.toLowerCase();
// add script to enable extension is already installed along with php // add script to enable extension is already installed along with php
script += yield enableExtensionUnix(extension, 'darwin', log_prefix); let install_command = '';
switch (yield pecl.checkPECLExtension(extension)) { switch (version + extension) {
case true: case '7.4xdebug':
let install_command = ''; install_command =
switch (version + extension) { 'sh ./xdebug_darwin.sh >/dev/null 2>&1 && echo "zend_extension=xdebug.so" >> $ini_file';
case '7.4xdebug': break;
install_command = case '7.4pcov':
'sh ./xdebug_darwin.sh >/dev/null 2>&1 && echo "zend_extension=xdebug.so" >> $ini_file'; install_command =
break; 'sh ./pcov.sh >/dev/null 2>&1 && echo "extension=pcov.so" >> $ini_file';
case '7.4pcov': break;
install_command = case '5.6xdebug':
'sh ./pcov.sh >/dev/null 2>&1 && echo "extension=pcov.so" >> $ini_file'; install_command = 'sudo pecl install xdebug-2.5.5 >/dev/null 2>&1';
break;
case '5.6xdebug':
install_command = 'sudo pecl install xdebug-2.5.5 >/dev/null 2>&1';
break;
default:
install_command =
'sudo pecl install ' + extension + ' >/dev/null 2>&1';
break;
}
script +=
'if [ ! "$(php -m | grep -i ' +
extension +
')" ]; then ' +
install_command +
' && ' +
(yield utils.log('Installed and enabled ' + extension, 'darwin', 'success', log_prefix)) +
' || ' +
(yield utils.log('Could not install ' + extension + ' on PHP' + version, 'darwin', 'error', log_prefix)) +
'; fi\n';
break; break;
case false:
default: default:
script += install_command = 'sudo pecl install ' + extension + ' >/dev/null 2>&1';
'if [ ! "$(php -m | grep -i ' +
extension +
')" ]; then \n' +
(yield utils.log('Could not find ' + extension + ' for PHP' + version + ' on PECL', 'darwin', 'error', log_prefix)) +
'; fi\n';
break; break;
} }
script +=
'add_extension ' +
extension +
' "' +
install_command +
'" ' +
(yield utils.getExtensionPrefix(extension)) +
' "' +
log_prefix +
'"\n';
}); });
}); });
return script; return script;
@ -147,46 +101,31 @@ function addExtensionWindows(extension_csv, version, log_prefix) {
return __awaiter(this, void 0, void 0, function* () { return __awaiter(this, void 0, void 0, function* () {
extension = extension.toLowerCase(); extension = extension.toLowerCase();
// add script to enable extension is already installed along with php // add script to enable extension is already installed along with php
script += yield enableExtensionWindows(extension, log_prefix); let install_command = '';
switch (yield pecl.checkPECLExtension(extension)) { switch (version + extension) {
case true: case '7.4xdebug':
let install_command = ''; const extension_url = 'https://xdebug.org/files/php_xdebug-2.8.0beta2-7.4-vc15.dll';
switch (version + extension) { install_command =
case '7.4xdebug': 'Invoke-WebRequest -Uri ' +
const extension_url = 'https://xdebug.org/files/php_xdebug-2.8.0beta2-7.4-vc15.dll'; extension_url +
install_command = ' -OutFile C:\\tools\\php\\ext\\php_xdebug.dll\n';
'Invoke-WebRequest -Uri ' + install_command += 'Enable-PhpExtension xdebug';
extension_url +
' -OutFile C:\\tools\\php\\ext\\php_xdebug.dll\n';
install_command += 'Enable-PhpExtension xdebug';
break;
case '7.2xdebug':
default:
install_command = 'Install-PhpExtension ' + extension;
break;
}
script +=
'if(!(php -m | findstr -i ' +
extension +
')) { ' +
'try { ' +
install_command +
'\n' +
(yield utils.log('Installed and enabled ' + extension, 'win32', 'success', log_prefix)) +
' } catch [Exception] { ' +
(yield utils.log('Could not install ' + extension + ' on PHP' + version, 'win32', 'error', log_prefix)) +
' } }\n';
break; break;
case false: case '7.2xdebug':
default: default:
script += install_command = 'Install-PhpExtension ' + extension;
'if(!(php -m | findstr -i ' +
extension +
')) { ' +
(yield utils.log('Could not find ' + extension + ' for PHP' + version + ' on PECL', 'win32', 'error', log_prefix)) +
' } \n';
break; break;
} }
script +=
'Add-Extension ' +
extension +
' "' +
install_command +
'" ' +
(yield utils.getExtensionPrefix(extension)) +
' "' +
log_prefix +
'"\n';
}); });
}); });
return script; return script;
@ -207,7 +146,6 @@ function addExtensionLinux(extension_csv, version, log_prefix) {
return __awaiter(this, void 0, void 0, function* () { return __awaiter(this, void 0, void 0, function* () {
extension = extension.toLowerCase(); extension = extension.toLowerCase();
// add script to enable extension is already installed along with php // add script to enable extension is already installed along with php
script += yield enableExtensionUnix(extension, 'linux', log_prefix);
let install_command = ''; let install_command = '';
switch (version + extension) { switch (version + extension) {
case '7.4xdebug': case '7.4xdebug':
@ -218,6 +156,14 @@ function addExtensionLinux(extension_csv, version, log_prefix) {
install_command = install_command =
'./pcov.sh >/dev/null 2>&1 && echo "extension=pcov.so" >> $ini_file'; './pcov.sh >/dev/null 2>&1 && echo "extension=pcov.so" >> $ini_file';
break; break;
case '7.2phalcon3':
case '7.3phalcon3':
install_command = './phalcon.sh master ' + version + ' >/dev/null 2>&1';
break;
case '7.2phalcon4':
case '7.3phalcon4':
install_command = './phalcon.sh 4.0.x ' + version + ' >/dev/null 2>&1';
break;
default: default:
install_command = install_command =
'sudo DEBIAN_FRONTEND=noninteractive apt install -y php' + 'sudo DEBIAN_FRONTEND=noninteractive apt install -y php' +
@ -228,15 +174,15 @@ function addExtensionLinux(extension_csv, version, log_prefix) {
break; break;
} }
script += script +=
'if [ ! "$(php -m | grep -i ' + 'add_extension ' +
extension + extension +
')" ]; then ' + ' "' +
install_command + install_command +
' && ' + '" ' +
(yield utils.log('Installed and enabled ' + extension, 'linux', 'success', log_prefix)) + (yield utils.getExtensionPrefix(extension)) +
' || ' + ' "' +
(yield utils.log('Could not find php' + version + '-' + extension + ' on APT repository', 'linux', 'error', log_prefix)) + log_prefix +
'; fi\n'; '"\n';
}); });
}); });
return script; return script;

View File

@ -66,6 +66,4 @@ function run() {
}); });
} }
// call the run function // call the run function
run().then(function () { run();
console.log('done');
});

View File

@ -19,6 +19,12 @@ Object.defineProperty(exports, "__esModule", { value: true });
const fs = __importStar(require("fs")); const fs = __importStar(require("fs"));
const path = __importStar(require("path")); const path = __importStar(require("path"));
const core = __importStar(require("@actions/core")); const core = __importStar(require("@actions/core"));
/**
* Function to get inputs from both with and env annotations.
*
* @param name
* @param mandatory
*/
function getInput(name, mandatory) { function getInput(name, mandatory) {
return __awaiter(this, void 0, void 0, function* () { return __awaiter(this, void 0, void 0, function* () {
let input = process.env[name]; let input = process.env[name];
@ -82,11 +88,14 @@ function readScript(filename, version, os_version) {
} }
break; break;
case 'linux': case 'linux':
let files = ['scripts/phalcon.sh'];
yield readFiles74(['scripts/phalcon.sh']);
switch (version) { switch (version) {
case '7.4': case '7.4':
yield readFiles74(['scripts/xdebug.sh', 'scripts/pcov.sh']); files.concat(['scripts/xdebug.sh', 'scripts/pcov.sh']);
break; break;
} }
yield readFiles74(files);
break; break;
case 'win32': case 'win32':
switch (version) { switch (version) {
@ -117,6 +126,7 @@ function writeScript(filename, version, script) {
exports.writeScript = writeScript; exports.writeScript = writeScript;
/** /**
* Function to break extension csv into an array * Function to break extension csv into an array
*
* @param extension_csv * @param extension_csv
*/ */
function extensionArray(extension_csv) { function extensionArray(extension_csv) {
@ -165,7 +175,7 @@ function log(message, os_version, log_type, prefix = '') {
}; };
switch (prefix) { switch (prefix) {
case '': case '':
prefix = prefix; prefix = '';
break; break;
default: default:
prefix = prefix + ': '; prefix = prefix + ': ';
@ -196,6 +206,11 @@ function log(message, os_version, log_type, prefix = '') {
}); });
} }
exports.log = log; exports.log = log;
/**
* Function to get prefix required to load an extension.
*
* @param extension
*/
function getExtensionPrefix(extension) { function getExtensionPrefix(extension) {
return __awaiter(this, void 0, void 0, function* () { return __awaiter(this, void 0, void 0, function* () {
let zend = ['xdebug', 'opcache', 'ioncube', 'eaccelerator']; let zend = ['xdebug', 'opcache', 'ioncube', 'eaccelerator'];

40
node_modules/@actions/core/README.md generated vendored
View File

@ -4,45 +4,53 @@
## Usage ## Usage
#### Inputs/Outputs ### Import the package
You can use this library to get inputs or set outputs:
```js ```js
// javascript
const core = require('@actions/core'); const core = require('@actions/core');
const myInput = core.getInput('inputName', { required: true }); // typescript
import * as core from '@actions/core';
```
// Do stuff #### Inputs/Outputs
Action inputs can be read with `getInput`. Outputs can be set with `setOutput` which makes them available to be mapped into inputs of other actions to ensure they are decoupled.
```js
const myInput = core.getInput('inputName', { required: true });
core.setOutput('outputKey', 'outputVal'); core.setOutput('outputKey', 'outputVal');
``` ```
#### Exporting variables #### Exporting variables
You can also export variables for future steps. Variables get set in the environment. Since each step runs in a separate process, you can use `exportVariable` to add it to this step and future steps environment blocks.
```js ```js
const core = require('@actions/core');
// Do stuff
core.exportVariable('envVar', 'Val'); core.exportVariable('envVar', 'Val');
``` ```
#### Setting a secret
Setting a secret registers the secret with the runner to ensure it is masked in logs.
```js
core.setSecret('myPassword');
```
#### PATH Manipulation #### PATH Manipulation
You can explicitly add items to the path for all remaining steps in a workflow: To make a tool's path available in the path for the remainder of the job (without altering the machine or containers state), use `addPath`. The runner will prepend the path given to the jobs PATH.
```js ```js
const core = require('@actions/core'); core.addPath('/path/to/mytool');
core.addPath('pathToTool');
``` ```
#### Exit codes #### Exit codes
You should use this library to set the failing exit code for your action: You should use this library to set the failing exit code for your action. If status is not set and the script runs to completion, that will lead to a success.
```js ```js
const core = require('@actions/core'); const core = require('@actions/core');
@ -55,6 +63,8 @@ catch (err) {
core.setFailed(`Action failed with error ${err}`); core.setFailed(`Action failed with error ${err}`);
} }
Note that `setNeutral` is not yet implemented in actions V2 but equivalent functionality is being planned.
``` ```
#### Logging #### Logging

View File

@ -19,17 +19,16 @@ export declare enum ExitCode {
Failure = 1 Failure = 1
} }
/** /**
* sets env variable for this action and future actions in the job * Sets env variable for this action and future actions in the job
* @param name the name of the variable to set * @param name the name of the variable to set
* @param val the value of the variable * @param val the value of the variable
*/ */
export declare function exportVariable(name: string, val: string): void; export declare function exportVariable(name: string, val: string): void;
/** /**
* exports the variable and registers a secret which will get masked from logs * Registers a secret which will get masked from logs
* @param name the name of the variable to set * @param secret value of the secret
* @param val value of the secret
*/ */
export declare function exportSecret(name: string, val: string): void; export declare function setSecret(secret: string): void;
/** /**
* Prepends inputPath to the PATH (for this action and future actions) * Prepends inputPath to the PATH (for this action and future actions)
* @param inputPath * @param inputPath

View File

@ -30,7 +30,7 @@ var ExitCode;
// Variables // Variables
//----------------------------------------------------------------------- //-----------------------------------------------------------------------
/** /**
* sets env variable for this action and future actions in the job * Sets env variable for this action and future actions in the job
* @param name the name of the variable to set * @param name the name of the variable to set
* @param val the value of the variable * @param val the value of the variable
*/ */
@ -40,18 +40,13 @@ function exportVariable(name, val) {
} }
exports.exportVariable = exportVariable; exports.exportVariable = exportVariable;
/** /**
* exports the variable and registers a secret which will get masked from logs * Registers a secret which will get masked from logs
* @param name the name of the variable to set * @param secret value of the secret
* @param val value of the secret
*/ */
function exportSecret(name, val) { function setSecret(secret) {
exportVariable(name, val); command_1.issueCommand('add-mask', {}, secret);
// the runner will error with not implemented
// leaving the function but raising the error earlier
command_1.issueCommand('set-secret', {}, val);
throw new Error('Not implemented.');
} }
exports.exportSecret = exportSecret; exports.setSecret = setSecret;
/** /**
* Prepends inputPath to the PATH (for this action and future actions) * Prepends inputPath to the PATH (for this action and future actions)
* @param inputPath * @param inputPath

View File

@ -1 +1 @@
{"version":3,"file":"core.js","sourceRoot":"","sources":["../src/core.ts"],"names":[],"mappings":"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"} {"version":3,"file":"core.js","sourceRoot":"","sources":["../src/core.ts"],"names":[],"mappings":"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"}

View File

@ -1,33 +1,33 @@
{ {
"_args": [ "_args": [
[ [
"@actions/core@1.1.1", "@actions/core@1.1.3",
"E:\\python\\setup-php" "E:\\python\\setup-php"
] ]
], ],
"_from": "@actions/core@1.1.1", "_from": "@actions/core@1.1.3",
"_id": "@actions/core@1.1.1", "_id": "@actions/core@1.1.3",
"_inBundle": false, "_inBundle": false,
"_integrity": "sha512-O5G6EmlzTVsng7VSpNtszIoQq6kOgMGNTFB/hmwKNNA4V71JyxImCIrL27vVHCt2Cb3ImkaCr6o27C2MV9Ylwg==", "_integrity": "sha512-2BIib53Jh4Cfm+1XNuZYYGTeRo8yiWEAUMoliMh1qQGMaqTF4VUlhhcsBylTu4qWmUx45DrY0y0XskimAHSqhw==",
"_location": "/@actions/core", "_location": "/@actions/core",
"_phantomChildren": {}, "_phantomChildren": {},
"_requested": { "_requested": {
"type": "version", "type": "version",
"registry": true, "registry": true,
"raw": "@actions/core@1.1.1", "raw": "@actions/core@1.1.3",
"name": "@actions/core", "name": "@actions/core",
"escapedName": "@actions%2fcore", "escapedName": "@actions%2fcore",
"scope": "@actions", "scope": "@actions",
"rawSpec": "1.1.1", "rawSpec": "1.1.3",
"saveSpec": null, "saveSpec": null,
"fetchSpec": "1.1.1" "fetchSpec": "1.1.3"
}, },
"_requiredBy": [ "_requiredBy": [
"/", "/",
"/@actions/tool-cache" "/@actions/tool-cache"
], ],
"_resolved": "https://registry.npmjs.org/@actions/core/-/core-1.1.1.tgz", "_resolved": "https://registry.npmjs.org/@actions/core/-/core-1.1.3.tgz",
"_spec": "1.1.1", "_spec": "1.1.3",
"_where": "E:\\python\\setup-php", "_where": "E:\\python\\setup-php",
"bugs": { "bugs": {
"url": "https://github.com/actions/toolkit/issues" "url": "https://github.com/actions/toolkit/issues"
@ -57,11 +57,12 @@
}, },
"repository": { "repository": {
"type": "git", "type": "git",
"url": "git+https://github.com/actions/toolkit.git" "url": "git+https://github.com/actions/toolkit.git",
"directory": "packages/core"
}, },
"scripts": { "scripts": {
"test": "echo \"Error: run tests from root\" && exit 1", "test": "echo \"Error: run tests from root\" && exit 1",
"tsc": "tsc" "tsc": "tsc"
}, },
"version": "1.1.1" "version": "1.1.3"
} }

View File

@ -22,7 +22,6 @@
"fetchSpec": "1.5.0" "fetchSpec": "1.5.0"
}, },
"_requiredBy": [ "_requiredBy": [
"/",
"/@actions/tool-cache" "/@actions/tool-cache"
], ],
"_resolved": "https://registry.npmjs.org/typed-rest-client/-/typed-rest-client-1.5.0.tgz", "_resolved": "https://registry.npmjs.org/typed-rest-client/-/typed-rest-client-1.5.0.tgz",

114
package-lock.json generated
View File

@ -1,13 +1,13 @@
{ {
"name": "setup-php", "name": "setup-php",
"version": "1.4.1", "version": "1.4.2",
"lockfileVersion": 1, "lockfileVersion": 1,
"requires": true, "requires": true,
"dependencies": { "dependencies": {
"@actions/core": { "@actions/core": {
"version": "1.1.1", "version": "1.1.3",
"resolved": "https://registry.npmjs.org/@actions/core/-/core-1.1.1.tgz", "resolved": "https://registry.npmjs.org/@actions/core/-/core-1.1.3.tgz",
"integrity": "sha512-O5G6EmlzTVsng7VSpNtszIoQq6kOgMGNTFB/hmwKNNA4V71JyxImCIrL27vVHCt2Cb3ImkaCr6o27C2MV9Ylwg==" "integrity": "sha512-2BIib53Jh4Cfm+1XNuZYYGTeRo8yiWEAUMoliMh1qQGMaqTF4VUlhhcsBylTu4qWmUx45DrY0y0XskimAHSqhw=="
}, },
"@actions/exec": { "@actions/exec": {
"version": "1.0.1", "version": "1.0.1",
@ -42,18 +42,18 @@
} }
}, },
"@babel/core": { "@babel/core": {
"version": "7.6.2", "version": "7.6.4",
"resolved": "https://registry.npmjs.org/@babel/core/-/core-7.6.2.tgz", "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.6.4.tgz",
"integrity": "sha512-l8zto/fuoZIbncm+01p8zPSDZu/VuuJhAfA7d/AbzM09WR7iVhavvfNDYCNpo1VvLk6E6xgAoP9P+/EMJHuRkQ==", "integrity": "sha512-Rm0HGw101GY8FTzpWSyRbki/jzq+/PkNQJ+nSulrdY6gFGOsNseCqD6KHRYe2E+EdzuBdr2pxCp6s4Uk6eJ+XQ==",
"dev": true, "dev": true,
"requires": { "requires": {
"@babel/code-frame": "^7.5.5", "@babel/code-frame": "^7.5.5",
"@babel/generator": "^7.6.2", "@babel/generator": "^7.6.4",
"@babel/helpers": "^7.6.2", "@babel/helpers": "^7.6.2",
"@babel/parser": "^7.6.2", "@babel/parser": "^7.6.4",
"@babel/template": "^7.6.0", "@babel/template": "^7.6.0",
"@babel/traverse": "^7.6.2", "@babel/traverse": "^7.6.3",
"@babel/types": "^7.6.0", "@babel/types": "^7.6.3",
"convert-source-map": "^1.1.0", "convert-source-map": "^1.1.0",
"debug": "^4.1.0", "debug": "^4.1.0",
"json5": "^2.1.0", "json5": "^2.1.0",
@ -93,12 +93,12 @@
} }
}, },
"@babel/generator": { "@babel/generator": {
"version": "7.6.2", "version": "7.6.4",
"resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.6.2.tgz", "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.6.4.tgz",
"integrity": "sha512-j8iHaIW4gGPnViaIHI7e9t/Hl8qLjERI6DcV9kEpAIDJsAOrcnXqRS7t+QbhL76pwbtqP+QCQLL0z1CyVmtjjQ==", "integrity": "sha512-jsBuXkFoZxk0yWLyGI9llT9oiQ2FeTASmRFE32U+aaDTfoE92t78eroO7PTpU/OrYq38hlcDM6vbfLDaOLy+7w==",
"dev": true, "dev": true,
"requires": { "requires": {
"@babel/types": "^7.6.0", "@babel/types": "^7.6.3",
"jsesc": "^2.5.1", "jsesc": "^2.5.1",
"lodash": "^4.17.13", "lodash": "^4.17.13",
"source-map": "^0.5.0" "source-map": "^0.5.0"
@ -170,9 +170,9 @@
} }
}, },
"@babel/parser": { "@babel/parser": {
"version": "7.6.2", "version": "7.6.4",
"resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.6.2.tgz", "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.6.4.tgz",
"integrity": "sha512-mdFqWrSPCmikBoaBYMuBulzTIKuXVPtEISFbRRVNwMWpCms/hmE2kRq0bblUHaNRKrjRlmVbx1sDHmjmRgD2Xg==", "integrity": "sha512-D8RHPW5qd0Vbyo3qb+YjO5nvUVRTXFLQ/FsDxJU2Nqz4uB5EnUN0ZQSEYpvTIbRuttig1XbHWU5oMeQwQSAA+A==",
"dev": true "dev": true
}, },
"@babel/plugin-syntax-object-rest-spread": { "@babel/plugin-syntax-object-rest-spread": {
@ -196,17 +196,17 @@
} }
}, },
"@babel/traverse": { "@babel/traverse": {
"version": "7.6.2", "version": "7.6.3",
"resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.6.2.tgz", "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.6.3.tgz",
"integrity": "sha512-8fRE76xNwNttVEF2TwxJDGBLWthUkHWSldmfuBzVRmEDWOtu4XdINTgN7TDWzuLg4bbeIMLvfMFD9we5YcWkRQ==", "integrity": "sha512-unn7P4LGsijIxaAJo/wpoU11zN+2IaClkQAxcJWBNCMS6cmVh802IyLHNkAjQ0iYnRS3nnxk5O3fuXW28IMxTw==",
"dev": true, "dev": true,
"requires": { "requires": {
"@babel/code-frame": "^7.5.5", "@babel/code-frame": "^7.5.5",
"@babel/generator": "^7.6.2", "@babel/generator": "^7.6.3",
"@babel/helper-function-name": "^7.1.0", "@babel/helper-function-name": "^7.1.0",
"@babel/helper-split-export-declaration": "^7.4.4", "@babel/helper-split-export-declaration": "^7.4.4",
"@babel/parser": "^7.6.2", "@babel/parser": "^7.6.3",
"@babel/types": "^7.6.0", "@babel/types": "^7.6.3",
"debug": "^4.1.0", "debug": "^4.1.0",
"globals": "^11.1.0", "globals": "^11.1.0",
"lodash": "^4.17.13" "lodash": "^4.17.13"
@ -230,9 +230,9 @@
} }
}, },
"@babel/types": { "@babel/types": {
"version": "7.6.1", "version": "7.6.3",
"resolved": "https://registry.npmjs.org/@babel/types/-/types-7.6.1.tgz", "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.6.3.tgz",
"integrity": "sha512-X7gdiuaCmA0uRjCmRtYJNAVCc/q+5xSgsfKJHqMN4iNLILX39677fJE1O40arPMh0TTtS9ItH67yre6c7k6t0g==", "integrity": "sha512-CqbcpTxMcpuQTMhjI37ZHVgjBkysg5icREQIEZ0eG1yCNwg3oy+5AaLiOKmjsCj6nqOsa6Hf0ObjRVwokb7srA==",
"dev": true, "dev": true,
"requires": { "requires": {
"esutils": "^2.0.2", "esutils": "^2.0.2",
@ -540,9 +540,9 @@
"dev": true "dev": true
}, },
"@types/node": { "@types/node": {
"version": "12.7.7", "version": "12.7.12",
"resolved": "https://registry.npmjs.org/@types/node/-/node-12.7.7.tgz", "resolved": "https://registry.npmjs.org/@types/node/-/node-12.7.12.tgz",
"integrity": "sha512-4jUncNe2tj1nmrO/34PsRpZqYVnRV1svbU78cKhuQKkMntKB/AmdLyGgswcZKjFHEHGpiY8pVD8CuVI55nP54w==", "integrity": "sha512-KPYGmfD0/b1eXurQ59fXD1GBzhSQfz6/lKBxkaHX9dKTzjXbK68Zt7yGUxUsCS1jeTy/8aL+d9JEr+S54mpkWQ==",
"dev": true "dev": true
}, },
"@types/normalize-package-data": { "@types/normalize-package-data": {
@ -558,9 +558,9 @@
"dev": true "dev": true
}, },
"@types/yargs": { "@types/yargs": {
"version": "13.0.2", "version": "13.0.3",
"resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-13.0.2.tgz", "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-13.0.3.tgz",
"integrity": "sha512-lwwgizwk/bIIU+3ELORkyuOgDjCh7zuWDFqRtPPhhVgq9N1F7CvLNKg1TX4f2duwtKQ0p044Au9r1PLIXHrIzQ==", "integrity": "sha512-K8/LfZq2duW33XW/tFwEAfnZlqIfVsoyRB3kfXdPXYhl0nfM8mmh7GS0jg7WrX2Dgq/0Ha/pR1PaR+BvmWwjiQ==",
"dev": true, "dev": true,
"requires": { "requires": {
"@types/yargs-parser": "*" "@types/yargs-parser": "*"
@ -1370,9 +1370,9 @@
} }
}, },
"es-abstract": { "es-abstract": {
"version": "1.14.2", "version": "1.15.0",
"resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.14.2.tgz", "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.15.0.tgz",
"integrity": "sha512-DgoQmbpFNOofkjJtKwr87Ma5EW4Dc8fWhD0R+ndq7Oc456ivUfGOOP6oAZTTKl5/CcNMP+EN+e3/iUzgE0veZg==", "integrity": "sha512-bhkEqWJ2t2lMeaJDuk7okMkJWI/yqgH/EoGwpcvv0XW9RWQsRspI4wt6xuyuvMvvQE3gg/D9HXppgk21w78GyQ==",
"dev": true, "dev": true,
"requires": { "requires": {
"es-to-primitive": "^1.2.0", "es-to-primitive": "^1.2.0",
@ -1383,8 +1383,8 @@
"is-regex": "^1.0.4", "is-regex": "^1.0.4",
"object-inspect": "^1.6.0", "object-inspect": "^1.6.0",
"object-keys": "^1.1.1", "object-keys": "^1.1.1",
"string.prototype.trimleft": "^2.0.0", "string.prototype.trimleft": "^2.1.0",
"string.prototype.trimright": "^2.0.0" "string.prototype.trimright": "^2.1.0"
} }
}, },
"es-to-primitive": { "es-to-primitive": {
@ -2342,9 +2342,9 @@
"dev": true "dev": true
}, },
"handlebars": { "handlebars": {
"version": "4.3.1", "version": "4.4.3",
"resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.3.1.tgz", "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.4.3.tgz",
"integrity": "sha512-c0HoNHzDiHpBt4Kqe99N8tdLPKAnGCQ73gYMPWtAYM4PwGnf7xl8PBUHJqh9ijlzt2uQKaSRxbXRt+rZ7M2/kA==", "integrity": "sha512-B0W4A2U1ww3q7VVthTKfh+epHx+q4mCt6iK+zEAzbMBpWQAwxCeKxEGpj/1oQTpzPXDNSOG7hmG14TsISH50yw==",
"dev": true, "dev": true,
"requires": { "requires": {
"neo-async": "^2.6.0", "neo-async": "^2.6.0",
@ -2423,9 +2423,9 @@
} }
}, },
"hosted-git-info": { "hosted-git-info": {
"version": "2.8.4", "version": "2.8.5",
"resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.4.tgz", "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.5.tgz",
"integrity": "sha512-pzXIvANXEFrc5oFFXRMkbLPQ2rXRoDERwDLyrcUxGhaZhgP54BBSl9Oheh7Vv0T090cszWBxPjkQQ5Sq1PbBRQ==", "integrity": "sha512-kssjab8CvdXfcXMXVcvsXum4Hwdq9XGtRD3TteMEvEbq0LXyiNQr6AprqKqfeaDXze7SxWvRxdpwE6ku7ikLkg==",
"dev": true "dev": true
}, },
"html-encoding-sniffer": { "html-encoding-sniffer": {
@ -3389,9 +3389,9 @@
"dev": true "dev": true
}, },
"json5": { "json5": {
"version": "2.1.0", "version": "2.1.1",
"resolved": "https://registry.npmjs.org/json5/-/json5-2.1.0.tgz", "resolved": "https://registry.npmjs.org/json5/-/json5-2.1.1.tgz",
"integrity": "sha512-8Mh9h6xViijj36g7Dxi+Y4S6hNGV96vcJZr/SrlHh1LR/pEn/8j/+qIBbs44YKl69Lrfctp4QD+AdWLTMqEZAQ==", "integrity": "sha512-l+3HXD0GEI3huGq1njuqtzYK8OYJyXMkOLtQ53pjWh89tvWS2h6l+1zMkYWqlb57+SiQodKZyvMEFb2X+KrFhQ==",
"dev": true, "dev": true,
"requires": { "requires": {
"minimist": "^1.2.0" "minimist": "^1.2.0"
@ -4150,9 +4150,9 @@
"dev": true "dev": true
}, },
"react-is": { "react-is": {
"version": "16.9.0", "version": "16.10.2",
"resolved": "https://registry.npmjs.org/react-is/-/react-is-16.9.0.tgz", "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.10.2.tgz",
"integrity": "sha512-tJBzzzIgnnRfEm046qRcURvwQnZVXmuCbscxUO5RWrGTXpon2d4c8mI0D8WE6ydVIm29JiLB6+RslkIvym9Rjw==", "integrity": "sha512-INBT1QEgtcCCgvccr5/86CfD71fw9EPmDxgiJX4I2Ddr6ZsV6iFXsuby+qWJPtmNuMY0zByTsG4468P7nHuNWA==",
"dev": true "dev": true
}, },
"read-pkg": { "read-pkg": {
@ -5015,19 +5015,19 @@
} }
}, },
"typescript": { "typescript": {
"version": "3.6.3", "version": "3.6.4",
"resolved": "https://registry.npmjs.org/typescript/-/typescript-3.6.3.tgz", "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.6.4.tgz",
"integrity": "sha512-N7bceJL1CtRQ2RiG0AQME13ksR7DiuQh/QehubYcghzv20tnh+MQnQIuJddTmsbqYj+dztchykemz0zFzlvdQw==", "integrity": "sha512-unoCll1+l+YK4i4F8f22TaNVPRHcD9PA3yCuZ8g5e0qGqlVlJ/8FSateOLLSagn+Yg5+ZwuPkL8LFUc0Jcvksg==",
"dev": true "dev": true
}, },
"uglify-js": { "uglify-js": {
"version": "3.6.0", "version": "3.6.1",
"resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.6.0.tgz", "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.6.1.tgz",
"integrity": "sha512-W+jrUHJr3DXKhrsS7NUVxn3zqMOFn0hL/Ei6v0anCIMoKC93TjcflTagwIHLW7SfMFfiQuktQyFVCFHGUE0+yg==", "integrity": "sha512-+dSJLJpXBb6oMHP+Yvw8hUgElz4gLTh82XuX68QiJVTXaE5ibl6buzhNkQdYhBlIhozWOC9ge16wyRmjG4TwVQ==",
"dev": true, "dev": true,
"optional": true, "optional": true,
"requires": { "requires": {
"commander": "~2.20.0", "commander": "2.20.0",
"source-map": "~0.6.1" "source-map": "~0.6.1"
} }
}, },

View File

@ -1,6 +1,6 @@
{ {
"name": "setup-php", "name": "setup-php",
"version": "1.4.1", "version": "1.4.2",
"private": false, "private": false,
"description": "Setup php action", "description": "Setup php action",
"main": "lib/setup-php.js", "main": "lib/setup-php.js",
@ -24,8 +24,7 @@
"dependencies": { "dependencies": {
"@actions/core": "^1.0.0", "@actions/core": "^1.0.0",
"@actions/tool-cache": "^1.0.0", "@actions/tool-cache": "^1.0.0",
"fs": "0.0.1-security", "fs": "0.0.1-security"
"typed-rest-client": "^1.5.0"
}, },
"devDependencies": { "devDependencies": {
"@types/jest": "^24.0.18", "@types/jest": "^24.0.18",

View File

@ -31,13 +31,8 @@ export async function addINIValues(ini_values_csv: string, os_version: string) {
export async function addINIValuesUnix( export async function addINIValuesUnix(
ini_values_csv: string ini_values_csv: string
): Promise<string> { ): Promise<string> {
let script: string = '\n';
let ini_values: Array<string> = await utils.INIArray(ini_values_csv); let ini_values: Array<string> = await utils.INIArray(ini_values_csv);
await utils.asyncForEach(ini_values, async function(ini_value: string) { return '\necho "' + ini_values.join('\n') + '" >> $ini_file\n';
// add script to set ini value
script += 'echo "' + ini_value + '" >> $ini_file\n';
});
return script;
} }
/** /**
@ -48,11 +43,8 @@ export async function addINIValuesUnix(
export async function addINIValuesWindows( export async function addINIValuesWindows(
ini_values_csv: string ini_values_csv: string
): Promise<string> { ): Promise<string> {
let script: string = '\n';
let ini_values: Array<string> = await utils.INIArray(ini_values_csv); let ini_values: Array<string> = await utils.INIArray(ini_values_csv);
await utils.asyncForEach(ini_values, async function(ini_value: string) { return (
// add script to set ini value 'Add-Content C:\\tools\\php\\php.ini "' + ini_values.join('\n') + '"\n'
script += 'Add-Content C:\\tools\\php\\php.ini "' + ini_value + '"\n'; );
});
return script;
} }

View File

@ -1,8 +1,14 @@
import * as utils from './utils'; import * as utils from './utils';
import * as pecl from './pecl';
import * as extensions from './extensions'; import * as extensions from './extensions';
import * as config from './config'; import * as config from './config';
/**
* Function to set coverage driver
*
* @param coverage_driver
* @param version
* @param os_version
*/
export async function addCoverage( export async function addCoverage(
coverage_driver: string, coverage_driver: string,
version: string, version: string,
@ -21,6 +27,12 @@ export async function addCoverage(
} }
} }
/**
* Function to setup Xdebug
*
* @param version
* @param os_version
*/
export async function addCoverageXdebug(version: string, os_version: string) { export async function addCoverageXdebug(version: string, os_version: string) {
let script: string = '\n'; let script: string = '\n';
script += await extensions.addExtension( script += await extensions.addExtension(
@ -39,6 +51,12 @@ export async function addCoverageXdebug(version: string, os_version: string) {
return script; return script;
} }
/**
* Function to setup PCOV
*
* @param version
* @param os_version
*/
export async function addCoveragePCOV(version: string, os_version: string) { export async function addCoveragePCOV(version: string, os_version: string) {
let script: string = '\n'; let script: string = '\n';
switch (version) { switch (version) {
@ -57,7 +75,9 @@ export async function addCoveragePCOV(version: string, os_version: string) {
script += script +=
'if [ -e /etc/php/' + 'if [ -e /etc/php/' +
version + version +
'/mods-available/xdebug.ini ]; then sudo phpdismod xdebug; fi\n'; '/mods-available/xdebug.ini ]; then sudo phpdismod -v ' +
version +
' xdebug; fi\n';
script += 'sudo sed -i "/xdebug/d" $ini_file\n'; script += 'sudo sed -i "/xdebug/d" $ini_file\n';
break; break;
case 'darwin': case 'darwin':
@ -92,6 +112,12 @@ export async function addCoveragePCOV(version: string, os_version: string) {
return script; return script;
} }
/**
* Function to disable Xdebug and PCOV
*
* @param version
* @param os_version
*/
export async function disableCoverage(version: string, os_version: string) { export async function disableCoverage(version: string, os_version: string) {
let script: string = '\n'; let script: string = '\n';
switch (os_version) { switch (os_version) {
@ -99,11 +125,15 @@ export async function disableCoverage(version: string, os_version: string) {
script += script +=
'if [ -e /etc/php/' + 'if [ -e /etc/php/' +
version + version +
'/mods-available/xdebug.ini ]; then sudo phpdismod xdebug; fi\n'; '/mods-available/xdebug.ini ]; then sudo phpdismod -v ' +
version +
' xdebug; fi\n';
script += script +=
'if [ -e /etc/php/' + 'if [ -e /etc/php/' +
version + version +
'/mods-available/pcov.ini ]; then sudo phpdismod pcov; fi\n'; '/mods-available/pcov.ini ]; then sudo phpdismod -v ' +
version +
' pcov; fi\n';
script += 'sudo sed -i "/xdebug/d" $ini_file\n'; script += 'sudo sed -i "/xdebug/d" $ini_file\n';
script += 'sudo sed -i "/pcov/d" $ini_file\n'; script += 'sudo sed -i "/pcov/d" $ini_file\n';
break; break;

View File

@ -1,6 +1,13 @@
import * as utils from './utils'; import * as utils from './utils';
import * as pecl from './pecl';
/**
* Install and enable extensions
*
* @param extension_csv
* @param version
* @param os_version
* @param log_prefix
*/
export async function addExtension( export async function addExtension(
extension_csv: string, extension_csv: string,
version: string, version: string,
@ -24,75 +31,6 @@ export async function addExtension(
} }
} }
/**
* Enable extensions which are installed but not enabled on windows
*
* @param extension
*/
export async function enableExtensionWindows(
extension: string,
log_prefix: string
) {
return (
`try {
$exist = Test-Path -Path $ext_dir\\php_${extension}.dll
if(!(php -m | findstr -i ${extension}) -and $exist) {
Add-Content C:\\tools\\php\\php.ini "${await utils.getExtensionPrefix(
extension
)}=php_${extension}.dll"\n` +
(await utils.log('Enabled ' + extension, 'win32', 'success', log_prefix)) +
` } elseif(php -m | findstr -i ${extension}) {\n` +
(await utils.log(
extension + ' was already enabled',
'win32',
'success',
log_prefix
)) +
` }
} catch [Exception] {\n` +
(await utils.log(
extension + ' could not be enabled',
'win32',
'error',
log_prefix
)) +
` }\n`
);
}
/**
* Enable extensions which are installed but not enabled on unix
*
* @param extension
* @param os_version
*/
export async function enableExtensionUnix(
extension: string,
os_version: string,
log_prefix: string
) {
return (
`if [ ! "$(php -m | grep -i ${extension})" ] && [ -e "$ext_dir/${extension}.so" ]; then
echo "${await utils.getExtensionPrefix(
extension
)}=${extension}" >> $ini_file\n` +
(await utils.log(
'Enabled ' + extension,
os_version,
'success',
log_prefix
)) +
`;\n elif [ "$(php -m | grep -i ${extension})" ]; then \n` +
(await utils.log(
extension + ' was already enabled',
os_version,
'success',
log_prefix
)) +
`; fi\n`
);
}
/** /**
* Install and enable extensions for darwin * Install and enable extensions for darwin
* *
@ -109,63 +47,33 @@ export async function addExtensionDarwin(
await utils.asyncForEach(extensions, async function(extension: string) { await utils.asyncForEach(extensions, async function(extension: string) {
extension = extension.toLowerCase(); extension = extension.toLowerCase();
// add script to enable extension is already installed along with php // add script to enable extension is already installed along with php
script += await enableExtensionUnix(extension, 'darwin', log_prefix); let install_command: string = '';
switch (await pecl.checkPECLExtension(extension)) { switch (version + extension) {
case true: case '7.4xdebug':
let install_command: string = ''; install_command =
switch (version + extension) { 'sh ./xdebug_darwin.sh >/dev/null 2>&1 && echo "zend_extension=xdebug.so" >> $ini_file';
case '7.4xdebug': break;
install_command = case '7.4pcov':
'sh ./xdebug_darwin.sh >/dev/null 2>&1 && echo "zend_extension=xdebug.so" >> $ini_file'; install_command =
break; 'sh ./pcov.sh >/dev/null 2>&1 && echo "extension=pcov.so" >> $ini_file';
case '7.4pcov': break;
install_command = case '5.6xdebug':
'sh ./pcov.sh >/dev/null 2>&1 && echo "extension=pcov.so" >> $ini_file'; install_command = 'sudo pecl install xdebug-2.5.5 >/dev/null 2>&1';
break;
case '5.6xdebug':
install_command = 'sudo pecl install xdebug-2.5.5 >/dev/null 2>&1';
break;
default:
install_command =
'sudo pecl install ' + extension + ' >/dev/null 2>&1';
break;
}
script +=
'if [ ! "$(php -m | grep -i ' +
extension +
')" ]; then ' +
install_command +
' && ' +
(await utils.log(
'Installed and enabled ' + extension,
'darwin',
'success',
log_prefix
)) +
' || ' +
(await utils.log(
'Could not install ' + extension + ' on PHP' + version,
'darwin',
'error',
log_prefix
)) +
'; fi\n';
break; break;
case false:
default: default:
script += install_command = 'sudo pecl install ' + extension + ' >/dev/null 2>&1';
'if [ ! "$(php -m | grep -i ' +
extension +
')" ]; then \n' +
(await utils.log(
'Could not find ' + extension + ' for PHP' + version + ' on PECL',
'darwin',
'error',
log_prefix
)) +
'; fi\n';
break; break;
} }
script +=
'add_extension ' +
extension +
' "' +
install_command +
'" ' +
(await utils.getExtensionPrefix(extension)) +
' "' +
log_prefix +
'"\n';
}); });
return script; return script;
} }
@ -186,63 +94,33 @@ export async function addExtensionWindows(
await utils.asyncForEach(extensions, async function(extension: string) { await utils.asyncForEach(extensions, async function(extension: string) {
extension = extension.toLowerCase(); extension = extension.toLowerCase();
// add script to enable extension is already installed along with php // add script to enable extension is already installed along with php
script += await enableExtensionWindows(extension, log_prefix);
switch (await pecl.checkPECLExtension(extension)) { let install_command: string = '';
case true: switch (version + extension) {
let install_command: string = ''; case '7.4xdebug':
switch (version + extension) { const extension_url: string =
case '7.4xdebug': 'https://xdebug.org/files/php_xdebug-2.8.0beta2-7.4-vc15.dll';
const extension_url: string = install_command =
'https://xdebug.org/files/php_xdebug-2.8.0beta2-7.4-vc15.dll'; 'Invoke-WebRequest -Uri ' +
install_command = extension_url +
'Invoke-WebRequest -Uri ' + ' -OutFile C:\\tools\\php\\ext\\php_xdebug.dll\n';
extension_url + install_command += 'Enable-PhpExtension xdebug';
' -OutFile C:\\tools\\php\\ext\\php_xdebug.dll\n';
install_command += 'Enable-PhpExtension xdebug';
break;
case '7.2xdebug':
default:
install_command = 'Install-PhpExtension ' + extension;
break;
}
script +=
'if(!(php -m | findstr -i ' +
extension +
')) { ' +
'try { ' +
install_command +
'\n' +
(await utils.log(
'Installed and enabled ' + extension,
'win32',
'success',
log_prefix
)) +
' } catch [Exception] { ' +
(await utils.log(
'Could not install ' + extension + ' on PHP' + version,
'win32',
'error',
log_prefix
)) +
' } }\n';
break; break;
case false: case '7.2xdebug':
default: default:
script += install_command = 'Install-PhpExtension ' + extension;
'if(!(php -m | findstr -i ' +
extension +
')) { ' +
(await utils.log(
'Could not find ' + extension + ' for PHP' + version + ' on PECL',
'win32',
'error',
log_prefix
)) +
' } \n';
break; break;
} }
script +=
'Add-Extension ' +
extension +
' "' +
install_command +
'" ' +
(await utils.getExtensionPrefix(extension)) +
' "' +
log_prefix +
'"\n';
}); });
return script; return script;
} }
@ -263,7 +141,6 @@ export async function addExtensionLinux(
await utils.asyncForEach(extensions, async function(extension: string) { await utils.asyncForEach(extensions, async function(extension: string) {
extension = extension.toLowerCase(); extension = extension.toLowerCase();
// add script to enable extension is already installed along with php // add script to enable extension is already installed along with php
script += await enableExtensionUnix(extension, 'linux', log_prefix);
let install_command: string = ''; let install_command: string = '';
switch (version + extension) { switch (version + extension) {
@ -275,6 +152,14 @@ export async function addExtensionLinux(
install_command = install_command =
'./pcov.sh >/dev/null 2>&1 && echo "extension=pcov.so" >> $ini_file'; './pcov.sh >/dev/null 2>&1 && echo "extension=pcov.so" >> $ini_file';
break; break;
case '7.2phalcon3':
case '7.3phalcon3':
install_command = './phalcon.sh master ' + version + ' >/dev/null 2>&1';
break;
case '7.2phalcon4':
case '7.3phalcon4':
install_command = './phalcon.sh 4.0.x ' + version + ' >/dev/null 2>&1';
break;
default: default:
install_command = install_command =
'sudo DEBIAN_FRONTEND=noninteractive apt install -y php' + 'sudo DEBIAN_FRONTEND=noninteractive apt install -y php' +
@ -285,25 +170,15 @@ export async function addExtensionLinux(
break; break;
} }
script += script +=
'if [ ! "$(php -m | grep -i ' + 'add_extension ' +
extension + extension +
')" ]; then ' + ' "' +
install_command + install_command +
' && ' + '" ' +
(await utils.log( (await utils.getExtensionPrefix(extension)) +
'Installed and enabled ' + extension, ' "' +
'linux', log_prefix +
'success', '"\n';
log_prefix
)) +
' || ' +
(await utils.log(
'Could not find php' + version + '-' + extension + ' on APT repository',
'linux',
'error',
log_prefix
)) +
'; fi\n';
}); });
return script; return script;
} }

View File

@ -79,6 +79,4 @@ async function run() {
} }
// call the run function // call the run function
run().then(function() { run();
console.log('done');
});

View File

@ -1,17 +0,0 @@
import * as hc from 'typed-rest-client/HttpClient';
/**
* Function to check if PECL extension exists
*
* @param extension
*/
export async function checkPECLExtension(extension: string): Promise<boolean> {
const http: hc.HttpClient = new hc.HttpClient('shivammathur/php-setup', [], {
allowRetries: true,
maxRetries: 2
});
const response: hc.HttpClientResponse = await http.get(
'https://pecl.php.net/json.php?package=' + extension
);
return response.message.statusCode === 200;
}

View File

@ -1,3 +1,4 @@
version='7.4.0RC3'
brew install pkg-config autoconf bison re2c openssl@1.1 krb5 enchant libffi freetype intltool icu4c libiconv t1lib gd libzip gmp tidyp libxml2 libxslt postgresql curl >/dev/null 2>&1 brew install pkg-config autoconf bison re2c openssl@1.1 krb5 enchant libffi freetype intltool icu4c libiconv t1lib gd libzip gmp tidyp libxml2 libxslt postgresql curl >/dev/null 2>&1
brew link icu4c gettext --force >/dev/null 2>&1 brew link icu4c gettext --force >/dev/null 2>&1
@ -48,12 +49,36 @@ export PHPBREW_HOME=/opt/phpbrew
echo "[[ -e ~/.phpbrew/bashrc ]] && source ~/.phpbrew/bashrc" >> ~/.bashrc echo "[[ -e ~/.phpbrew/bashrc ]] && source ~/.phpbrew/bashrc" >> ~/.bashrc
source ~/.bash_profile >/dev/null 2>&1 source ~/.bash_profile >/dev/null 2>&1
source ~/.bashrc >/dev/null 2>&1 source ~/.bashrc >/dev/null 2>&1
phpbrew install -j 6 7.4.0RC3 +dev >/dev/null 2>&1 phpbrew install -j 6 $version +dev >/dev/null 2>&1
phpbrew switch 7.4.0RC3 phpbrew switch $version
sudo ln -sf /opt/phpbrew/php/php-7.4.0RC3/bin/* /usr/local/bin/ sudo ln -sf /opt/phpbrew/php/php-$version/bin/* /usr/local/bin/
sudo ln -sf /opt/phpbrew/php/php-7.4.0RC3/etc/php.ini /etc/php.ini sudo ln -sf /opt/phpbrew/php/php-$version/etc/php.ini /etc/php.ini
ini_file=$(php --ini | grep "Loaded Configuration" | sed -e "s|.*:s*||" | sed "s/ //g") ini_file=$(php --ini | grep "Loaded Configuration" | sed -e "s|.*:s*||" | sed "s/ //g")
ext_dir=$(php -i | grep "extension_dir => /opt" | sed -e "s|.*=> s*||") ext_dir=$(php -i | grep "extension_dir => /opt" | sed -e "s|.*=> s*||")
pecl config-set php_ini "$ini_file" pecl config-set php_ini "$ini_file"
sudo chmod 777 "$ini_file" sudo chmod 777 "$ini_file"
brew install composer brew install composer
add_extension()
{
extension=$1
install_command=$2
prefix=$3
log_prefix=$4
if ! php -m | grep -i -q "$extension" && [ -e "$ext_dir/$extension.so" ]; then
echo "$prefix=$extension" >> "$ini_file" && echo "\033[32;1m$log_prefix: Enabled $extension\033[0m";
elif php -m | grep -i -q "$extension"; then
echo "\033[33;1m$log_prefix: $extension was already enabled\033[0m";
elif ! php -m | grep -i -q "$extension"; then
exists=$(curl -sL https://pecl.php.net/json.php?package="$extension" -w "%{http_code}" -o /dev/null)
if [ "$exists" = "200" ]; then
eval "$install_command" && \
echo "\033[32;1m$log_prefix: Installed and enabled $extension\033[0m" || \
echo "\033[31;1m$log_prefix: Could not install $extension on PHP$version\033[0m";
else
if ! php -m | grep -i -q "$extension"; then
echo "\033[31;1m$log_prefix: Could not find $extension for PHP$version on PECL\033[0m";
fi
fi
fi
}

View File

@ -1,3 +1,4 @@
version=$1
export HOMEBREW_NO_INSTALL_CLEANUP=TRUE export HOMEBREW_NO_INSTALL_CLEANUP=TRUE
if [ "$1" = "5.6" ] || [ "$1" = "7.0" ]; then if [ "$1" = "5.6" ] || [ "$1" = "7.0" ]; then
brew tap exolnet/homebrew-deprecated >/dev/null 2>&1 brew tap exolnet/homebrew-deprecated >/dev/null 2>&1
@ -10,4 +11,28 @@ sudo chmod 777 "$ini_file"
mkdir -p "$(pecl config-get ext_dir)" mkdir -p "$(pecl config-get ext_dir)"
composer global require hirak/prestissimo >/dev/null 2>&1 composer global require hirak/prestissimo >/dev/null 2>&1
php -v php -v
composer -V composer -V
add_extension()
{
extension=$1
install_command=$2
prefix=$3
log_prefix=$4
if ! php -m | grep -i -q "$extension" && [ -e "$ext_dir/$extension.so" ]; then
echo "$prefix=$extension" >> "$ini_file" && echo "\033[32;1m$log_prefix: Enabled $extension\033[0m";
elif php -m | grep -i -q "$extension"; then
echo "\033[33;1m$log_prefix: $extension was already enabled\033[0m";
elif ! php -m | grep -i -q "$extension"; then
exists=$(curl -sL https://pecl.php.net/json.php?package="$extension" -w "%{http_code}" -o /dev/null)
if [ "$exists" = "200" ]; then
eval "$install_command" && \
echo "\033[32;1m$log_prefix: Installed and enabled $extension\033[0m" || \
echo "\033[31;1m$log_prefix: Could not install $extension on PHP$version\033[0m";
else
if ! php -m | grep -i -q "$extension"; then
echo "\033[31;1m$log_prefix: Could not find $extension for PHP$version on PECL\033[0m";
fi
fi
fi
}

View File

@ -1,5 +1,6 @@
version=$(php-config --version | cut -c 1-3) existing_version=$(php-config --version | cut -c 1-3)
if [ "$version" != "$1" ]; then version=$1
if [ "$existing_version" != "$1" ]; then
if [ ! -e "/usr/bin/php$1" ]; then if [ ! -e "/usr/bin/php$1" ]; then
sudo DEBIAN_FRONTEND=noninteractive add-apt-repository ppa:ondrej/php -y >/dev/null 2>&1 sudo DEBIAN_FRONTEND=noninteractive add-apt-repository ppa:ondrej/php -y >/dev/null 2>&1
sudo DEBIAN_FRONTEND=noninteractive apt update -y >/dev/null 2>&1 sudo DEBIAN_FRONTEND=noninteractive apt update -y >/dev/null 2>&1
@ -17,14 +18,11 @@ if [ "$version" != "$1" ]; then
fi fi
if [ ! -e "/usr/bin/composer" ]; then if [ ! -e "/usr/bin/composer" ]; then
EXPECTED_SIGNATURE="$(curl -s https://composer.github.io/installer.sig)" & curl -s -L https://getcomposer.org/installer > composer-setup.php
curl -s -L https://getcomposer.org/installer > composer-setup.php & if [ "$(curl -s https://composer.github.io/installer.sig)" != "$(php -r "echo hash_file('sha384', 'composer-setup.php');")" ]; then
ACTUAL_SIGNATURE="$(php -r "echo hash_file('sha384', 'composer-setup.php');")" &
if [ "$EXPECTED_SIGNATURE" != "$ACTUAL_SIGNATURE" ]; then
>&2 echo 'ERROR: Invalid installer signature' >&2 echo 'ERROR: Invalid installer signature'
else else
COMPOSER_ALLOW_SUPERUSER=1 export COMPOSER_ALLOW_SUPERUSER=1
sudo php composer-setup.php --install-dir=/usr/local/bin --filename=composer sudo php composer-setup.php --install-dir=/usr/local/bin --filename=composer
fi fi
rm composer-setup.php rm composer-setup.php
@ -37,3 +35,20 @@ sudo chmod 777 "$ini_file"
sudo mkdir -p /run/php sudo mkdir -p /run/php
php -v php -v
composer -V composer -V
add_extension()
{
extension=$1
install_command=$2
prefix=$3
log_prefix=$4
if ! php -m | grep -i -q "$extension" && [ -e "$ext_dir/$extension.so" ]; then
echo "$prefix=$extension" >> "$ini_file" && echo "\033[32;1m$log_prefix: Enabled $extension\033[0m";
elif php -m | grep -i -q "$extension"; then
echo "\033[33;1m$log_prefix: $extension was already enabled\033[0m";
elif ! php -m | grep -i -q "$extension"; then
eval "$install_command" && \
echo "\033[32;1m$log_prefix: Installed and enabled $extension\033[0m" || \
echo "\033[31;1m$log_prefix: Could not find php$version-$extension on APT repository\033[0m";
fi
}

19
src/scripts/phalcon.sh Normal file
View File

@ -0,0 +1,19 @@
ini_file=$(php --ini | grep "Loaded Configuration" | sed -e "s|.*:s*||" | sed "s/ //g")
sudo DEBIAN_FRONTEND=noninteractive apt install php"$2"-dev php-pear -y
for tool in php-config phpize; do
if [ -e "/usr/bin/$tool$2" ]; then
sudo update-alternatives --set $tool /usr/bin/"$tool$2" &
fi
done
sudo pecl config-set php_ini "$ini_file"
sudo pear config-set php_ini "$ini_file"
sudo pecl install psr
if [ "$1" = "master" ]; then
sudo DEBIAN_FRONTEND=noninteractive apt install php"$2"-phalcon -y
else
git clone --depth=1 -v https://github.com/phalcon/cphalcon.git -b "$1"
(
cd cphalcon/build && sudo ./install --phpize /usr/bin/phpize"$2" --php-config /usr/bin/php-config"$2"
echo "extension=phalcon.so" >> "$ini_file"
)
fi

View File

@ -40,4 +40,41 @@ if($version -lt '7.4') {
Write-Host "Installing Composer" -ForegroundColor Blue Write-Host "Installing Composer" -ForegroundColor Blue
Install-Composer -Scope System -Path C:\tools\php Install-Composer -Scope System -Path C:\tools\php
php -v php -v
composer -V composer -V
Function Add-Extension($extension, $install_command, $prefix, $log_prefix)
{
try {
$exist = Test-Path -Path C:\tools\php\ext\php_$extension.dll
if(!(php -m | findstr -i ${extension}) -and $exist) {
Add-Content C:\tools\php\php.ini "$prefix=php_$extension.dll"
Write-Host "$log_prefix`: Enabled $extension" -ForegroundColor green
} elseif(php -m | findstr -i $extension) {
Write-Host "$log_prefix`: $extension was already enabled" -ForegroundColor yellow
}
} catch [Exception] {
Write-Host "$log_prefix`: $extension could not be enabled" -ForegroundColor red
}
$status = 404
try {
$status = (Invoke-WebRequest -Uri "https://pecl.php.net/json.php?package=$extension" -UseBasicParsing -DisableKeepAlive).StatusCode
} catch [Exception] {
$status = 500
}
if($status -eq 200) {
if(!(php -m | findstr -i $extension)) {
try {
Invoke-Expression $install_command
Write-Host "$log_prefix`: Installed and enabled $extension" -ForegroundColor green
} catch [Exception] {
Write-Host "$log_prefix`: Could not install $extension on PHP $version" -ForegroundColor red
}
}
} else {
if(!(php -m | findstr -i $extension)) {
Write-Host "$log_prefix`: Could not find $extension for PHP$version on PECL" -ForegroundColor red
}
}
}

View File

@ -2,6 +2,12 @@ import * as fs from 'fs';
import * as path from 'path'; import * as path from 'path';
import * as core from '@actions/core'; import * as core from '@actions/core';
/**
* Function to get inputs from both with and env annotations.
*
* @param name
* @param mandatory
*/
export async function getInput( export async function getInput(
name: string, name: string,
mandatory: boolean mandatory: boolean
@ -73,11 +79,14 @@ export async function readScript(
} }
break; break;
case 'linux': case 'linux':
let files: Array<string> = ['scripts/phalcon.sh'];
await readFiles74(['scripts/phalcon.sh']);
switch (version) { switch (version) {
case '7.4': case '7.4':
await readFiles74(['scripts/xdebug.sh', 'scripts/pcov.sh']); files.concat(['scripts/xdebug.sh', 'scripts/pcov.sh']);
break; break;
} }
await readFiles74(files);
break; break;
case 'win32': case 'win32':
switch (version) { switch (version) {
@ -117,6 +126,7 @@ export async function writeScript(
/** /**
* Function to break extension csv into an array * Function to break extension csv into an array
*
* @param extension_csv * @param extension_csv
*/ */
export async function extensionArray( export async function extensionArray(
@ -167,7 +177,7 @@ export async function log(
}; };
switch (prefix) { switch (prefix) {
case '': case '':
prefix = prefix; prefix = '';
break; break;
default: default:
prefix = prefix + ': '; prefix = prefix + ': ';
@ -202,6 +212,11 @@ export async function log(
} }
} }
/**
* Function to get prefix required to load an extension.
*
* @param extension
*/
export async function getExtensionPrefix(extension: string): Promise<string> { export async function getExtensionPrefix(extension: string): Promise<string> {
let zend: Array<string> = ['xdebug', 'opcache', 'ioncube', 'eaccelerator']; let zend: Array<string> = ['xdebug', 'opcache', 'ioncube', 'eaccelerator'];
switch (zend.indexOf(extension)) { switch (zend.indexOf(extension)) {