diff --git a/.github/workflows/phar-build.yml b/.github/workflows/phar-build.yml new file mode 100644 index 00000000..ff2de60b --- /dev/null +++ b/.github/workflows/phar-build.yml @@ -0,0 +1,64 @@ +name: Build PHAR + +on: + push: + branches: [ "main" ] + pull_request: + branches: [ "main" ] + +permissions: + contents: read + +jobs: + build-phar: + name: "Build PHAR" + + runs-on: ${{ matrix.operating-system }} + + strategy: + fail-fast: false + matrix: + dependencies: + - "locked" + php-version: + - "8.1" + operating-system: + - "ubuntu-latest" + + steps: + - name: "Checkout" + uses: "actions/checkout@v4" + + - name: "Install PHP" + uses: "shivammathur/setup-php@v2" + with: + coverage: none + tools: composer:v2 + php-version: "${{ matrix.php-version }}" + ini-values: memory_limit=-1 + + - name: "Get Composer Cache Directory" + id: composer-cache + run: | + echo "dir=$(composer config cache-files-dir)" >> $GITHUB_OUTPUT + + - name: "Cache Composer dependencies" + uses: "actions/cache@v3" + with: + path: "${{ steps.composer-cache.outputs.dir }}" + key: "php-${{ matrix.php-version }}-locked-composer-${{ hashFiles('**/composer.lock') }}" + restore-keys: | + php-${{ matrix.php-version }}-locked-composer- + + - name: "Install locked dependencies" + run: "composer install --no-interaction --no-progress" + + - name: "Build PHAR file" + run: "composer build:phar" + + - name: "Test PHAR file" + run: "./spc.phar dev:extensions" + + - uses: actions/upload-artifact@v3 + with: + path: spc.phar diff --git a/box.json b/box.json new file mode 100644 index 00000000..e688155e --- /dev/null +++ b/box.json @@ -0,0 +1,10 @@ +{ + "alias": "spc-php.phar", + "banner": false, + "blacklist": [ + ".github", + "tests" + ], + "git-commit-short": "git_commit_short", + "output": "spc.phar" +} diff --git a/composer.json b/composer.json index 14f6189b..706f8d64 100644 --- a/composer.json +++ b/composer.json @@ -20,6 +20,7 @@ "captainhook/captainhook": "^5.10", "captainhook/plugin-composer": "^5.3", "friendsofphp/php-cs-fixer": "^3.25", + "humbug/box": "^4.3", "nunomaduro/collision": "^7.8", "phpstan/phpstan": "^1.10", "phpunit/phpunit": "^10.3" @@ -44,7 +45,8 @@ "scripts": { "analyse": "phpstan analyse --memory-limit 300M", "cs-fix": "php-cs-fixer fix", - "test": "vendor/bin/phpunit tests/ --no-coverage" + "test": "vendor/bin/phpunit tests/ --no-coverage", + "build:phar": "vendor/bin/box compile" }, "config": { "allow-plugins": {