name: CI on: [push, pull_request] permissions: contents: read # to fetch code (actions/checkout) jobs: lint: name: Lint timeout-minutes: 5 runs-on: ubuntu-latest steps: - name: Checkout uses: actions/checkout@v3 - name: Setup PHP uses: shivammathur/setup-php@v2 with: php-version: ${{ matrix.php-version }} env: update: true - name: Composer Install run: composer install --classmap-authoritative --no-interaction --no-cache - name: Lint run: vendor/bin/parallel-lint --show-deprecated build phpseclib tests strategy: fail-fast: false matrix: php-version: ['8.1', '8.2'] quality_tools: name: Quality Tools timeout-minutes: 5 runs-on: ubuntu-latest steps: - name: Checkout uses: actions/checkout@v3 - name: Setup PHP uses: shivammathur/setup-php@v2 with: php-version: '8.1' env: update: true - name: Composer Install run: composer install --classmap-authoritative --no-interaction --no-cache - name: PHP_CodeSniffer run: vendor/bin/phpcs --standard=build/php_codesniffer.xml - name: PHP CS Fixer run: vendor/bin/php-cs-fixer fix --config=build/php-cs-fixer.php --diff --dry-run --using-cache=no - name: Psalm run: vendor/bin/psalm --config=build/psalm.xml --no-cache --long-progress --report-show-info=false strategy: fail-fast: false tests: name: Tests timeout-minutes: 10 runs-on: ${{ matrix.os }} steps: - name: Checkout uses: actions/checkout@v3 - name: Setup PHP uses: shivammathur/setup-php@v2 with: php-version: ${{ matrix.php-version }} env: update: true - name: Composer Install run: composer install --classmap-authoritative --no-interaction --no-cache --ignore-platform-req=php - name: Setup Secure Shell Functional Tests if: matrix.os == 'ubuntu-latest' run: | PHPSECLIB_SSH_USERNAME='phpseclib' PHPSECLIB_SSH_PASSWORD='EePoov8po1aethu2kied1ne0' sudo useradd --create-home --base-dir /home "$PHPSECLIB_SSH_USERNAME" echo "$PHPSECLIB_SSH_USERNAME:$PHPSECLIB_SSH_PASSWORD" | sudo chpasswd ssh-keygen -t rsa -b 1024 -f "$HOME/.ssh/id_rsa" -q -N "" eval `ssh-agent -s` ssh-add "$HOME/.ssh/id_rsa" sudo mkdir -p "/home/$PHPSECLIB_SSH_USERNAME/.ssh/" sudo cp "$HOME/.ssh/id_rsa.pub" "/home/$PHPSECLIB_SSH_USERNAME/.ssh/authorized_keys" sudo ssh-keyscan -t rsa localhost > "/tmp/known_hosts" sudo cp "/tmp/known_hosts" "/home/$PHPSECLIB_SSH_USERNAME/.ssh/known_hosts" sudo chown "$PHPSECLIB_SSH_USERNAME:$PHPSECLIB_SSH_USERNAME" "/home/$PHPSECLIB_SSH_USERNAME/.ssh/" -R echo "PHPSECLIB_SSH_HOSTNAME=localhost" >> $GITHUB_ENV echo "PHPSECLIB_SSH_USERNAME=$PHPSECLIB_SSH_USERNAME" >> $GITHUB_ENV echo "PHPSECLIB_SSH_PASSWORD=$PHPSECLIB_SSH_PASSWORD" >> $GITHUB_ENV echo "PHPSECLIB_SSH_HOME=/home/phpseclib" >> $GITHUB_ENV echo "SSH_AUTH_SOCK=$SSH_AUTH_SOCK" >> $GITHUB_ENV - name: PHPUnit run: vendor/bin/paratest --verbose --configuration=tests/phpunit.xml --runner=WrapperRunner strategy: fail-fast: false matrix: os: [ubuntu-latest, windows-latest, macos-latest] php-version: ['8.1', '8.2']