diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 567d55091..f21afc6f4 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -22,6 +22,7 @@ jobs: dependencies: name: Dependencies checks runs-on: ubuntu-latest + if: ${{ github.event_name != 'schedule' }} steps: - name: Checkout uses: actions/checkout@v4 @@ -67,6 +68,7 @@ jobs: matrix: package: ${{ fromJson(needs.settings.outputs.packages-names) }} runs-on: ubuntu-latest + if: ${{ github.event_name != 'schedule' }} steps: - name: Checkout uses: actions/checkout@v4 @@ -112,6 +114,7 @@ jobs: phpcs: name: PHP CodeSniffer runs-on: ubuntu-latest + if: ${{ github.event_name != 'schedule' }} steps: - name: Checkout uses: actions/checkout@v4 @@ -141,7 +144,14 @@ jobs: name: Tests uses: ./.github/workflows/phpunit.yml with: - runs-on: '["ubuntu-latest", "windows-latest"]' + fast: ${{ github.event_name == 'schedule' }} + + phpunit-windows: + name: Windows tests + uses: ./.github/workflows/phpunit.yml + with: + fast: true + runs-on: '["windows-latest"]' phpunit-package: name: Package tests @@ -154,6 +164,7 @@ jobs: package: ${{ fromJson(needs.settings.outputs.packages-names) }} uses: ./.github/workflows/phpunit.yml with: + fast: ${{ github.event_name == 'schedule' }} package: ${{ matrix.package }} packages-names: ${{ needs.settings.outputs.packages-names }} packages-directory: ${{ needs.settings.outputs.packages-directory }} @@ -161,6 +172,7 @@ jobs: markdownlint: name: Markdownlint runs-on: ubuntu-latest + if: ${{ github.event_name != 'schedule' }} steps: - name: Checkout uses: actions/checkout@v4 diff --git a/.github/workflows/phpunit.yml b/.github/workflows/phpunit.yml index 8879bb839..b56f3c0c2 100644 --- a/.github/workflows/phpunit.yml +++ b/.github/workflows/phpunit.yml @@ -23,6 +23,11 @@ on: required: false type: string default: '["ubuntu-latest"]' + fast: + description: "Run only for latest (default `false`)" + required: false + type: boolean + default: false permissions: contents: read @@ -55,12 +60,18 @@ jobs: working-directory: ${{ env.WORKING_DIRECTORY }} run: | # PHP - echo "php-versions=$(jq '.require."php" | split("|") | map(sub("^[^\\d]+"; "")) | sort' -c composer.json)" >> $GITHUB_OUTPUT + PHP_VERSIONS="$(jq '.require."php" | split("|") | map(sub("^[^\\d]+"; "")) | sort' -c composer.json)" + + if [[ "${{ inputs.fast }}" = true ]]; then + PHP_VERSIONS="$(jq '. | sort[-1:]' -c <<< $PHP_VERSIONS)" + fi + + echo "php-versions=$PHP_VERSIONS" >> $GITHUB_OUTPUT # Dependencies DEPS_HIGHEST="highest" - DEPS_LOCKED="$(if [ ! "${{ github.event_name }}" == "schedule" ] && [ -f "composer.lock" ]; then echo "locked"; fi)" - DEPS_LOWEST="$(if [ ! "${{ github.event_name }}" == "schedule" ]; then echo "lowest"; fi)" + DEPS_LOCKED="$(if [ ! "${{ inputs.fast }}" = true ] && [ -f "composer.lock" ]; then echo "locked"; fi)" + DEPS_LOWEST="$(if [ ! "${{ inputs.fast }}" = true ]; then echo "lowest"; fi)" echo "dependencies=$(echo "[\"$DEPS_HIGHEST\", \"$DEPS_LOCKED\", \"$DEPS_LOWEST\"]" | jq "[.[] | select(length > 0)]" -r -c)" >> $GITHUB_OUTPUT @@ -69,7 +80,11 @@ jobs: echo "laravel-packages=$(jq '.require + ."require-dev" | to_entries | map(select( (.key | startswith("illuminate/")) or (.key == "laravel/framework "))) | map( .key ) | flatten | unique | sort ' -c composer.json)" >> $GITHUB_OUTPUT # Optional packages - echo "optional-packages=$(jq '([((."extra"."lara-asp"."ci"."optional-packages" // ["null"]) | flatten | unique | sort | join(","))] + ["null"]) | unique' -r -c composer.json)" >> $GITHUB_OUTPUT + if [[ "${{ inputs.fast }}" = true ]]; then + echo "optional-packages=[\"null\"]" >> $GITHUB_OUTPUT + else + echo "optional-packages=$(jq '([((."extra"."lara-asp"."ci"."optional-packages" // ["null"]) | flatten | unique | sort | join(","))] + ["null"]) | unique' -r -c composer.json)" >> $GITHUB_OUTPUT + fi run: # Only 28 characters are visible on UI :(