mirror of
https://github.com/shivammathur/setup-php.git
synced 2024-11-22 20:01:06 +07:00
commit
62beed29e3
15
README.md
15
README.md
@ -4,9 +4,9 @@
|
||||
</a>
|
||||
</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://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>
|
||||
@ -64,8 +64,9 @@ with:
|
||||
|
||||
Specify `coverage: pcov` to use `PCOV`.
|
||||
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.
|
||||
`PCOV` needs `PHPUnit >= 8.0` and `PHP >= 7.1`, `PHPUnit` needs `PHP >= 7.2`. So use `PHP >= 7.2` with `PCOV`
|
||||
|
||||
|
||||
```yaml
|
||||
uses: shivammathur/setup-php@master
|
||||
@ -150,7 +151,6 @@ jobs:
|
||||
run: composer -V
|
||||
- name: Check PHP Extensions
|
||||
run: php -m
|
||||
|
||||
```
|
||||
|
||||
### 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 `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")|
|
||||
|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")|
|
||||
|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")|
|
||||
@ -180,7 +185,7 @@ Contributions are welcome! See [Contributor's Guide](.github/CONTRIBUTING.md "sh
|
||||
|
||||
## :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>.
|
||||
|
||||
## :bookmark: This action uses the following works
|
||||
|
@ -7,13 +7,7 @@ describe('Config tests', () => {
|
||||
'win32'
|
||||
);
|
||||
expect(win32).toContain(
|
||||
'Add-Content C:\\tools\\php\\php.ini "post_max_size=256M"'
|
||||
);
|
||||
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"'
|
||||
'Add-Content C:\\tools\\php\\php.ini "post_max_size=256M\nshort_open_tag=On\ndate.timezone=Asia/Kolkata"'
|
||||
);
|
||||
|
||||
win32 = await config.addINIValues(
|
||||
@ -28,9 +22,9 @@ describe('Config tests', () => {
|
||||
'post_max_size=256M, short_open_tag=On, date.timezone=Asia/Kolkata',
|
||||
'linux'
|
||||
);
|
||||
expect(linux).toContain('echo "post_max_size=256M" >> $ini_file');
|
||||
expect(linux).toContain('echo "short_open_tag=On" >> $ini_file');
|
||||
expect(linux).toContain('echo "date.timezone=Asia/Kolkata" >> $ini_file');
|
||||
expect(linux).toContain(
|
||||
'echo "post_max_size=256M\nshort_open_tag=On\ndate.timezone=Asia/Kolkata" >> $ini_file'
|
||||
);
|
||||
|
||||
linux = await config.addINIValues(
|
||||
'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',
|
||||
'darwin'
|
||||
);
|
||||
expect(darwin).toContain('echo "post_max_size=256M" >> $ini_file');
|
||||
expect(darwin).toContain('echo "short_open_tag=On" >> $ini_file');
|
||||
expect(darwin).toContain('echo "date.timezone=Asia/Kolkata" >> $ini_file');
|
||||
expect(darwin).toContain(
|
||||
'echo "post_max_size=256M\nshort_open_tag=On\ndate.timezone=Asia/Kolkata" >> $ini_file'
|
||||
);
|
||||
|
||||
darwin = await config.addINIValues(
|
||||
'post_max_size=256M, short_open_tag=On, date.timezone=Asia/Kolkata',
|
||||
|
@ -27,7 +27,7 @@ describe('Config tests', () => {
|
||||
let linux: string = await coverage.addCoverage('pcov', '7.4', 'linux');
|
||||
expect(linux).toContain('addExtension pcov');
|
||||
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 () => {
|
||||
@ -58,8 +58,8 @@ describe('Config tests', () => {
|
||||
|
||||
it('checking disableCoverage on linux', async () => {
|
||||
let linux: string = await coverage.addCoverage('none', '7.4', 'linux');
|
||||
expect(linux).toContain('sudo phpdismod xdebug');
|
||||
expect(linux).toContain('sudo phpdismod pcov');
|
||||
expect(linux).toContain('sudo phpdismod -v 7.4 xdebug');
|
||||
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 "/pcov/d" $ini_file');
|
||||
});
|
||||
|
@ -1,12 +1,5 @@
|
||||
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', () => {
|
||||
it('checking addExtensionOnWindows', async () => {
|
||||
let win32: string = await extensions.addExtension(
|
||||
@ -27,7 +20,9 @@ describe('Extension tests', () => {
|
||||
expect(win32).toContain('Install-PhpExtension pcov');
|
||||
|
||||
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');
|
||||
expect(win32).toContain('Platform fedora is not supported');
|
||||
@ -50,6 +45,14 @@ describe('Extension tests', () => {
|
||||
expect(linux).toContain('./xdebug.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');
|
||||
expect(linux).toContain('Platform fedora is not supported');
|
||||
});
|
||||
@ -82,9 +85,7 @@ describe('Extension tests', () => {
|
||||
expect(darwin).toContain('sudo pecl install xdebug');
|
||||
|
||||
darwin = await extensions.addExtension('does_not_exist', '7.2', 'darwin');
|
||||
expect(darwin).toContain(
|
||||
'Could not find does_not_exist for PHP7.2 on PECL'
|
||||
);
|
||||
expect(darwin).toContain('add_extension does_not_exist');
|
||||
|
||||
darwin = await extensions.addExtension('xdebug', '7.2', 'fedora');
|
||||
expect(darwin).toContain('Platform fedora is not supported');
|
||||
|
@ -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);
|
||||
});
|
||||
});
|
10
action.yml
10
action.yml
@ -1,21 +1,21 @@
|
||||
name: 'Setup PHP Action'
|
||||
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:
|
||||
icon: 'activity'
|
||||
color: 'purple'
|
||||
inputs:
|
||||
php-version:
|
||||
description: 'PHP version to be installed.'
|
||||
description: 'PHP version you want to install.'
|
||||
required: true
|
||||
extension-csv:
|
||||
description: '(Optional) Comma seperated list of PHP extensions to be installed.'
|
||||
description: '(Optional) PHP extensions you want to install.'
|
||||
required: false
|
||||
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
|
||||
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
|
||||
runs:
|
||||
using: 'node12'
|
||||
|
@ -6,6 +6,8 @@ jobs:
|
||||
name: Laravel (PHP ${{ matrix.php-versions }})
|
||||
runs-on: ubuntu-latest
|
||||
env:
|
||||
DB_DATABASE: laravel
|
||||
DB_USERNAME: root
|
||||
DB_PASSWORD: password
|
||||
BROADCAST_DRIVER: log
|
||||
CACHE_DRIVER: redis
|
||||
|
60
examples/lumen-mysql.yml
Normal file
60
examples/lumen-mysql.yml
Normal 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'] }}
|
62
examples/lumen-postgres.yml
Normal file
62
examples/lumen-postgres.yml
Normal 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
29
examples/lumen.yml
Normal 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
|
60
examples/phalcon-mysql.yml
Normal file
60
examples/phalcon-mysql.yml
Normal 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'] }}
|
61
examples/phalcon-postgres.yml
Normal file
61
examples/phalcon-postgres.yml
Normal 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'] }}
|
@ -44,15 +44,8 @@ exports.addINIValues = addINIValues;
|
||||
*/
|
||||
function addINIValuesUnix(ini_values_csv) {
|
||||
return __awaiter(this, void 0, void 0, function* () {
|
||||
let script = '\n';
|
||||
let ini_values = yield utils.INIArray(ini_values_csv);
|
||||
yield utils.asyncForEach(ini_values, function (ini_value) {
|
||||
return __awaiter(this, void 0, void 0, function* () {
|
||||
// add script to set ini value
|
||||
script += 'echo "' + ini_value + '" >> $ini_file\n';
|
||||
});
|
||||
});
|
||||
return script;
|
||||
return '\necho "' + ini_values.join('\n') + '" >> $ini_file\n';
|
||||
});
|
||||
}
|
||||
exports.addINIValuesUnix = addINIValuesUnix;
|
||||
@ -63,15 +56,8 @@ exports.addINIValuesUnix = addINIValuesUnix;
|
||||
*/
|
||||
function addINIValuesWindows(ini_values_csv) {
|
||||
return __awaiter(this, void 0, void 0, function* () {
|
||||
let script = '\n';
|
||||
let ini_values = yield utils.INIArray(ini_values_csv);
|
||||
yield utils.asyncForEach(ini_values, function (ini_value) {
|
||||
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;
|
||||
return ('Add-Content C:\\tools\\php\\php.ini "' + ini_values.join('\n') + '"\n');
|
||||
});
|
||||
}
|
||||
exports.addINIValuesWindows = addINIValuesWindows;
|
||||
|
@ -19,6 +19,13 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
||||
const utils = __importStar(require("./utils"));
|
||||
const extensions = __importStar(require("./extensions"));
|
||||
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) {
|
||||
return __awaiter(this, void 0, void 0, function* () {
|
||||
coverage_driver.toLowerCase();
|
||||
@ -35,6 +42,12 @@ function addCoverage(coverage_driver, version, os_version) {
|
||||
});
|
||||
}
|
||||
exports.addCoverage = addCoverage;
|
||||
/**
|
||||
* Function to setup Xdebug
|
||||
*
|
||||
* @param version
|
||||
* @param os_version
|
||||
*/
|
||||
function addCoverageXdebug(version, os_version) {
|
||||
return __awaiter(this, void 0, void 0, function* () {
|
||||
let script = '\n';
|
||||
@ -44,6 +57,12 @@ function addCoverageXdebug(version, os_version) {
|
||||
});
|
||||
}
|
||||
exports.addCoverageXdebug = addCoverageXdebug;
|
||||
/**
|
||||
* Function to setup PCOV
|
||||
*
|
||||
* @param version
|
||||
* @param os_version
|
||||
*/
|
||||
function addCoveragePCOV(version, os_version) {
|
||||
return __awaiter(this, void 0, void 0, function* () {
|
||||
let script = '\n';
|
||||
@ -57,7 +76,9 @@ function addCoveragePCOV(version, os_version) {
|
||||
script +=
|
||||
'if [ -e /etc/php/' +
|
||||
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';
|
||||
break;
|
||||
case 'darwin':
|
||||
@ -81,6 +102,12 @@ function addCoveragePCOV(version, os_version) {
|
||||
});
|
||||
}
|
||||
exports.addCoveragePCOV = addCoveragePCOV;
|
||||
/**
|
||||
* Function to disable Xdebug and PCOV
|
||||
*
|
||||
* @param version
|
||||
* @param os_version
|
||||
*/
|
||||
function disableCoverage(version, os_version) {
|
||||
return __awaiter(this, void 0, void 0, function* () {
|
||||
let script = '\n';
|
||||
@ -89,11 +116,15 @@ function disableCoverage(version, os_version) {
|
||||
script +=
|
||||
'if [ -e /etc/php/' +
|
||||
version +
|
||||
'/mods-available/xdebug.ini ]; then sudo phpdismod xdebug; fi\n';
|
||||
'/mods-available/xdebug.ini ]; then sudo phpdismod -v ' +
|
||||
version +
|
||||
' xdebug; fi\n';
|
||||
script +=
|
||||
'if [ -e /etc/php/' +
|
||||
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 "/pcov/d" $ini_file\n';
|
||||
break;
|
||||
|
@ -17,7 +17,14 @@ var __importStar = (this && this.__importStar) || function (mod) {
|
||||
};
|
||||
Object.defineProperty(exports, "__esModule", { value: true });
|
||||
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') {
|
||||
return __awaiter(this, void 0, void 0, function* () {
|
||||
switch (os_version) {
|
||||
@ -33,44 +40,6 @@ function addExtension(extension_csv, version, os_version, log_prefix = 'Add Exte
|
||||
});
|
||||
}
|
||||
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
|
||||
*
|
||||
@ -85,48 +54,33 @@ function addExtensionDarwin(extension_csv, version, log_prefix) {
|
||||
return __awaiter(this, void 0, void 0, function* () {
|
||||
extension = extension.toLowerCase();
|
||||
// add script to enable extension is already installed along with php
|
||||
script += yield enableExtensionUnix(extension, 'darwin', log_prefix);
|
||||
switch (yield pecl.checkPECLExtension(extension)) {
|
||||
case true:
|
||||
let install_command = '';
|
||||
switch (version + extension) {
|
||||
case '7.4xdebug':
|
||||
install_command =
|
||||
'sh ./xdebug_darwin.sh >/dev/null 2>&1 && echo "zend_extension=xdebug.so" >> $ini_file';
|
||||
break;
|
||||
case '7.4pcov':
|
||||
install_command =
|
||||
'sh ./pcov.sh >/dev/null 2>&1 && echo "extension=pcov.so" >> $ini_file';
|
||||
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';
|
||||
let install_command = '';
|
||||
switch (version + extension) {
|
||||
case '7.4xdebug':
|
||||
install_command =
|
||||
'sh ./xdebug_darwin.sh >/dev/null 2>&1 && echo "zend_extension=xdebug.so" >> $ini_file';
|
||||
break;
|
||||
case '7.4pcov':
|
||||
install_command =
|
||||
'sh ./pcov.sh >/dev/null 2>&1 && echo "extension=pcov.so" >> $ini_file';
|
||||
break;
|
||||
case '5.6xdebug':
|
||||
install_command = 'sudo pecl install xdebug-2.5.5 >/dev/null 2>&1';
|
||||
break;
|
||||
case false:
|
||||
default:
|
||||
script +=
|
||||
'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';
|
||||
install_command = 'sudo pecl install ' + extension + ' >/dev/null 2>&1';
|
||||
break;
|
||||
}
|
||||
script +=
|
||||
'add_extension ' +
|
||||
extension +
|
||||
' "' +
|
||||
install_command +
|
||||
'" ' +
|
||||
(yield utils.getExtensionPrefix(extension)) +
|
||||
' "' +
|
||||
log_prefix +
|
||||
'"\n';
|
||||
});
|
||||
});
|
||||
return script;
|
||||
@ -147,46 +101,31 @@ function addExtensionWindows(extension_csv, version, log_prefix) {
|
||||
return __awaiter(this, void 0, void 0, function* () {
|
||||
extension = extension.toLowerCase();
|
||||
// add script to enable extension is already installed along with php
|
||||
script += yield enableExtensionWindows(extension, log_prefix);
|
||||
switch (yield pecl.checkPECLExtension(extension)) {
|
||||
case true:
|
||||
let install_command = '';
|
||||
switch (version + extension) {
|
||||
case '7.4xdebug':
|
||||
const extension_url = 'https://xdebug.org/files/php_xdebug-2.8.0beta2-7.4-vc15.dll';
|
||||
install_command =
|
||||
'Invoke-WebRequest -Uri ' +
|
||||
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';
|
||||
let install_command = '';
|
||||
switch (version + extension) {
|
||||
case '7.4xdebug':
|
||||
const extension_url = 'https://xdebug.org/files/php_xdebug-2.8.0beta2-7.4-vc15.dll';
|
||||
install_command =
|
||||
'Invoke-WebRequest -Uri ' +
|
||||
extension_url +
|
||||
' -OutFile C:\\tools\\php\\ext\\php_xdebug.dll\n';
|
||||
install_command += 'Enable-PhpExtension xdebug';
|
||||
break;
|
||||
case false:
|
||||
case '7.2xdebug':
|
||||
default:
|
||||
script +=
|
||||
'if(!(php -m | findstr -i ' +
|
||||
extension +
|
||||
')) { ' +
|
||||
(yield utils.log('Could not find ' + extension + ' for PHP' + version + ' on PECL', 'win32', 'error', log_prefix)) +
|
||||
' } \n';
|
||||
install_command = 'Install-PhpExtension ' + extension;
|
||||
break;
|
||||
}
|
||||
script +=
|
||||
'Add-Extension ' +
|
||||
extension +
|
||||
' "' +
|
||||
install_command +
|
||||
'" ' +
|
||||
(yield utils.getExtensionPrefix(extension)) +
|
||||
' "' +
|
||||
log_prefix +
|
||||
'"\n';
|
||||
});
|
||||
});
|
||||
return script;
|
||||
@ -207,7 +146,6 @@ function addExtensionLinux(extension_csv, version, log_prefix) {
|
||||
return __awaiter(this, void 0, void 0, function* () {
|
||||
extension = extension.toLowerCase();
|
||||
// add script to enable extension is already installed along with php
|
||||
script += yield enableExtensionUnix(extension, 'linux', log_prefix);
|
||||
let install_command = '';
|
||||
switch (version + extension) {
|
||||
case '7.4xdebug':
|
||||
@ -218,6 +156,14 @@ function addExtensionLinux(extension_csv, version, log_prefix) {
|
||||
install_command =
|
||||
'./pcov.sh >/dev/null 2>&1 && echo "extension=pcov.so" >> $ini_file';
|
||||
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:
|
||||
install_command =
|
||||
'sudo DEBIAN_FRONTEND=noninteractive apt install -y php' +
|
||||
@ -228,15 +174,15 @@ function addExtensionLinux(extension_csv, version, log_prefix) {
|
||||
break;
|
||||
}
|
||||
script +=
|
||||
'if [ ! "$(php -m | grep -i ' +
|
||||
'add_extension ' +
|
||||
extension +
|
||||
')" ]; then ' +
|
||||
' "' +
|
||||
install_command +
|
||||
' && ' +
|
||||
(yield utils.log('Installed and enabled ' + extension, 'linux', 'success', log_prefix)) +
|
||||
' || ' +
|
||||
(yield utils.log('Could not find php' + version + '-' + extension + ' on APT repository', 'linux', 'error', log_prefix)) +
|
||||
'; fi\n';
|
||||
'" ' +
|
||||
(yield utils.getExtensionPrefix(extension)) +
|
||||
' "' +
|
||||
log_prefix +
|
||||
'"\n';
|
||||
});
|
||||
});
|
||||
return script;
|
||||
|
@ -66,6 +66,4 @@ function run() {
|
||||
});
|
||||
}
|
||||
// call the run function
|
||||
run().then(function () {
|
||||
console.log('done');
|
||||
});
|
||||
run();
|
||||
|
19
lib/utils.js
19
lib/utils.js
@ -19,6 +19,12 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
||||
const fs = __importStar(require("fs"));
|
||||
const path = __importStar(require("path"));
|
||||
const core = __importStar(require("@actions/core"));
|
||||
/**
|
||||
* Function to get inputs from both with and env annotations.
|
||||
*
|
||||
* @param name
|
||||
* @param mandatory
|
||||
*/
|
||||
function getInput(name, mandatory) {
|
||||
return __awaiter(this, void 0, void 0, function* () {
|
||||
let input = process.env[name];
|
||||
@ -82,11 +88,14 @@ function readScript(filename, version, os_version) {
|
||||
}
|
||||
break;
|
||||
case 'linux':
|
||||
let files = ['scripts/phalcon.sh'];
|
||||
yield readFiles74(['scripts/phalcon.sh']);
|
||||
switch (version) {
|
||||
case '7.4':
|
||||
yield readFiles74(['scripts/xdebug.sh', 'scripts/pcov.sh']);
|
||||
files.concat(['scripts/xdebug.sh', 'scripts/pcov.sh']);
|
||||
break;
|
||||
}
|
||||
yield readFiles74(files);
|
||||
break;
|
||||
case 'win32':
|
||||
switch (version) {
|
||||
@ -117,6 +126,7 @@ function writeScript(filename, version, script) {
|
||||
exports.writeScript = writeScript;
|
||||
/**
|
||||
* Function to break extension csv into an array
|
||||
*
|
||||
* @param extension_csv
|
||||
*/
|
||||
function extensionArray(extension_csv) {
|
||||
@ -165,7 +175,7 @@ function log(message, os_version, log_type, prefix = '') {
|
||||
};
|
||||
switch (prefix) {
|
||||
case '':
|
||||
prefix = prefix;
|
||||
prefix = '';
|
||||
break;
|
||||
default:
|
||||
prefix = prefix + ': ';
|
||||
@ -196,6 +206,11 @@ function log(message, os_version, log_type, prefix = '') {
|
||||
});
|
||||
}
|
||||
exports.log = log;
|
||||
/**
|
||||
* Function to get prefix required to load an extension.
|
||||
*
|
||||
* @param extension
|
||||
*/
|
||||
function getExtensionPrefix(extension) {
|
||||
return __awaiter(this, void 0, void 0, function* () {
|
||||
let zend = ['xdebug', 'opcache', 'ioncube', 'eaccelerator'];
|
||||
|
40
node_modules/@actions/core/README.md
generated
vendored
40
node_modules/@actions/core/README.md
generated
vendored
@ -4,45 +4,53 @@
|
||||
|
||||
## Usage
|
||||
|
||||
#### Inputs/Outputs
|
||||
|
||||
You can use this library to get inputs or set outputs:
|
||||
### Import the package
|
||||
|
||||
```js
|
||||
// javascript
|
||||
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');
|
||||
```
|
||||
|
||||
#### 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
|
||||
const core = require('@actions/core');
|
||||
|
||||
// Do stuff
|
||||
|
||||
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
|
||||
|
||||
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
|
||||
const core = require('@actions/core');
|
||||
|
||||
core.addPath('pathToTool');
|
||||
core.addPath('/path/to/mytool');
|
||||
```
|
||||
|
||||
#### 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
|
||||
const core = require('@actions/core');
|
||||
@ -55,6 +63,8 @@ catch (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
|
||||
|
9
node_modules/@actions/core/lib/core.d.ts
generated
vendored
9
node_modules/@actions/core/lib/core.d.ts
generated
vendored
@ -19,17 +19,16 @@ export declare enum ExitCode {
|
||||
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 val the value of the variable
|
||||
*/
|
||||
export declare function exportVariable(name: string, val: string): void;
|
||||
/**
|
||||
* exports the variable and registers a secret which will get masked from logs
|
||||
* @param name the name of the variable to set
|
||||
* @param val value of the secret
|
||||
* Registers a secret which will get masked from logs
|
||||
* @param secret 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)
|
||||
* @param inputPath
|
||||
|
17
node_modules/@actions/core/lib/core.js
generated
vendored
17
node_modules/@actions/core/lib/core.js
generated
vendored
@ -30,7 +30,7 @@ var ExitCode;
|
||||
// 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 val the value of the variable
|
||||
*/
|
||||
@ -40,18 +40,13 @@ function exportVariable(name, val) {
|
||||
}
|
||||
exports.exportVariable = exportVariable;
|
||||
/**
|
||||
* exports the variable and registers a secret which will get masked from logs
|
||||
* @param name the name of the variable to set
|
||||
* @param val value of the secret
|
||||
* Registers a secret which will get masked from logs
|
||||
* @param secret value of the secret
|
||||
*/
|
||||
function exportSecret(name, val) {
|
||||
exportVariable(name, val);
|
||||
// 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.');
|
||||
function setSecret(secret) {
|
||||
command_1.issueCommand('add-mask', {}, secret);
|
||||
}
|
||||
exports.exportSecret = exportSecret;
|
||||
exports.setSecret = setSecret;
|
||||
/**
|
||||
* Prepends inputPath to the PATH (for this action and future actions)
|
||||
* @param inputPath
|
||||
|
2
node_modules/@actions/core/lib/core.js.map
generated
vendored
2
node_modules/@actions/core/lib/core.js.map
generated
vendored
@ -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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"}
|
23
node_modules/@actions/core/package.json
generated
vendored
23
node_modules/@actions/core/package.json
generated
vendored
@ -1,33 +1,33 @@
|
||||
{
|
||||
"_args": [
|
||||
[
|
||||
"@actions/core@1.1.1",
|
||||
"@actions/core@1.1.3",
|
||||
"E:\\python\\setup-php"
|
||||
]
|
||||
],
|
||||
"_from": "@actions/core@1.1.1",
|
||||
"_id": "@actions/core@1.1.1",
|
||||
"_from": "@actions/core@1.1.3",
|
||||
"_id": "@actions/core@1.1.3",
|
||||
"_inBundle": false,
|
||||
"_integrity": "sha512-O5G6EmlzTVsng7VSpNtszIoQq6kOgMGNTFB/hmwKNNA4V71JyxImCIrL27vVHCt2Cb3ImkaCr6o27C2MV9Ylwg==",
|
||||
"_integrity": "sha512-2BIib53Jh4Cfm+1XNuZYYGTeRo8yiWEAUMoliMh1qQGMaqTF4VUlhhcsBylTu4qWmUx45DrY0y0XskimAHSqhw==",
|
||||
"_location": "/@actions/core",
|
||||
"_phantomChildren": {},
|
||||
"_requested": {
|
||||
"type": "version",
|
||||
"registry": true,
|
||||
"raw": "@actions/core@1.1.1",
|
||||
"raw": "@actions/core@1.1.3",
|
||||
"name": "@actions/core",
|
||||
"escapedName": "@actions%2fcore",
|
||||
"scope": "@actions",
|
||||
"rawSpec": "1.1.1",
|
||||
"rawSpec": "1.1.3",
|
||||
"saveSpec": null,
|
||||
"fetchSpec": "1.1.1"
|
||||
"fetchSpec": "1.1.3"
|
||||
},
|
||||
"_requiredBy": [
|
||||
"/",
|
||||
"/@actions/tool-cache"
|
||||
],
|
||||
"_resolved": "https://registry.npmjs.org/@actions/core/-/core-1.1.1.tgz",
|
||||
"_spec": "1.1.1",
|
||||
"_resolved": "https://registry.npmjs.org/@actions/core/-/core-1.1.3.tgz",
|
||||
"_spec": "1.1.3",
|
||||
"_where": "E:\\python\\setup-php",
|
||||
"bugs": {
|
||||
"url": "https://github.com/actions/toolkit/issues"
|
||||
@ -57,11 +57,12 @@
|
||||
},
|
||||
"repository": {
|
||||
"type": "git",
|
||||
"url": "git+https://github.com/actions/toolkit.git"
|
||||
"url": "git+https://github.com/actions/toolkit.git",
|
||||
"directory": "packages/core"
|
||||
},
|
||||
"scripts": {
|
||||
"test": "echo \"Error: run tests from root\" && exit 1",
|
||||
"tsc": "tsc"
|
||||
},
|
||||
"version": "1.1.1"
|
||||
"version": "1.1.3"
|
||||
}
|
||||
|
1
node_modules/typed-rest-client/package.json
generated
vendored
1
node_modules/typed-rest-client/package.json
generated
vendored
@ -22,7 +22,6 @@
|
||||
"fetchSpec": "1.5.0"
|
||||
},
|
||||
"_requiredBy": [
|
||||
"/",
|
||||
"/@actions/tool-cache"
|
||||
],
|
||||
"_resolved": "https://registry.npmjs.org/typed-rest-client/-/typed-rest-client-1.5.0.tgz",
|
||||
|
114
package-lock.json
generated
114
package-lock.json
generated
@ -1,13 +1,13 @@
|
||||
{
|
||||
"name": "setup-php",
|
||||
"version": "1.4.1",
|
||||
"version": "1.4.2",
|
||||
"lockfileVersion": 1,
|
||||
"requires": true,
|
||||
"dependencies": {
|
||||
"@actions/core": {
|
||||
"version": "1.1.1",
|
||||
"resolved": "https://registry.npmjs.org/@actions/core/-/core-1.1.1.tgz",
|
||||
"integrity": "sha512-O5G6EmlzTVsng7VSpNtszIoQq6kOgMGNTFB/hmwKNNA4V71JyxImCIrL27vVHCt2Cb3ImkaCr6o27C2MV9Ylwg=="
|
||||
"version": "1.1.3",
|
||||
"resolved": "https://registry.npmjs.org/@actions/core/-/core-1.1.3.tgz",
|
||||
"integrity": "sha512-2BIib53Jh4Cfm+1XNuZYYGTeRo8yiWEAUMoliMh1qQGMaqTF4VUlhhcsBylTu4qWmUx45DrY0y0XskimAHSqhw=="
|
||||
},
|
||||
"@actions/exec": {
|
||||
"version": "1.0.1",
|
||||
@ -42,18 +42,18 @@
|
||||
}
|
||||
},
|
||||
"@babel/core": {
|
||||
"version": "7.6.2",
|
||||
"resolved": "https://registry.npmjs.org/@babel/core/-/core-7.6.2.tgz",
|
||||
"integrity": "sha512-l8zto/fuoZIbncm+01p8zPSDZu/VuuJhAfA7d/AbzM09WR7iVhavvfNDYCNpo1VvLk6E6xgAoP9P+/EMJHuRkQ==",
|
||||
"version": "7.6.4",
|
||||
"resolved": "https://registry.npmjs.org/@babel/core/-/core-7.6.4.tgz",
|
||||
"integrity": "sha512-Rm0HGw101GY8FTzpWSyRbki/jzq+/PkNQJ+nSulrdY6gFGOsNseCqD6KHRYe2E+EdzuBdr2pxCp6s4Uk6eJ+XQ==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"@babel/code-frame": "^7.5.5",
|
||||
"@babel/generator": "^7.6.2",
|
||||
"@babel/generator": "^7.6.4",
|
||||
"@babel/helpers": "^7.6.2",
|
||||
"@babel/parser": "^7.6.2",
|
||||
"@babel/parser": "^7.6.4",
|
||||
"@babel/template": "^7.6.0",
|
||||
"@babel/traverse": "^7.6.2",
|
||||
"@babel/types": "^7.6.0",
|
||||
"@babel/traverse": "^7.6.3",
|
||||
"@babel/types": "^7.6.3",
|
||||
"convert-source-map": "^1.1.0",
|
||||
"debug": "^4.1.0",
|
||||
"json5": "^2.1.0",
|
||||
@ -93,12 +93,12 @@
|
||||
}
|
||||
},
|
||||
"@babel/generator": {
|
||||
"version": "7.6.2",
|
||||
"resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.6.2.tgz",
|
||||
"integrity": "sha512-j8iHaIW4gGPnViaIHI7e9t/Hl8qLjERI6DcV9kEpAIDJsAOrcnXqRS7t+QbhL76pwbtqP+QCQLL0z1CyVmtjjQ==",
|
||||
"version": "7.6.4",
|
||||
"resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.6.4.tgz",
|
||||
"integrity": "sha512-jsBuXkFoZxk0yWLyGI9llT9oiQ2FeTASmRFE32U+aaDTfoE92t78eroO7PTpU/OrYq38hlcDM6vbfLDaOLy+7w==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"@babel/types": "^7.6.0",
|
||||
"@babel/types": "^7.6.3",
|
||||
"jsesc": "^2.5.1",
|
||||
"lodash": "^4.17.13",
|
||||
"source-map": "^0.5.0"
|
||||
@ -170,9 +170,9 @@
|
||||
}
|
||||
},
|
||||
"@babel/parser": {
|
||||
"version": "7.6.2",
|
||||
"resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.6.2.tgz",
|
||||
"integrity": "sha512-mdFqWrSPCmikBoaBYMuBulzTIKuXVPtEISFbRRVNwMWpCms/hmE2kRq0bblUHaNRKrjRlmVbx1sDHmjmRgD2Xg==",
|
||||
"version": "7.6.4",
|
||||
"resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.6.4.tgz",
|
||||
"integrity": "sha512-D8RHPW5qd0Vbyo3qb+YjO5nvUVRTXFLQ/FsDxJU2Nqz4uB5EnUN0ZQSEYpvTIbRuttig1XbHWU5oMeQwQSAA+A==",
|
||||
"dev": true
|
||||
},
|
||||
"@babel/plugin-syntax-object-rest-spread": {
|
||||
@ -196,17 +196,17 @@
|
||||
}
|
||||
},
|
||||
"@babel/traverse": {
|
||||
"version": "7.6.2",
|
||||
"resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.6.2.tgz",
|
||||
"integrity": "sha512-8fRE76xNwNttVEF2TwxJDGBLWthUkHWSldmfuBzVRmEDWOtu4XdINTgN7TDWzuLg4bbeIMLvfMFD9we5YcWkRQ==",
|
||||
"version": "7.6.3",
|
||||
"resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.6.3.tgz",
|
||||
"integrity": "sha512-unn7P4LGsijIxaAJo/wpoU11zN+2IaClkQAxcJWBNCMS6cmVh802IyLHNkAjQ0iYnRS3nnxk5O3fuXW28IMxTw==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"@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-split-export-declaration": "^7.4.4",
|
||||
"@babel/parser": "^7.6.2",
|
||||
"@babel/types": "^7.6.0",
|
||||
"@babel/parser": "^7.6.3",
|
||||
"@babel/types": "^7.6.3",
|
||||
"debug": "^4.1.0",
|
||||
"globals": "^11.1.0",
|
||||
"lodash": "^4.17.13"
|
||||
@ -230,9 +230,9 @@
|
||||
}
|
||||
},
|
||||
"@babel/types": {
|
||||
"version": "7.6.1",
|
||||
"resolved": "https://registry.npmjs.org/@babel/types/-/types-7.6.1.tgz",
|
||||
"integrity": "sha512-X7gdiuaCmA0uRjCmRtYJNAVCc/q+5xSgsfKJHqMN4iNLILX39677fJE1O40arPMh0TTtS9ItH67yre6c7k6t0g==",
|
||||
"version": "7.6.3",
|
||||
"resolved": "https://registry.npmjs.org/@babel/types/-/types-7.6.3.tgz",
|
||||
"integrity": "sha512-CqbcpTxMcpuQTMhjI37ZHVgjBkysg5icREQIEZ0eG1yCNwg3oy+5AaLiOKmjsCj6nqOsa6Hf0ObjRVwokb7srA==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"esutils": "^2.0.2",
|
||||
@ -540,9 +540,9 @@
|
||||
"dev": true
|
||||
},
|
||||
"@types/node": {
|
||||
"version": "12.7.7",
|
||||
"resolved": "https://registry.npmjs.org/@types/node/-/node-12.7.7.tgz",
|
||||
"integrity": "sha512-4jUncNe2tj1nmrO/34PsRpZqYVnRV1svbU78cKhuQKkMntKB/AmdLyGgswcZKjFHEHGpiY8pVD8CuVI55nP54w==",
|
||||
"version": "12.7.12",
|
||||
"resolved": "https://registry.npmjs.org/@types/node/-/node-12.7.12.tgz",
|
||||
"integrity": "sha512-KPYGmfD0/b1eXurQ59fXD1GBzhSQfz6/lKBxkaHX9dKTzjXbK68Zt7yGUxUsCS1jeTy/8aL+d9JEr+S54mpkWQ==",
|
||||
"dev": true
|
||||
},
|
||||
"@types/normalize-package-data": {
|
||||
@ -558,9 +558,9 @@
|
||||
"dev": true
|
||||
},
|
||||
"@types/yargs": {
|
||||
"version": "13.0.2",
|
||||
"resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-13.0.2.tgz",
|
||||
"integrity": "sha512-lwwgizwk/bIIU+3ELORkyuOgDjCh7zuWDFqRtPPhhVgq9N1F7CvLNKg1TX4f2duwtKQ0p044Au9r1PLIXHrIzQ==",
|
||||
"version": "13.0.3",
|
||||
"resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-13.0.3.tgz",
|
||||
"integrity": "sha512-K8/LfZq2duW33XW/tFwEAfnZlqIfVsoyRB3kfXdPXYhl0nfM8mmh7GS0jg7WrX2Dgq/0Ha/pR1PaR+BvmWwjiQ==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"@types/yargs-parser": "*"
|
||||
@ -1370,9 +1370,9 @@
|
||||
}
|
||||
},
|
||||
"es-abstract": {
|
||||
"version": "1.14.2",
|
||||
"resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.14.2.tgz",
|
||||
"integrity": "sha512-DgoQmbpFNOofkjJtKwr87Ma5EW4Dc8fWhD0R+ndq7Oc456ivUfGOOP6oAZTTKl5/CcNMP+EN+e3/iUzgE0veZg==",
|
||||
"version": "1.15.0",
|
||||
"resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.15.0.tgz",
|
||||
"integrity": "sha512-bhkEqWJ2t2lMeaJDuk7okMkJWI/yqgH/EoGwpcvv0XW9RWQsRspI4wt6xuyuvMvvQE3gg/D9HXppgk21w78GyQ==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"es-to-primitive": "^1.2.0",
|
||||
@ -1383,8 +1383,8 @@
|
||||
"is-regex": "^1.0.4",
|
||||
"object-inspect": "^1.6.0",
|
||||
"object-keys": "^1.1.1",
|
||||
"string.prototype.trimleft": "^2.0.0",
|
||||
"string.prototype.trimright": "^2.0.0"
|
||||
"string.prototype.trimleft": "^2.1.0",
|
||||
"string.prototype.trimright": "^2.1.0"
|
||||
}
|
||||
},
|
||||
"es-to-primitive": {
|
||||
@ -2342,9 +2342,9 @@
|
||||
"dev": true
|
||||
},
|
||||
"handlebars": {
|
||||
"version": "4.3.1",
|
||||
"resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.3.1.tgz",
|
||||
"integrity": "sha512-c0HoNHzDiHpBt4Kqe99N8tdLPKAnGCQ73gYMPWtAYM4PwGnf7xl8PBUHJqh9ijlzt2uQKaSRxbXRt+rZ7M2/kA==",
|
||||
"version": "4.4.3",
|
||||
"resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.4.3.tgz",
|
||||
"integrity": "sha512-B0W4A2U1ww3q7VVthTKfh+epHx+q4mCt6iK+zEAzbMBpWQAwxCeKxEGpj/1oQTpzPXDNSOG7hmG14TsISH50yw==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"neo-async": "^2.6.0",
|
||||
@ -2423,9 +2423,9 @@
|
||||
}
|
||||
},
|
||||
"hosted-git-info": {
|
||||
"version": "2.8.4",
|
||||
"resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.4.tgz",
|
||||
"integrity": "sha512-pzXIvANXEFrc5oFFXRMkbLPQ2rXRoDERwDLyrcUxGhaZhgP54BBSl9Oheh7Vv0T090cszWBxPjkQQ5Sq1PbBRQ==",
|
||||
"version": "2.8.5",
|
||||
"resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.5.tgz",
|
||||
"integrity": "sha512-kssjab8CvdXfcXMXVcvsXum4Hwdq9XGtRD3TteMEvEbq0LXyiNQr6AprqKqfeaDXze7SxWvRxdpwE6ku7ikLkg==",
|
||||
"dev": true
|
||||
},
|
||||
"html-encoding-sniffer": {
|
||||
@ -3389,9 +3389,9 @@
|
||||
"dev": true
|
||||
},
|
||||
"json5": {
|
||||
"version": "2.1.0",
|
||||
"resolved": "https://registry.npmjs.org/json5/-/json5-2.1.0.tgz",
|
||||
"integrity": "sha512-8Mh9h6xViijj36g7Dxi+Y4S6hNGV96vcJZr/SrlHh1LR/pEn/8j/+qIBbs44YKl69Lrfctp4QD+AdWLTMqEZAQ==",
|
||||
"version": "2.1.1",
|
||||
"resolved": "https://registry.npmjs.org/json5/-/json5-2.1.1.tgz",
|
||||
"integrity": "sha512-l+3HXD0GEI3huGq1njuqtzYK8OYJyXMkOLtQ53pjWh89tvWS2h6l+1zMkYWqlb57+SiQodKZyvMEFb2X+KrFhQ==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"minimist": "^1.2.0"
|
||||
@ -4150,9 +4150,9 @@
|
||||
"dev": true
|
||||
},
|
||||
"react-is": {
|
||||
"version": "16.9.0",
|
||||
"resolved": "https://registry.npmjs.org/react-is/-/react-is-16.9.0.tgz",
|
||||
"integrity": "sha512-tJBzzzIgnnRfEm046qRcURvwQnZVXmuCbscxUO5RWrGTXpon2d4c8mI0D8WE6ydVIm29JiLB6+RslkIvym9Rjw==",
|
||||
"version": "16.10.2",
|
||||
"resolved": "https://registry.npmjs.org/react-is/-/react-is-16.10.2.tgz",
|
||||
"integrity": "sha512-INBT1QEgtcCCgvccr5/86CfD71fw9EPmDxgiJX4I2Ddr6ZsV6iFXsuby+qWJPtmNuMY0zByTsG4468P7nHuNWA==",
|
||||
"dev": true
|
||||
},
|
||||
"read-pkg": {
|
||||
@ -5015,19 +5015,19 @@
|
||||
}
|
||||
},
|
||||
"typescript": {
|
||||
"version": "3.6.3",
|
||||
"resolved": "https://registry.npmjs.org/typescript/-/typescript-3.6.3.tgz",
|
||||
"integrity": "sha512-N7bceJL1CtRQ2RiG0AQME13ksR7DiuQh/QehubYcghzv20tnh+MQnQIuJddTmsbqYj+dztchykemz0zFzlvdQw==",
|
||||
"version": "3.6.4",
|
||||
"resolved": "https://registry.npmjs.org/typescript/-/typescript-3.6.4.tgz",
|
||||
"integrity": "sha512-unoCll1+l+YK4i4F8f22TaNVPRHcD9PA3yCuZ8g5e0qGqlVlJ/8FSateOLLSagn+Yg5+ZwuPkL8LFUc0Jcvksg==",
|
||||
"dev": true
|
||||
},
|
||||
"uglify-js": {
|
||||
"version": "3.6.0",
|
||||
"resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.6.0.tgz",
|
||||
"integrity": "sha512-W+jrUHJr3DXKhrsS7NUVxn3zqMOFn0hL/Ei6v0anCIMoKC93TjcflTagwIHLW7SfMFfiQuktQyFVCFHGUE0+yg==",
|
||||
"version": "3.6.1",
|
||||
"resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.6.1.tgz",
|
||||
"integrity": "sha512-+dSJLJpXBb6oMHP+Yvw8hUgElz4gLTh82XuX68QiJVTXaE5ibl6buzhNkQdYhBlIhozWOC9ge16wyRmjG4TwVQ==",
|
||||
"dev": true,
|
||||
"optional": true,
|
||||
"requires": {
|
||||
"commander": "~2.20.0",
|
||||
"commander": "2.20.0",
|
||||
"source-map": "~0.6.1"
|
||||
}
|
||||
},
|
||||
|
@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "setup-php",
|
||||
"version": "1.4.1",
|
||||
"version": "1.4.2",
|
||||
"private": false,
|
||||
"description": "Setup php action",
|
||||
"main": "lib/setup-php.js",
|
||||
@ -24,8 +24,7 @@
|
||||
"dependencies": {
|
||||
"@actions/core": "^1.0.0",
|
||||
"@actions/tool-cache": "^1.0.0",
|
||||
"fs": "0.0.1-security",
|
||||
"typed-rest-client": "^1.5.0"
|
||||
"fs": "0.0.1-security"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@types/jest": "^24.0.18",
|
||||
|
@ -31,13 +31,8 @@ export async function addINIValues(ini_values_csv: string, os_version: string) {
|
||||
export async function addINIValuesUnix(
|
||||
ini_values_csv: string
|
||||
): Promise<string> {
|
||||
let script: string = '\n';
|
||||
let ini_values: Array<string> = await utils.INIArray(ini_values_csv);
|
||||
await utils.asyncForEach(ini_values, async function(ini_value: string) {
|
||||
// add script to set ini value
|
||||
script += 'echo "' + ini_value + '" >> $ini_file\n';
|
||||
});
|
||||
return script;
|
||||
return '\necho "' + ini_values.join('\n') + '" >> $ini_file\n';
|
||||
}
|
||||
|
||||
/**
|
||||
@ -48,11 +43,8 @@ export async function addINIValuesUnix(
|
||||
export async function addINIValuesWindows(
|
||||
ini_values_csv: string
|
||||
): Promise<string> {
|
||||
let script: string = '\n';
|
||||
let ini_values: Array<string> = await utils.INIArray(ini_values_csv);
|
||||
await utils.asyncForEach(ini_values, async function(ini_value: string) {
|
||||
// add script to set ini value
|
||||
script += 'Add-Content C:\\tools\\php\\php.ini "' + ini_value + '"\n';
|
||||
});
|
||||
return script;
|
||||
return (
|
||||
'Add-Content C:\\tools\\php\\php.ini "' + ini_values.join('\n') + '"\n'
|
||||
);
|
||||
}
|
||||
|
@ -1,8 +1,14 @@
|
||||
import * as utils from './utils';
|
||||
import * as pecl from './pecl';
|
||||
import * as extensions from './extensions';
|
||||
import * as config from './config';
|
||||
|
||||
/**
|
||||
* Function to set coverage driver
|
||||
*
|
||||
* @param coverage_driver
|
||||
* @param version
|
||||
* @param os_version
|
||||
*/
|
||||
export async function addCoverage(
|
||||
coverage_driver: 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) {
|
||||
let script: string = '\n';
|
||||
script += await extensions.addExtension(
|
||||
@ -39,6 +51,12 @@ export async function addCoverageXdebug(version: string, os_version: string) {
|
||||
return script;
|
||||
}
|
||||
|
||||
/**
|
||||
* Function to setup PCOV
|
||||
*
|
||||
* @param version
|
||||
* @param os_version
|
||||
*/
|
||||
export async function addCoveragePCOV(version: string, os_version: string) {
|
||||
let script: string = '\n';
|
||||
switch (version) {
|
||||
@ -57,7 +75,9 @@ export async function addCoveragePCOV(version: string, os_version: string) {
|
||||
script +=
|
||||
'if [ -e /etc/php/' +
|
||||
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';
|
||||
break;
|
||||
case 'darwin':
|
||||
@ -92,6 +112,12 @@ export async function addCoveragePCOV(version: string, os_version: string) {
|
||||
return script;
|
||||
}
|
||||
|
||||
/**
|
||||
* Function to disable Xdebug and PCOV
|
||||
*
|
||||
* @param version
|
||||
* @param os_version
|
||||
*/
|
||||
export async function disableCoverage(version: string, os_version: string) {
|
||||
let script: string = '\n';
|
||||
switch (os_version) {
|
||||
@ -99,11 +125,15 @@ export async function disableCoverage(version: string, os_version: string) {
|
||||
script +=
|
||||
'if [ -e /etc/php/' +
|
||||
version +
|
||||
'/mods-available/xdebug.ini ]; then sudo phpdismod xdebug; fi\n';
|
||||
'/mods-available/xdebug.ini ]; then sudo phpdismod -v ' +
|
||||
version +
|
||||
' xdebug; fi\n';
|
||||
script +=
|
||||
'if [ -e /etc/php/' +
|
||||
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 "/pcov/d" $ini_file\n';
|
||||
break;
|
||||
|
@ -1,6 +1,13 @@
|
||||
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(
|
||||
extension_csv: 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
|
||||
*
|
||||
@ -109,63 +47,33 @@ export async function addExtensionDarwin(
|
||||
await utils.asyncForEach(extensions, async function(extension: string) {
|
||||
extension = extension.toLowerCase();
|
||||
// add script to enable extension is already installed along with php
|
||||
script += await enableExtensionUnix(extension, 'darwin', log_prefix);
|
||||
switch (await pecl.checkPECLExtension(extension)) {
|
||||
case true:
|
||||
let install_command: string = '';
|
||||
switch (version + extension) {
|
||||
case '7.4xdebug':
|
||||
install_command =
|
||||
'sh ./xdebug_darwin.sh >/dev/null 2>&1 && echo "zend_extension=xdebug.so" >> $ini_file';
|
||||
break;
|
||||
case '7.4pcov':
|
||||
install_command =
|
||||
'sh ./pcov.sh >/dev/null 2>&1 && echo "extension=pcov.so" >> $ini_file';
|
||||
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';
|
||||
let install_command: string = '';
|
||||
switch (version + extension) {
|
||||
case '7.4xdebug':
|
||||
install_command =
|
||||
'sh ./xdebug_darwin.sh >/dev/null 2>&1 && echo "zend_extension=xdebug.so" >> $ini_file';
|
||||
break;
|
||||
case '7.4pcov':
|
||||
install_command =
|
||||
'sh ./pcov.sh >/dev/null 2>&1 && echo "extension=pcov.so" >> $ini_file';
|
||||
break;
|
||||
case '5.6xdebug':
|
||||
install_command = 'sudo pecl install xdebug-2.5.5 >/dev/null 2>&1';
|
||||
break;
|
||||
case false:
|
||||
default:
|
||||
script +=
|
||||
'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';
|
||||
install_command = 'sudo pecl install ' + extension + ' >/dev/null 2>&1';
|
||||
break;
|
||||
}
|
||||
script +=
|
||||
'add_extension ' +
|
||||
extension +
|
||||
' "' +
|
||||
install_command +
|
||||
'" ' +
|
||||
(await utils.getExtensionPrefix(extension)) +
|
||||
' "' +
|
||||
log_prefix +
|
||||
'"\n';
|
||||
});
|
||||
return script;
|
||||
}
|
||||
@ -186,63 +94,33 @@ export async function addExtensionWindows(
|
||||
await utils.asyncForEach(extensions, async function(extension: string) {
|
||||
extension = extension.toLowerCase();
|
||||
// add script to enable extension is already installed along with php
|
||||
script += await enableExtensionWindows(extension, log_prefix);
|
||||
|
||||
switch (await pecl.checkPECLExtension(extension)) {
|
||||
case true:
|
||||
let install_command: string = '';
|
||||
switch (version + extension) {
|
||||
case '7.4xdebug':
|
||||
const extension_url: string =
|
||||
'https://xdebug.org/files/php_xdebug-2.8.0beta2-7.4-vc15.dll';
|
||||
install_command =
|
||||
'Invoke-WebRequest -Uri ' +
|
||||
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' +
|
||||
(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';
|
||||
let install_command: string = '';
|
||||
switch (version + extension) {
|
||||
case '7.4xdebug':
|
||||
const extension_url: string =
|
||||
'https://xdebug.org/files/php_xdebug-2.8.0beta2-7.4-vc15.dll';
|
||||
install_command =
|
||||
'Invoke-WebRequest -Uri ' +
|
||||
extension_url +
|
||||
' -OutFile C:\\tools\\php\\ext\\php_xdebug.dll\n';
|
||||
install_command += 'Enable-PhpExtension xdebug';
|
||||
break;
|
||||
case false:
|
||||
case '7.2xdebug':
|
||||
default:
|
||||
script +=
|
||||
'if(!(php -m | findstr -i ' +
|
||||
extension +
|
||||
')) { ' +
|
||||
(await utils.log(
|
||||
'Could not find ' + extension + ' for PHP' + version + ' on PECL',
|
||||
'win32',
|
||||
'error',
|
||||
log_prefix
|
||||
)) +
|
||||
' } \n';
|
||||
install_command = 'Install-PhpExtension ' + extension;
|
||||
break;
|
||||
}
|
||||
script +=
|
||||
'Add-Extension ' +
|
||||
extension +
|
||||
' "' +
|
||||
install_command +
|
||||
'" ' +
|
||||
(await utils.getExtensionPrefix(extension)) +
|
||||
' "' +
|
||||
log_prefix +
|
||||
'"\n';
|
||||
});
|
||||
return script;
|
||||
}
|
||||
@ -263,7 +141,6 @@ export async function addExtensionLinux(
|
||||
await utils.asyncForEach(extensions, async function(extension: string) {
|
||||
extension = extension.toLowerCase();
|
||||
// add script to enable extension is already installed along with php
|
||||
script += await enableExtensionUnix(extension, 'linux', log_prefix);
|
||||
|
||||
let install_command: string = '';
|
||||
switch (version + extension) {
|
||||
@ -275,6 +152,14 @@ export async function addExtensionLinux(
|
||||
install_command =
|
||||
'./pcov.sh >/dev/null 2>&1 && echo "extension=pcov.so" >> $ini_file';
|
||||
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:
|
||||
install_command =
|
||||
'sudo DEBIAN_FRONTEND=noninteractive apt install -y php' +
|
||||
@ -285,25 +170,15 @@ export async function addExtensionLinux(
|
||||
break;
|
||||
}
|
||||
script +=
|
||||
'if [ ! "$(php -m | grep -i ' +
|
||||
'add_extension ' +
|
||||
extension +
|
||||
')" ]; then ' +
|
||||
' "' +
|
||||
install_command +
|
||||
' && ' +
|
||||
(await utils.log(
|
||||
'Installed and enabled ' + extension,
|
||||
'linux',
|
||||
'success',
|
||||
log_prefix
|
||||
)) +
|
||||
' || ' +
|
||||
(await utils.log(
|
||||
'Could not find php' + version + '-' + extension + ' on APT repository',
|
||||
'linux',
|
||||
'error',
|
||||
log_prefix
|
||||
)) +
|
||||
'; fi\n';
|
||||
'" ' +
|
||||
(await utils.getExtensionPrefix(extension)) +
|
||||
' "' +
|
||||
log_prefix +
|
||||
'"\n';
|
||||
});
|
||||
return script;
|
||||
}
|
||||
|
@ -79,6 +79,4 @@ async function run() {
|
||||
}
|
||||
|
||||
// call the run function
|
||||
run().then(function() {
|
||||
console.log('done');
|
||||
});
|
||||
run();
|
||||
|
17
src/pecl.ts
17
src/pecl.ts
@ -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;
|
||||
}
|
@ -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 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
|
||||
source ~/.bash_profile >/dev/null 2>&1
|
||||
source ~/.bashrc >/dev/null 2>&1
|
||||
phpbrew install -j 6 7.4.0RC3 +dev >/dev/null 2>&1
|
||||
phpbrew switch 7.4.0RC3
|
||||
sudo ln -sf /opt/phpbrew/php/php-7.4.0RC3/bin/* /usr/local/bin/
|
||||
sudo ln -sf /opt/phpbrew/php/php-7.4.0RC3/etc/php.ini /etc/php.ini
|
||||
phpbrew install -j 6 $version +dev >/dev/null 2>&1
|
||||
phpbrew switch $version
|
||||
sudo ln -sf /opt/phpbrew/php/php-$version/bin/* /usr/local/bin/
|
||||
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")
|
||||
ext_dir=$(php -i | grep "extension_dir => /opt" | sed -e "s|.*=> s*||")
|
||||
pecl config-set php_ini "$ini_file"
|
||||
sudo chmod 777 "$ini_file"
|
||||
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
|
||||
}
|
@ -1,3 +1,4 @@
|
||||
version=$1
|
||||
export HOMEBREW_NO_INSTALL_CLEANUP=TRUE
|
||||
if [ "$1" = "5.6" ] || [ "$1" = "7.0" ]; then
|
||||
brew tap exolnet/homebrew-deprecated >/dev/null 2>&1
|
||||
@ -11,3 +12,27 @@ mkdir -p "$(pecl config-get ext_dir)"
|
||||
composer global require hirak/prestissimo >/dev/null 2>&1
|
||||
php -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
|
||||
}
|
@ -1,5 +1,6 @@
|
||||
version=$(php-config --version | cut -c 1-3)
|
||||
if [ "$version" != "$1" ]; then
|
||||
existing_version=$(php-config --version | cut -c 1-3)
|
||||
version=$1
|
||||
if [ "$existing_version" != "$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 apt update -y >/dev/null 2>&1
|
||||
@ -17,14 +18,11 @@ if [ "$version" != "$1" ]; then
|
||||
fi
|
||||
|
||||
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 &
|
||||
ACTUAL_SIGNATURE="$(php -r "echo hash_file('sha384', 'composer-setup.php');")" &
|
||||
|
||||
if [ "$EXPECTED_SIGNATURE" != "$ACTUAL_SIGNATURE" ]; then
|
||||
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
|
||||
>&2 echo 'ERROR: Invalid installer signature'
|
||||
else
|
||||
COMPOSER_ALLOW_SUPERUSER=1
|
||||
export COMPOSER_ALLOW_SUPERUSER=1
|
||||
sudo php composer-setup.php --install-dir=/usr/local/bin --filename=composer
|
||||
fi
|
||||
rm composer-setup.php
|
||||
@ -37,3 +35,20 @@ sudo chmod 777 "$ini_file"
|
||||
sudo mkdir -p /run/php
|
||||
php -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
19
src/scripts/phalcon.sh
Normal 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
|
@ -41,3 +41,40 @@ Write-Host "Installing Composer" -ForegroundColor Blue
|
||||
Install-Composer -Scope System -Path C:\tools\php
|
||||
php -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
|
||||
}
|
||||
}
|
||||
}
|
19
src/utils.ts
19
src/utils.ts
@ -2,6 +2,12 @@ import * as fs from 'fs';
|
||||
import * as path from 'path';
|
||||
import * as core from '@actions/core';
|
||||
|
||||
/**
|
||||
* Function to get inputs from both with and env annotations.
|
||||
*
|
||||
* @param name
|
||||
* @param mandatory
|
||||
*/
|
||||
export async function getInput(
|
||||
name: string,
|
||||
mandatory: boolean
|
||||
@ -73,11 +79,14 @@ export async function readScript(
|
||||
}
|
||||
break;
|
||||
case 'linux':
|
||||
let files: Array<string> = ['scripts/phalcon.sh'];
|
||||
await readFiles74(['scripts/phalcon.sh']);
|
||||
switch (version) {
|
||||
case '7.4':
|
||||
await readFiles74(['scripts/xdebug.sh', 'scripts/pcov.sh']);
|
||||
files.concat(['scripts/xdebug.sh', 'scripts/pcov.sh']);
|
||||
break;
|
||||
}
|
||||
await readFiles74(files);
|
||||
break;
|
||||
case 'win32':
|
||||
switch (version) {
|
||||
@ -117,6 +126,7 @@ export async function writeScript(
|
||||
|
||||
/**
|
||||
* Function to break extension csv into an array
|
||||
*
|
||||
* @param extension_csv
|
||||
*/
|
||||
export async function extensionArray(
|
||||
@ -167,7 +177,7 @@ export async function log(
|
||||
};
|
||||
switch (prefix) {
|
||||
case '':
|
||||
prefix = prefix;
|
||||
prefix = '';
|
||||
break;
|
||||
default:
|
||||
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> {
|
||||
let zend: Array<string> = ['xdebug', 'opcache', 'ioncube', 'eaccelerator'];
|
||||
switch (zend.indexOf(extension)) {
|
||||
|
Loading…
Reference in New Issue
Block a user