Make WordPress Core

Changeset 54856


Ignore:
Timestamp:
11/18/2022 02:50:52 PM (15 months ago)
Author:
desrosj
Message:

Build/Test Tools: Improve how Composer dependencies are installed.

To improve how Composer dependencies are installed and managed within GitHub Actions, the ramsey/composer-install third-party action is now used consistently throughout all workflows.

Previously, some workflows manually ran composer commands while others already used ramsey/composer-install.

The ramsey/composer-install action manages caching dependencies across workflow runs internally, which is something that was manually handled before this change.

Props jrf, desrosj.
Fixes #53841.

Location:
trunk/.github/workflows
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • trunk/.github/workflows/coding-standards.yml

    r54851 r54856  
    5757  # - Generate a report for displaying `test` directory issues as pull request annotations.
    5858  # - Ensures version-controlled files are not modified or deleted.
    59 
    6059  phpcs:
    6160    name: PHP coding standards
     
    7372          php-version: '7.4'
    7473          coverage: none
    75           tools: composer, cs2pr
     74          tools: cs2pr
    7675
    7776      # This date is used to ensure that the PHPCS cache is cleared at least once every week.
     
    8786          key: ${{ runner.os }}-date-${{ steps.get-date.outputs.date }}-phpcs-cache-${{ hashFiles('**/composer.json', 'phpcs.xml.dist') }}
    8887
     88      # Since Composer dependencies are installed using `composer update` and no lock file is in version control,
     89      # passing a custom cache suffix ensures that the cache is flushed at least once per week.
    8990      - name: Install Composer dependencies
    9091        uses: ramsey/composer-install@83af392bf5f031813d25e6fe4cd626cdba9a2df6 # v2.2.0
    9192        with:
    92           composer-options: "--no-progress --no-ansi"
     93          custom-cache-suffix: ${{ steps.get-date.outputs.date }}
    9394
    9495      - name: Make Composer packages available globally
  • trunk/.github/workflows/php-compatibility.yml

    r54851 r54856  
    6767          php-version: '7.4'
    6868          coverage: none
    69           tools: composer, cs2pr
     69          tools: cs2pr
    7070
    7171      - name: Log debug information
     
    8585          key: ${{ runner.os }}-date-${{ steps.get-date.outputs.date }}-phpcompat-cache-${{ hashFiles('**/composer.json', 'phpcompat.xml.dist') }}
    8686
     87      # Since Composer dependencies are installed using `composer update` and no lock file is in version control,
     88      # passing a custom cache suffix ensures that the cache is flushed at least once per week.
    8789      - name: Install Composer dependencies
    8890        uses: ramsey/composer-install@83af392bf5f031813d25e6fe4cd626cdba9a2df6 # v2.2.0
    8991        with:
    90           composer-options: "--no-progress --no-ansi"
     92          custom-cache-suffix: ${{ steps.get-date.outputs.date }}
    9193
    9294      - name: Make Composer packages available globally
  • trunk/.github/workflows/phpunit-tests.yml

    r54851 r54856  
    3939  # - Checks out the repository.
    4040  # - Sets up Node.js.
     41  # - Sets up PHP.
     42  # - Installs Composer dependencies.
     43  # - Installs npm dependencies
    4144  # - Logs general debug information about the runner.
    42   # - Installs npm dependencies
    43   # - Configures caching for Composer.
    44   # - Installs Composer dependencies.
    4545  # - Logs Docker debug information (about the Docker installation within the runner).
    4646  # - Starts the WordPress Docker container.
     
    113113          cache: npm
    114114
     115      ##
     116      # This allows Composer dependencies to be installed using a single step.
     117      #
     118      # Since the tests are currently run within the Docker containers where the PHP version varies,
     119      # the same PHP version needs to be configured for the action runner machine so that the correct
     120      # dependency versions are installed and cached.
     121      ##
     122      - name: Set up PHP
     123        uses: shivammathur/setup-php@1a18b2267f80291a81ca1d33e7c851fe09e7dfc4 # v2.22.0
     124        with:
     125          php-version: '${{ matrix.php }}'
     126          coverage: none
     127
     128      # Since Composer dependencies are installed using `composer update` and no lock file is in version control,
     129      # passing a custom cache suffix ensures that the cache is flushed at least once per week.
     130      - name: Install Composer dependencies
     131        uses: ramsey/composer-install@83af392bf5f031813d25e6fe4cd626cdba9a2df6 # v2.2.0
     132        with:
     133          custom-cache-suffix: $(/bin/date -u --date='last Mon' "+%F")
     134
     135      - name: Install npm dependencies
     136        run: npm ci
     137
    115138      - name: General debug information
    116139        run: |
     
    120143          git --version
    121144          svn --version
    122 
    123       - name: Install npm dependencies
    124         run: npm ci
    125 
    126       # This date is used to ensure that the Composer cache is refreshed at least once every week.
    127       # http://man7.org/linux/man-pages/man1/date.1.html
    128       - name: "Get last Monday's date"
    129         id: get-date
    130         run: echo "date=$(/bin/date -u --date='last Mon' "+%F")" >> $GITHUB_OUTPUT
    131 
    132       - name: Get Composer cache directory
    133         id: composer-cache
    134         run: echo "composer_dir=$(composer config cache-files-dir)" >> $GITHUB_OUTPUT
    135 
    136       - name: Cache Composer dependencies
    137         uses: actions/cache@9b0c1fce7a93df8e3bb8926b0d6e9d89e92f20a7 # v3.0.11
    138         env:
    139           cache-name: cache-composer-dependencies
    140         with:
    141           path: ${{ steps.composer-cache.outputs.composer_dir }}
    142           key: ${{ runner.os }}-php-${{ matrix.php }}-date-${{ steps.get-date.outputs.date }}-composer-${{ hashFiles('**/composer.json') }}
    143 
    144       - name: Install Composer dependencies
    145         run: |
    146           docker-compose run --rm php composer --version
    147 
    148           # Install using `composer update` as there is no `composer.lock` file.
    149           if [ ${{ env.LOCAL_PHP }} == '8.2-fpm' ]; then
    150             docker-compose run --rm php composer update --ignore-platform-req=php+
    151           else
    152             docker-compose run --rm php composer update
    153           fi
     145          composer --version
     146          locale -a
    154147
    155148      - name: Docker debug information
  • trunk/.github/workflows/test-coverage.yml

    r54851 r54856  
    3939  # - Checks out the repository.
    4040  # - Sets up Node.js.
     41  # - Sets up PHP.
     42  # - Installs Composer dependencies.
     43  # - Installs npm dependencies
    4144  # - Logs general debug information about the runner.
    42   # - Installs npm dependencies
    43   # - Configures caching for Composer.
    44   # - Installs Composer dependencies.
    4545  # - Logs Docker debug information (about the Docker installation within the runner).
    4646  # - Starts the WordPress Docker container.
     
    7979          cache: npm
    8080
     81      ##
     82      # This allows Composer dependencies to be installed using a single step.
     83      #
     84      # Since the tests are currently run within the Docker containers where the PHP version varies,
     85      # the same PHP version needs to be configured for the action runner machine so that the correct
     86      # dependency versions are installed and cached.
     87      ##
     88      - name: Set up PHP
     89        uses: shivammathur/setup-php@1a18b2267f80291a81ca1d33e7c851fe09e7dfc4 # v2.22.0
     90        with:
     91          php-version: '7.4'
     92          coverage: none
     93
     94      # Since Composer dependencies are installed using `composer update` and no lock file is in version control,
     95      # passing a custom cache suffix ensures that the cache is flushed at least once per week.
     96      - name: Install Composer dependencies
     97        uses: ramsey/composer-install@83af392bf5f031813d25e6fe4cd626cdba9a2df6 # v2.2.0
     98        with:
     99          custom-cache-suffix: $(/bin/date -u --date='last Mon' "+%F")
     100
     101      - name: Install npm Dependencies
     102        run: npm ci
     103
    81104      - name: Log debug information
    82105        run: |
     
    88111          git --version
    89112          svn --version
     113          composer --version
    90114          locale -a
    91 
    92       - name: Install npm Dependencies
    93         run: npm ci
    94 
    95       # This date is used to ensure that the Composer cache is refreshed at least once every week.
    96       # http://man7.org/linux/man-pages/man1/date.1.html
    97       - name: "Get last Monday's date"
    98         id: get-date
    99         run: echo "date=$(/bin/date -u --date='last Mon' "+%F")" >> $GITHUB_OUTPUT
    100 
    101       - name: Get Composer cache directory
    102         id: composer-cache
    103         run: echo "composer_dir=$(composer config cache-files-dir)" >> $GITHUB_OUTPUT
    104 
    105       - name: Cache Composer dependencies
    106         uses: actions/cache@9b0c1fce7a93df8e3bb8926b0d6e9d89e92f20a7 # v3.0.11
    107         env:
    108           cache-name: cache-composer-dependencies
    109         with:
    110           path: ${{ steps.composer-cache.outputs.composer_dir }}
    111           key: ${{ runner.os }}-php-${{ matrix.php }}-date-${{ steps.get-date.outputs.date }}-composer-${{ hashFiles('**/composer.json') }}
    112 
    113       - name: Install Composer dependencies
    114         run: |
    115           docker-compose run --rm php composer --version
    116 
    117           # Install using `composer update` as there is no `composer.lock` file.
    118           docker-compose run --rm php composer update
    119115
    120116      - name: Docker debug information
Note: See TracChangeset for help on using the changeset viewer.