diff --git a/.github/workflows/php-build.yml b/.github/workflows/php-build.yml new file mode 100644 index 0000000..0681d3e --- /dev/null +++ b/.github/workflows/php-build.yml @@ -0,0 +1,71 @@ +# +name: PHP Build + +on: + workflow_call: + inputs: + cache_deps: + description: 'Whether to cache composer dependencies' + default: true + required: false + type: boolean + php_versions: + description: 'The PHP versions to create builds for (as JSON string array)' + default: '["latest"]' + required: false + type: string + upload_artifact: + description: 'Whether to upload the build archive for reuse (filename format e.g. build-archive-php8.1)' + default: true + required: false + type: boolean + +jobs: + build: + runs-on: ubuntu-latest + strategy: + matrix: + php: ${{ fromJSON(inputs.php_versions) }} + + name: 'PHP ${{ matrix.php }} - Build and Archive' + steps: + - uses: actions/checkout@v4 + + - name: Validate composer.json and composer.lock + uses: php-actions/composer@v6 + with: + command: validate + + - name: Cache Composer Dependencies + if: ${{ inputs.cache_deps == 'true' }} + id: composer-cache + uses: actions/cache@v3 + with: + path: ./src/vendor + key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.lock') }} + restore-keys: | + ${{ runner.os }}-composer- + + - name: Install Composer Dependencies + if: ${{ inputs.cache_deps != 'true' || steps.composer-cache.outputs.cache-hit != 'true' }} + uses: php-actions/composer@v6 + with: + php_version: ${{ matrix.php }} + + - name: Create Build Archive + run: | + cp ./src/config-sample.php ./src/config.php + mkdir -p ./src/data/cache + mkdir -p ./src/data/log + echo > ./src/data/log/license.log + echo > ./src/data/log/application.log + echo > ./src/data/log/php_error.log + mkdir /tmp/builds/ && tar -cvf /tmp/builds/build.tar ./ + + - name: Upload Build Archive + if: ${{ inputs.upload_artifact == 'true' }} + uses: actions/upload-artifact@v3 + with: + name: build-archive-php${{ matrix.php }} + path: /tmp/builds + retention-days: 1 \ No newline at end of file diff --git a/.github/workflows/phpstan.yml b/.github/workflows/phpstan.yml index 69817db..87550a4 100644 --- a/.github/workflows/phpstan.yml +++ b/.github/workflows/phpstan.yml @@ -3,16 +3,16 @@ name: PHPStan on: workflow_call: inputs: - config_file: + config-file: description: Configuration file location default: phpstan.neon required: false type: string - memory_limit: + memory-limit: description: Memory limit for analysis required: false type: string - php_version: + php-version: description: Version of PHP to use default: latest required: false @@ -31,7 +31,7 @@ jobs: - uses: actions/checkout@v4 - uses: php-actions/phpstan@v3 with: - configuration: ${{ inputs.config_file }} - memory_limit: ${{ inputs.memory_limit }} - php_version: ${{ inputs.php_version }} + configuration: ${{ inputs.config-file }} + memory_limit: ${{ inputs.memory-limit }} + php_version: ${{ inputs.php-version }} version: ${{ inputs.version }} \ No newline at end of file