name: Build phar on: push: branches: - master release: types: - published permissions: contents: read jobs: pre_job: permissions: actions: write runs-on: ubuntu-latest outputs: should_skip: ${{ steps.skip_check.outputs.should_skip }} steps: - id: skip_check uses: fkirc/skip-duplicate-actions@v5.3.0 with: concurrent_skipping: always cancel_others: true do_not_skip: '["release"]' # list files that may affect or are included into the built phar paths: '["bin/**", "assets/**", "build/**", "dictionaries/**", "src/**", "stubs/**", "psalm", "psalm-language-server", "psalm-plugin", "psalm-refactor", "psalter", "box.json.dist", "composer.json", "config.xsd", "keys.asc.gpg", "scoper.inc.php"]' build-phar: permissions: contents: write # for release needs: pre_job if: ${{ needs.pre_job.outputs.should_skip != 'true' }} runs-on: ubuntu-latest steps: - name: Set up PHP uses: shivammathur/setup-php@v2 with: php-version: '7.4' tools: composer:v2 coverage: none env: fail-fast: true - uses: actions/checkout@v4 with: fetch-depth: 0 # required for composer to automatically detect root package version - name: Get Composer Cache Directories id: composer-cache run: | echo "files_cache=$(composer config cache-files-dir)" >> $GITHUB_OUTPUT echo "vcs_cache=$(composer config cache-vcs-dir)" >> $GITHUB_OUTPUT - name: Generate composer.lock run: | composer update --no-install - name: Cache composer cache uses: actions/cache@v3 with: path: | ${{ steps.composer-cache.outputs.files_cache }} ${{ steps.composer-cache.outputs.vcs_cache }} key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.lock') }} restore-keys: | ${{ runner.os }}-composer- - name: Run composer install run: composer install -o # DO NOT set this, we need composer to figure out the version itself # env: # COMPOSER_ROOT_VERSION: dev-master - run: bin/build-phar.sh env: GPG_SIGNING: 1 GPG_SECRET_KEY: ${{ secrets.GPG_SECRET_KEY }} GPG_PASSPHRASE: ${{ secrets.GPG_PASSPHRASE }} - name: Upload release assets if: ${{ github.event_name == 'release' }} uses: svenstaro/upload-release-action@v2 with: repo_token: ${{ secrets.GITHUB_TOKEN }} file: build/psalm.phar* file_glob: true tag: ${{ github.ref }} - name: Release psalm/phar run: bin/github-deploy-phar.sh env: PHAR_REPO_TOKEN: ${{ secrets.PHAR_REPO_TOKEN }}