name: CI on: push: branches: [1.x] pull_request_target: release: types: [created] env: GITHUB_API_TOKEN: ${{ secrets.GH_API_TOKEN }} jobs: tests: name: PHP ${{ matrix.php }} runs-on: ubuntu-latest strategy: matrix: php: [8.0, 8.1, 8.2] steps: - uses: zenstruck/.github/actions/php-test-symfony@main with: php: ${{ matrix.php }} deps: highest build-phar: name: Build PHAR runs-on: ubuntu-latest steps: - name: Checkout code uses: actions/checkout@v4 - name: Setup PHP uses: shivammathur/setup-php@v2 with: php-version: 8.0 coverage: none - name: Install dependencies uses: ramsey/composer-install@v3 - name: Download Box run: wget https://github.com/box-project/box/releases/download/3.16.0/box.phar - name: Update Version if: github.event_name == 'release' run: sed -i "s/@dev/$TAG/" bin/changelog env: TAG: ${{ github.event.release.tag_name }} - name: Compile PHAR run: php box.phar compile - uses: actions/upload-artifact@v4 name: Upload the PHAR artifact with: name: changelog.phar path: bin/changelog.phar composer-validate: uses: zenstruck/.github/.github/workflows/php-composer-validate.yml@main test-phar: runs-on: ubuntu-latest name: Test PHAR needs: - build-phar - tests steps: - name: Checkout code uses: actions/checkout@v4 - name: Setup PHP uses: shivammathur/setup-php@v2 with: php-version: 8.0 coverage: none - uses: actions/download-artifact@v4 with: name: changelog.phar path: . - name: Prepare PHAR run: | mv changelog.phar changelog chmod +x changelog - name: Test generate run: | ./changelog - name: Test self-update/rollback if: github.event_name != 'release' run: | ./changelog --version ./changelog self-update ./changelog --version # ./changelog self-update --rollback # ./changelog --version publish-phar: runs-on: ubuntu-latest name: Publish PHAR needs: - composer-validate - test-phar if: github.event_name == 'release' steps: - uses: actions/download-artifact@v4 with: name: changelog.phar path: . - name: Upload changelog.phar uses: shogo82148/actions-upload-release-asset@v1 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} with: upload_url: ${{ github.event.release.upload_url }} asset_path: changelog.phar asset_name: changelog.phar asset_content_type: application/zip fixcs: name: Run php-cs-fixer needs: [composer-validate, test-phar] if: (github.event_name == 'push' || github.event_name == 'schedule') && !startsWith(github.ref, 'refs/tags') && github.repository_owner == 'zenstruck' runs-on: ubuntu-latest steps: - uses: zenstruck/.github/actions/php-cs-fixer@main with: php: 8 key: ${{ secrets.GPG_PRIVATE_KEY }} token: ${{ secrets.COMPOSER_TOKEN }} sync-with-template: name: Sync meta files needs: [composer-validate, test-phar] if: (github.event_name == 'push' || github.event_name == 'schedule') && !startsWith(github.ref, 'refs/tags') && github.repository_owner == 'zenstruck' runs-on: ubuntu-latest steps: - uses: zenstruck/.github/actions/sync-with-template@main with: key: ${{ secrets.GPG_PRIVATE_KEY }} token: ${{ secrets.COMPOSER_TOKEN }}