From 759c0ea95790ab15b70bf1671475c591b2a3cdb3 Mon Sep 17 00:00:00 2001 From: Alejandro Celaya Date: Sat, 13 Aug 2022 10:53:24 +0200 Subject: [PATCH 1/6] Extracted all steps for setting up to a reusable action --- .github/actions/ci-setup.yml | 46 +++++++++++++++++++++++++ .github/workflows/ci-mutation-tests.yml | 27 +++------------ 2 files changed, 50 insertions(+), 23 deletions(-) create mode 100644 .github/actions/ci-setup.yml diff --git a/.github/actions/ci-setup.yml b/.github/actions/ci-setup.yml new file mode 100644 index 00000000..077a55b2 --- /dev/null +++ b/.github/actions/ci-setup.yml @@ -0,0 +1,46 @@ +name: CI setup + +inputs: + install-deps: + type: boolean + required: true + default: true + php-version: + type: string + required: true + php-extensions: + type: string + required: true + extensions-cache-key: + type: string + required: true + +runs: + uses: composite + steps: + - name: Checkout code + uses: actions/checkout@v3 + - name: Setup cache environment + id: extcache + uses: shivammathur/cache-extensions@v1 + with: + php-version: ${{ inputs.php-version }} + extensions: ${{ inputs.extensions }} + key: ${{ inputs.extensions-cache-key }} + - name: Cache extensions + uses: actions/cache@v2 + with: + path: ${{ steps.extcache.outputs.dir }} + key: ${{ steps.extcache.outputs.key }} + restore-keys: ${{ steps.extcache.outputs.key }} + - name: Use PHP + uses: shivammathur/setup-php@v2 + with: + php-version: ${{ inputs.php-version }} + tools: composer + extensions: ${{ inputs.extensions }} + coverage: pcov + ini-values: pcov.directory=module + - name: Install dependencies + if: ${{ inputs.install-deps }} + run: composer install --no-interaction --prefer-dist diff --git a/.github/workflows/ci-mutation-tests.yml b/.github/workflows/ci-mutation-tests.yml index bc985f12..4f9acb2f 100644 --- a/.github/workflows/ci-mutation-tests.yml +++ b/.github/workflows/ci-mutation-tests.yml @@ -17,31 +17,12 @@ jobs: env: extensions: openswoole-4.11.1 steps: - - name: Checkout code - uses: actions/checkout@v3 - - name: Setup cache environment - id: extcache - uses: shivammathur/cache-extensions@v1 + - name: Setup + uses: './.github/actions/ci-setup.yml' with: php-version: ${{ matrix.php-version }} - extensions: ${{ env.extensions }} - key: mutation-tests-extensions-${{ matrix.php-version }}-${{ inputs.test-group }} - - name: Cache extensions - uses: actions/cache@v2 - with: - path: ${{ steps.extcache.outputs.dir }} - key: ${{ steps.extcache.outputs.key }} - restore-keys: ${{ steps.extcache.outputs.key }} - - name: Use PHP - uses: shivammathur/setup-php@v2 - with: - php-version: ${{ matrix.php-version }} - tools: composer - extensions: ${{ env.extensions }} - coverage: pcov - ini-values: pcov.directory=module - - name: Install dependencies - run: composer install --no-interaction --prefer-dist + php-extensions: ${{ env.extensions }} + extensions-cache-key: mutation-tests-extensions-${{ matrix.php-version }}-${{ inputs.test-group }} - uses: actions/download-artifact@v3 with: path: build From 9075d68b7cc889f2066a0c2d8e07c360b30ecba4 Mon Sep 17 00:00:00 2001 From: Alejandro Celaya Date: Sat, 13 Aug 2022 11:03:40 +0200 Subject: [PATCH 2/6] Fixed reference to local composed action --- .github/actions/{ci-setup.yml => ci-setup/action.yml} | 0 .github/workflows/ci-mutation-tests.yml | 2 +- 2 files changed, 1 insertion(+), 1 deletion(-) rename .github/actions/{ci-setup.yml => ci-setup/action.yml} (100%) diff --git a/.github/actions/ci-setup.yml b/.github/actions/ci-setup/action.yml similarity index 100% rename from .github/actions/ci-setup.yml rename to .github/actions/ci-setup/action.yml diff --git a/.github/workflows/ci-mutation-tests.yml b/.github/workflows/ci-mutation-tests.yml index 4f9acb2f..62abad4e 100644 --- a/.github/workflows/ci-mutation-tests.yml +++ b/.github/workflows/ci-mutation-tests.yml @@ -18,7 +18,7 @@ jobs: extensions: openswoole-4.11.1 steps: - name: Setup - uses: './.github/actions/ci-setup.yml' + uses: './.github/actions/ci-setup' with: php-version: ${{ matrix.php-version }} php-extensions: ${{ env.extensions }} From fe4ced27095ea803d48a12f433b592e63d7d40da Mon Sep 17 00:00:00 2001 From: Alejandro Celaya Date: Sat, 13 Aug 2022 11:06:41 +0200 Subject: [PATCH 3/6] Moved checkout step back to workflow --- .github/actions/ci-setup/action.yml | 2 -- .github/workflows/ci-mutation-tests.yml | 1 + 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/.github/actions/ci-setup/action.yml b/.github/actions/ci-setup/action.yml index 077a55b2..5340bf28 100644 --- a/.github/actions/ci-setup/action.yml +++ b/.github/actions/ci-setup/action.yml @@ -18,8 +18,6 @@ inputs: runs: uses: composite steps: - - name: Checkout code - uses: actions/checkout@v3 - name: Setup cache environment id: extcache uses: shivammathur/cache-extensions@v1 diff --git a/.github/workflows/ci-mutation-tests.yml b/.github/workflows/ci-mutation-tests.yml index 62abad4e..ff428d3e 100644 --- a/.github/workflows/ci-mutation-tests.yml +++ b/.github/workflows/ci-mutation-tests.yml @@ -17,6 +17,7 @@ jobs: env: extensions: openswoole-4.11.1 steps: + - uses: actions/checkout@v3 - name: Setup uses: './.github/actions/ci-setup' with: From ae2dc39a785a6df4cd89eea2f81af52cedfcc156 Mon Sep 17 00:00:00 2001 From: Alejandro Celaya Date: Sat, 13 Aug 2022 11:16:33 +0200 Subject: [PATCH 4/6] Fixed ci-setup local composite action --- .github/actions/ci-setup/action.yml | 17 ++++++++++------- .github/workflows/ci-mutation-tests.yml | 7 ++----- 2 files changed, 12 insertions(+), 12 deletions(-) diff --git a/.github/actions/ci-setup/action.yml b/.github/actions/ci-setup/action.yml index 5340bf28..731f09d2 100644 --- a/.github/actions/ci-setup/action.yml +++ b/.github/actions/ci-setup/action.yml @@ -1,22 +1,24 @@ name: CI setup +description: 'Sets up the environment to run CI actions for Shlink' inputs: install-deps: - type: boolean + description: 'Tells if dependencies should be installed with composer. Default value is "yes"' required: true - default: true + default: 'yes' php-version: - type: string + description: 'The PHP version to be setup' required: true php-extensions: - type: string + description: 'The PHP extensions to install' required: true + default: '' extensions-cache-key: - type: string + description: 'The key used to cache PHP extensions. If empty value is provided, extension caching is disabled' required: true runs: - uses: composite + using: composite steps: - name: Setup cache environment id: extcache @@ -40,5 +42,6 @@ runs: coverage: pcov ini-values: pcov.directory=module - name: Install dependencies - if: ${{ inputs.install-deps }} + if: ${{ inputs.install-deps == 'yes' }} run: composer install --no-interaction --prefer-dist + shell: bash diff --git a/.github/workflows/ci-mutation-tests.yml b/.github/workflows/ci-mutation-tests.yml index ff428d3e..85b74f54 100644 --- a/.github/workflows/ci-mutation-tests.yml +++ b/.github/workflows/ci-mutation-tests.yml @@ -14,15 +14,12 @@ jobs: strategy: matrix: php-version: [ '8.1' ] - env: - extensions: openswoole-4.11.1 steps: - uses: actions/checkout@v3 - - name: Setup - uses: './.github/actions/ci-setup' + - uses: './.github/actions/ci-setup' with: php-version: ${{ matrix.php-version }} - php-extensions: ${{ env.extensions }} + php-extensions: openswoole-4.11.1 extensions-cache-key: mutation-tests-extensions-${{ matrix.php-version }}-${{ inputs.test-group }} - uses: actions/download-artifact@v3 with: From 763002ae14932368cc49c36992368ebc091a04c8 Mon Sep 17 00:00:00 2001 From: Alejandro Celaya Date: Sat, 13 Aug 2022 11:18:50 +0200 Subject: [PATCH 5/6] Fixed typo when reading etxnesions input on ci-setup action --- .github/actions/ci-setup/action.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/actions/ci-setup/action.yml b/.github/actions/ci-setup/action.yml index 731f09d2..eb7c8979 100644 --- a/.github/actions/ci-setup/action.yml +++ b/.github/actions/ci-setup/action.yml @@ -25,7 +25,7 @@ runs: uses: shivammathur/cache-extensions@v1 with: php-version: ${{ inputs.php-version }} - extensions: ${{ inputs.extensions }} + extensions: ${{ inputs.php-extensions }} key: ${{ inputs.extensions-cache-key }} - name: Cache extensions uses: actions/cache@v2 @@ -38,7 +38,7 @@ runs: with: php-version: ${{ inputs.php-version }} tools: composer - extensions: ${{ inputs.extensions }} + extensions: ${{ inputs.php-extensions }} coverage: pcov ini-values: pcov.directory=module - name: Install dependencies From eb21833d94d375b06fa574f87d7fd69762a8c0ab Mon Sep 17 00:00:00 2001 From: Alejandro Celaya Date: Sat, 13 Aug 2022 11:56:46 +0200 Subject: [PATCH 6/6] Used ci-setup composite action as much as possible in ci workflow --- .github/workflows/ci-db-tests.yml | 28 +++------------------ .github/workflows/ci-tests.yml | 29 +++------------------- .github/workflows/ci.yml | 28 +++------------------ .github/workflows/publish-release.yml | 29 +++++----------------- .github/workflows/publish-swagger-spec.yml | 27 +++----------------- 5 files changed, 22 insertions(+), 119 deletions(-) diff --git a/.github/workflows/ci-db-tests.yml b/.github/workflows/ci-db-tests.yml index a8fb3d15..09543610 100644 --- a/.github/workflows/ci-db-tests.yml +++ b/.github/workflows/ci-db-tests.yml @@ -16,39 +16,19 @@ jobs: php-version: [ '8.1' ] env: LC_ALL: C - extensions: openswoole-4.11.1, pdo_sqlsrv-5.10.1 steps: - - name: Checkout code - uses: actions/checkout@v3 + - uses: actions/checkout@v3 - name: Install MSSQL ODBC if: ${{ inputs.platform == 'ms' }} run: sudo ./data/infra/ci/install-ms-odbc.sh - name: Start database server if: ${{ inputs.platform != 'sqlite:ci' }} run: docker-compose -f docker-compose.yml -f docker-compose.ci.yml up -d shlink_db_${{ inputs.platform }} - - name: Setup cache environment - id: extcache - uses: shivammathur/cache-extensions@v1 + - uses: './.github/actions/ci-setup' with: php-version: ${{ matrix.php-version }} - extensions: ${{ env.extensions }} - key: db-tests-extensions-${{ matrix.php-version }}-${{ inputs.platform }} - - name: Cache extensions - uses: actions/cache@v2 - with: - path: ${{ steps.extcache.outputs.dir }} - key: ${{ steps.extcache.outputs.key }} - restore-keys: ${{ steps.extcache.outputs.key }} - - name: Use PHP - uses: shivammathur/setup-php@v2 - with: - php-version: ${{ matrix.php-version }} - tools: composer - extensions: ${{ env.extensions }} - coverage: pcov - ini-values: pcov.directory=module - - name: Install dependencies - run: composer install --no-interaction --prefer-dist + php-extensions: openswoole-4.11.1, pdo_sqlsrv-5.10.1 + extensions-cache-key: db-tests-extensions-${{ matrix.php-version }}-${{ inputs.platform }} - name: Create test database if: ${{ inputs.platform == 'ms' }} run: docker-compose exec -T shlink_db_ms /opt/mssql-tools/bin/sqlcmd -S localhost -U sa -P 'Passw0rd!' -Q "CREATE DATABASE shlink_test;" diff --git a/.github/workflows/ci-tests.yml b/.github/workflows/ci-tests.yml index 157ebbed..b7f7af98 100644 --- a/.github/workflows/ci-tests.yml +++ b/.github/workflows/ci-tests.yml @@ -14,40 +14,19 @@ jobs: strategy: matrix: php-version: ['8.1'] - env: - extensions: openswoole-4.11.1 steps: - - name: Checkout code - uses: actions/checkout@v3 + - uses: actions/checkout@v3 - name: Start postgres database server if: ${{ inputs.test-group == 'api' }} run: docker-compose -f docker-compose.yml -f docker-compose.ci.yml up -d shlink_db_postgres - name: Start maria database server if: ${{ inputs.test-group == 'cli' }} run: docker-compose -f docker-compose.yml -f docker-compose.ci.yml up -d shlink_db_maria - - name: Setup cache environment - id: extcache - uses: shivammathur/cache-extensions@v1 + - uses: './.github/actions/ci-setup' with: php-version: ${{ matrix.php-version }} - extensions: ${{ env.extensions }} - key: tests-extensions-${{ matrix.php-version }}-${{ inputs.test-group }} - - name: Cache extensions - uses: actions/cache@v2 - with: - path: ${{ steps.extcache.outputs.dir }} - key: ${{ steps.extcache.outputs.key }} - restore-keys: ${{ steps.extcache.outputs.key }} - - name: Use PHP - uses: shivammathur/setup-php@v2 - with: - php-version: ${{ matrix.php-version }} - tools: composer - extensions: ${{ env.extensions }} - coverage: pcov - ini-values: pcov.directory=module - - name: Install dependencies - run: composer install --no-interaction --prefer-dist + php-extensions: openswoole-4.11.1 + extensions-cache-key: tests-extensions-${{ matrix.php-version }}-${{ inputs.test-group }} - run: composer test:${{ inputs.test-group }}:ci - uses: actions/upload-artifact@v3 if: ${{ matrix.php-version == '8.1' }} diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index eb2f3334..57985e8a 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -15,33 +15,13 @@ jobs: matrix: php-version: ['8.1'] command: ['cs', 'stan', 'swagger:validate'] - env: - extensions: openswoole-4.11.1 steps: - - name: Checkout code - uses: actions/checkout@v3 - - name: Setup cache environment - id: extcache - uses: shivammathur/cache-extensions@v1 + - uses: actions/checkout@v3 + - uses: './.github/actions/ci-setup' with: php-version: ${{ matrix.php-version }} - extensions: ${{ env.extensions }} - key: tests-extensions-${{ matrix.php-version }}-${{ matrix.command }} - - name: Cache extensions - uses: actions/cache@v2 - with: - path: ${{ steps.extcache.outputs.dir }} - key: ${{ steps.extcache.outputs.key }} - restore-keys: ${{ steps.extcache.outputs.key }} - - name: Use PHP - uses: shivammathur/setup-php@v2 - with: - php-version: ${{ matrix.php-version }} - tools: composer - extensions: ${{ env.extensions }} - coverage: none - - name: Install dependencies - run: composer install --no-interaction --prefer-dist + php-extensions: openswoole-4.11.1 + extensions-cache-key: tests-extensions-${{ matrix.php-version }}-${{ matrix.command }} - run: composer ${{ matrix.command }} unit-tests: diff --git a/.github/workflows/publish-release.yml b/.github/workflows/publish-release.yml index af6c2e26..b4ed7bba 100644 --- a/.github/workflows/publish-release.yml +++ b/.github/workflows/publish-release.yml @@ -12,30 +12,14 @@ jobs: matrix: php-version: ['8.1'] swoole: ['yes', 'no'] - env: - extensions: openswoole-4.11.1 steps: - - name: Checkout code - uses: actions/checkout@v3 - - name: Setup cache environment - id: extcache - uses: shivammathur/cache-extensions@v1 + - uses: actions/checkout@v3 + - uses: './.github/actions/ci-setup' with: php-version: ${{ matrix.php-version }} - extensions: ${{ env.extensions }} - key: publish-release-extensions-${{ matrix.php-version }}-${{ matrix.swoole }} - - name: Cache extensions - uses: actions/cache@v2 - with: - path: ${{ steps.extcache.outputs.dir }} - key: ${{ steps.extcache.outputs.key }} - restore-keys: ${{ steps.extcache.outputs.key }} - - name: Use PHP - uses: shivammathur/setup-php@v2 - with: - php-version: ${{ matrix.php-version }} - tools: composer - extensions: ${{ env.extensions }} + php-extensions: openswoole-4.11.1 + extensions-cache-key: publish-swagger-spec-extensions-${{ matrix.php-version }} + install-deps: 'no' - if: ${{ matrix.swoole == 'yes' }} run: ./build.sh ${GITHUB_REF#refs/tags/v} - if: ${{ matrix.swoole == 'no' }} @@ -49,8 +33,7 @@ jobs: needs: ['build'] runs-on: ubuntu-22.04 steps: - - name: Checkout code - uses: actions/checkout@v3 + - uses: actions/checkout@v3 - uses: actions/download-artifact@v3 with: path: build diff --git a/.github/workflows/publish-swagger-spec.yml b/.github/workflows/publish-swagger-spec.yml index e0f9f2ee..9002353d 100644 --- a/.github/workflows/publish-swagger-spec.yml +++ b/.github/workflows/publish-swagger-spec.yml @@ -11,36 +11,17 @@ jobs: strategy: matrix: php-version: ['8.1'] - env: - extensions: openswoole-4.11.1 steps: - - name: Checkout code - uses: actions/checkout@v3 + - uses: actions/checkout@v3 - name: Determine version id: determine_version run: echo "::set-output name=version::${GITHUB_REF#refs/tags/}" shell: bash - - name: Setup cache environment - id: extcache - uses: shivammathur/cache-extensions@v1 + - uses: './.github/actions/ci-setup' with: php-version: ${{ matrix.php-version }} - extensions: ${{ env.extensions }} - key: publish-swagger-spec-extensions-${{ matrix.php-version }} - - name: Cache extensions - uses: actions/cache@v2 - with: - path: ${{ steps.extcache.outputs.dir }} - key: ${{ steps.extcache.outputs.key }} - restore-keys: ${{ steps.extcache.outputs.key }} - - name: Use PHP - uses: shivammathur/setup-php@v2 - with: - php-version: ${{ matrix.php-version }} - tools: composer - extensions: ${{ env.extensions }} - coverage: none - - run: composer install --no-interaction --prefer-dist + php-extensions: openswoole-4.11.1 + extensions-cache-key: publish-swagger-spec-extensions-${{ matrix.php-version }} - run: composer swagger:inline - run: mkdir ${{ steps.determine_version.outputs.version }} - run: mv docs/swagger/swagger-inlined.json ${{ steps.determine_version.outputs.version }}/open-api-spec.json