Lint: Disable golangci-lint (#84)
#232
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: Test | |
| on: | |
| workflow_dispatch: | |
| pull_request: | |
| branches: | |
| - main | |
| push: | |
| branches: | |
| - main | |
| tags: | |
| - '**' | |
| concurrency: | |
| group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref_name }}-${{ github.event.pull_request.number || github.sha }} | |
| cancel-in-progress: true | |
| permissions: {} | |
| jobs: | |
| pest: | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v5 | |
| - uses: shivammathur/setup-php@v2 | |
| with: | |
| php-version: '8.4' | |
| coverage: xdebug | |
| - uses: ramsey/composer-install@v3 | |
| - run: composer pest:unit -- --coverage-clover coverage-unit.xml --ci | |
| - uses: actions/upload-artifact@v4 | |
| with: | |
| name: coverage | |
| path: coverage-unit.xml | |
| codecov: | |
| needs: pest | |
| runs-on: ubuntu-latest | |
| permissions: | |
| id-token: write | |
| steps: | |
| - uses: actions/checkout@v5 | |
| - uses: actions/download-artifact@v5 | |
| with: | |
| name: coverage | |
| - uses: codecov/codecov-action@v5 | |
| with: | |
| use_oidc: true | |
| fail_ci_if_error: true | |
| disable_search: true | |
| files: coverage-unit.xml | |
| flags: unit | |
| phar: | |
| runs-on: ubuntu-24.04 | |
| outputs: | |
| php-version: ${{ steps.setup-php.outputs.php-version }} | |
| steps: | |
| - uses: actions/checkout@v5 | |
| with: | |
| fetch-depth: 0 | |
| - uses: shivammathur/setup-php@v2 | |
| id: setup-php | |
| with: | |
| php-version: '8.4' | |
| coverage: none | |
| tools: box:4 | |
| - uses: ramsey/composer-install@v3 | |
| with: | |
| composer-options: --no-dev --prefer-dist | |
| - run: box compile | |
| - uses: actions/upload-artifact@v4 | |
| with: | |
| name: phar | |
| path: phar/php-matrix | |
| if-no-files-found: error | |
| build: | |
| name: build (${{ matrix.runs-on }}) | |
| needs: phar | |
| strategy: | |
| matrix: | |
| include: | |
| - runs-on: ubuntu-24.04-arm | |
| variant: linux_arm64 | |
| spc-variant: linux-aarch64 | |
| - runs-on: ubuntu-24.04 | |
| variant: linux_amd64 | |
| spc-variant: linux-x86_64 | |
| - runs-on: macos-15 | |
| variant: darwin_arm64 | |
| spc-variant: macos-aarch64 | |
| - runs-on: macos-15-intel | |
| variant: darwin_amd64 | |
| spc-variant: macos-x86_64 | |
| runs-on: ${{ matrix.runs-on }} | |
| steps: | |
| - uses: actions/checkout@v5 | |
| with: | |
| sparse-checkout: craft.yml | |
| sparse-checkout-cone-mode: false | |
| - name: Install spc | |
| run: | | |
| gh release download --repo crazywhalecc/static-php-cli --pattern "${PATTERN}" --output spc.tar.gz && \ | |
| mkdir -p /tmp/spc && \ | |
| tar -xvf spc.tar.gz --directory /tmp/spc && \ | |
| echo "/tmp/spc" >> "$GITHUB_PATH" | |
| env: | |
| PATTERN: spc-${{ matrix.spc-variant }}.tar.gz | |
| GH_TOKEN: ${{ github.token }} | |
| - uses: actions/download-artifact@v5 | |
| with: | |
| name: phar | |
| path: phar | |
| - name: Restore cached micro.sfx | |
| id: restore-micro-sfx | |
| uses: actions/cache/restore@v4 | |
| with: | |
| path: buildroot/bin/micro.sfx | |
| key: micro-sfx-${{ runner.os }}-${{ runner.arch }}-${{ needs.phar.outputs.php-version }}-${{ hashFiles('craft.yml') }} | |
| - name: Build micro.sfx | |
| if: steps.restore-micro-sfx.outputs.cache-hit != 'true' | |
| run: spc craft | |
| env: | |
| GITHUB_TOKEN: ${{ github.token }} # Not a typo. | |
| - name: Cache micro.sfx | |
| id: cache-micro-sfx | |
| if: steps.restore-micro-sfx.outputs.cache-hit != 'true' | |
| uses: actions/cache/save@v4 | |
| with: | |
| path: buildroot/bin/micro.sfx | |
| key: ${{ steps.restore-micro-sfx.outputs.cache-primary-key }} | |
| - run: mkdir -p out | |
| - run: spc micro:combine phar/php-matrix --output out/php-matrix | |
| - uses: actions/upload-artifact@v4 | |
| with: | |
| name: php-matrix_${{ matrix.variant }} | |
| path: out/php-matrix | |
| if-no-files-found: error | |
| e2e: | |
| name: e2e (${{ matrix.runs-on }}) | |
| needs: build | |
| strategy: | |
| matrix: | |
| include: | |
| - runs-on: ubuntu-24.04-arm | |
| variant: linux_arm64 | |
| - runs-on: ubuntu-24.04 | |
| variant: linux_amd64 | |
| - runs-on: macos-15 | |
| variant: darwin_arm64 | |
| - runs-on: macos-15-intel | |
| variant: darwin_amd64 | |
| runs-on: ${{ matrix.runs-on }} | |
| env: | |
| GOFLAGS: '-mod=mod' | |
| steps: | |
| - uses: actions/checkout@v5 | |
| - uses: actions/setup-go@v6 | |
| with: | |
| go-version-file: 'go.mod' | |
| - run: echo OS="$(go env GOOS)" >> $GITHUB_ENV | |
| - run: echo ARCH="$(go env GOARCH)" >> $GITHUB_ENV | |
| - uses: actions/download-artifact@v5 | |
| with: | |
| name: php-matrix_${{ matrix.variant }} | |
| path: out | |
| - name: Grant the binary execute permission | |
| run: chmod +x out/php-matrix | |
| - name: Add the binary into PATH | |
| run: echo "${WORKSPACE}/out" >> "$GITHUB_PATH" | |
| env: | |
| WORKSPACE: ${{ github.workspace }} | |
| - name: Print the binary path | |
| run: go test -count=1 -v ./internal | |
| - run: go test -count=1 -shuffle=on ./... | |
| merge: | |
| needs: | |
| - build | |
| - e2e | |
| runs-on: ubuntu-24.04 | |
| steps: | |
| - name: Merge binary artifacts | |
| uses: actions/upload-artifact/merge@v4 | |
| with: | |
| name: binaries | |
| pattern: php-matrix_* | |
| separate-directories: true | |
| delete-merged: true | |
| dispatch: | |
| if: github.event_name == 'push' && github.ref_type == 'tag' | |
| needs: | |
| - pest | |
| - e2e | |
| - merge | |
| permissions: | |
| actions: write | |
| runs-on: ubuntu-24.04 | |
| steps: | |
| - name: Dispatch Release Workflow | |
| run: | | |
| gh workflow run release.yml \ | |
| --repo "${REPO}" \ | |
| --ref "${REF}" \ | |
| -f version="${VERSION}" \ | |
| -f run_id="${RUN_ID}" | |
| env: | |
| REPO: ${{ github.repository }} | |
| REF: ${{ github.ref }} | |
| VERSION: ${{ github.ref_name }} | |
| RUN_ID: ${{ github.run_id }} | |
| GH_TOKEN: ${{ github.token }} |