Skip to content

Update cache action runner (#252) #624

Update cache action runner (#252)

Update cache action runner (#252) #624

# GitHub Actions Documentation: https://docs.github.com/en/actions
name: "build"
on: ["pull_request", "push", "workflow_dispatch"]
# Cancels all previous workflow runs for the same branch that have not yet completed.
concurrency:
# The concurrency group contains the workflow name and the branch name.
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
jobs:
composer:
name: "Check Composer"
runs-on: "ubuntu-latest"
steps:
- name: "Checkout repository"
uses: "actions/checkout@v4"
- name: "Set up PHP"
uses: "shivammathur/setup-php@v2"
with:
php-version: 8.1
tools: composer-normalize
coverage: none
- name: "Run Composer normalize"
run: "composer-normalize --dry-run"
test:
name: "Expect tests"
runs-on: "ubuntu-latest"
strategy:
matrix:
composer-version:
- "v1"
- "v2"
steps:
- name: "Checkout repository"
uses: "actions/checkout@v4"
- name: "Install expect"
run: |
sudo apt-get update
sudo apt-get -y install expect
- name: "Set up PHP"
uses: "shivammathur/setup-php@v2"
with:
php-version: "latest"
tools: "composer:${{ matrix.composer-version }}"
coverage: "none"
env:
fail-fast: true
- name: "Run expect tests"
run: "composer test"
code-coverage:
needs: test
if: github.repository == 'ramsey/composer-install'
name: "Code coverage"
runs-on: "ubuntu-latest"
steps:
- name: "Checkout repository"
uses: "actions/checkout@v4"
- name: "Install expect"
run: |
sudo apt-get update
sudo apt-get -y install expect
- name: "Set up Ruby"
uses: "ruby/setup-ruby@v1"
with:
ruby-version: "3.2"
- name: "Install Ruby dependencies"
run: |
gem install bashcov
gem install codecov
- name: "Set up PHP"
uses: "shivammathur/setup-php@v2"
with:
php-version: "latest"
tools: "composer:v2"
coverage: "none"
- name: "Run expect tests"
run: "bashcov --root ./bin -- ./tests/bash-test.sh tests/tests.sh"
- name: "Publish coverage report to Codecov"
uses: "codecov/codecov-action@v4"
with:
files: "./bin/coverage/codecov-result.json"
static-analysis:
name: "Static analysis"
runs-on: "ubuntu-latest"
steps:
- name: "Checkout repository"
uses: "actions/checkout@v4"
- name: "Run shellcheck"
run: "shellcheck --exclude=SC2230 bin/*.sh tests/*.sh"
run:
needs: test
name: "Run action"
runs-on: "${{ matrix.operating-system }}"
strategy:
matrix:
operating-system:
- "ubuntu-latest"
- "windows-latest"
dependency-versions:
- "lowest"
- "highest"
- "locked"
composer-version:
- "v1"
- "v2"
working-directory:
- "tests/fixtures/with-lock-file"
- "tests/fixtures/no-lock-file"
- "tests/fixtures/out-of-sync-lock"
- ""
steps:
- name: "Checkout repository"
uses: "actions/checkout@v4"
- name: "Set up PHP"
uses: "shivammathur/setup-php@v2"
with:
php-version: "latest"
tools: "composer:${{ matrix.composer-version }}"
coverage: "none"
env:
fail-fast: true
- name: "Test: plain install"
uses: ./
with:
working-directory: "${{ matrix.working-directory }}"
dependency-versions: "${{ matrix.dependency-versions }}"
- name: Clean up between tests
run: |
git clean -ffdx && git reset --hard HEAD
composer clear-cache
- name: "Test: ignore platform reqs"
uses: ./
with:
working-directory: "${{ matrix.working-directory }}"
dependency-versions: "${{ matrix.dependency-versions }}"
composer-options: '--ignore-platform-reqs'
- name: Clean up between tests
run: |
git clean -ffdx && git reset --hard HEAD
composer clear-cache
- name: "Test: ignore platform reqs, ignore cache"
uses: ./
with:
working-directory: "${{ matrix.working-directory }}"
dependency-versions: "${{ matrix.dependency-versions }}"
composer-options: '--ignore-platform-reqs'
ignore-cache: 'yes'
- name: Clean up between tests
run: |
git clean -ffdx && git reset --hard HEAD
composer clear-cache
- name: "Test: ignore platform reqs, custom cache key"
uses: ./
with:
working-directory: "${{ matrix.working-directory }}"
dependency-versions: "${{ matrix.dependency-versions }}"
composer-options: '--ignore-platform-reqs'
custom-cache-key: 'my-super-custom-cache-key'
- name: Clean up between tests
run: |
git clean -ffdx && git reset --hard HEAD
composer clear-cache
- name: "Test: ignore platform reqs, ignore cache, custom cache key"
uses: ./
with:
working-directory: "${{ matrix.working-directory }}"
dependency-versions: "${{ matrix.dependency-versions }}"
composer-options: '--ignore-platform-reqs'
ignore-cache: 'yes'
custom-cache-key: 'my-super-custom-cache-key'
- name: Clean up between tests
run: |
git clean -ffdx && git reset --hard HEAD
composer clear-cache
- name: "Test: ignore cache"
uses: ./
with:
working-directory: "${{ matrix.working-directory }}"
dependency-versions: "${{ matrix.dependency-versions }}"
ignore-cache: 'yes'
- name: Clean up between tests
run: |
git clean -ffdx && git reset --hard HEAD
composer clear-cache
- name: "Test: ignore cache, custom cache key"
uses: ./
with:
working-directory: "${{ matrix.working-directory }}"
dependency-versions: "${{ matrix.dependency-versions }}"
ignore-cache: 'yes'
custom-cache-key: 'my-super-custom-cache-key'
- name: Clean up between tests
run: |
git clean -ffdx && git reset --hard HEAD
composer clear-cache
- name: "Test: custom cache key"
uses: ./
with:
working-directory: "${{ matrix.working-directory }}"
dependency-versions: "${{ matrix.dependency-versions }}"
custom-cache-key: 'my-super-custom-cache-key'
- name: Clean up between tests
run: |
git clean -ffdx && git reset --hard HEAD
composer clear-cache
- name: "Test: custom cache suffix"
uses: ./
with:
working-directory: "${{ matrix.working-directory }}"
dependency-versions: "${{ matrix.dependency-versions }}"
custom-cache-suffix: $(/bin/date -u --date='last Mon' "+%F")
run-no-cleanup:
needs: test
name: "Run unclean"
runs-on: "${{ matrix.operating-system }}"
strategy:
matrix:
operating-system:
- "ubuntu-latest"
- "windows-latest"
composer-version:
- "v1"
- "v2"
steps:
- name: "Checkout repository"
uses: "actions/checkout@v4"
- name: "Set up PHP"
uses: "shivammathur/setup-php@v2"
with:
php-version: "latest"
tools: "composer:${{ matrix.composer-version }}"
coverage: "none"
env:
fail-fast: true
- name: "Test: plain install"
uses: ./
with:
working-directory: 'tests/fixtures/with-lock-file'
- name: "Test: switch to lowest dependencies"
uses: ./
with:
working-directory: 'tests/fixtures/with-lock-file'
dependency-versions: 'lowest'
- name: "Test: switch to highest dependencies"
uses: ./
with:
working-directory: 'tests/fixtures/with-lock-file'
dependency-versions: 'highest'