From 7214f5bab4215de5346a7d70ea8092c630fcb575 Mon Sep 17 00:00:00 2001 From: Fabian Grutschus Date: Wed, 24 Jan 2024 13:36:27 +0100 Subject: [PATCH] Combine GA workflow files into one --- .github/workflows/ci.yml | 126 ++++++++++++++++++++++++++++++ .github/workflows/integration.yml | 55 ------------- .github/workflows/static.yml | 35 --------- .github/workflows/unit.yml | 58 -------------- 4 files changed, 126 insertions(+), 148 deletions(-) create mode 100644 .github/workflows/ci.yml delete mode 100644 .github/workflows/integration.yml delete mode 100644 .github/workflows/static.yml delete mode 100644 .github/workflows/unit.yml diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 0000000..4d72b6e --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,126 @@ +name: Continuous Integration + +on: [push, pull_request] + +jobs: + psalm: + name: Psalm + runs-on: ubuntu-latest + steps: + - name: Checkout code + uses: actions/checkout@v3 + + - name: Psalm + uses: docker://vimeo/psalm-github-actions + with: + security_analysis: true + report_file: results.sarif + composer_ignore_platform_reqs: true + + - name: Upload Security Analysis results to GitHub + uses: github/codeql-action/upload-sarif@v2 + with: + sarif_file: results.sarif + + # we may use whatever way to install phpcs, just specify the path on the next step + # however, curl seems to be the fastest + - name: Install PHP_CodeSniffer + run: | + curl -OL https://squizlabs.github.io/PHP_CodeSniffer/phpcs.phar + php phpcs.phar --version + - uses: tinovyatkin/action-php-codesniffer@v1 + with: + files: "**.php" # you may customize glob as needed + phpcs_path: php phpcs.phar + standard: phpcs.xml + + unittest: + name: Unit Tests - PHP ${{ matrix.php.version }} ${{ matrix.prefer-lowest }} + runs-on: ubuntu-latest + strategy: + matrix: + # operating-system: [ubuntu-latest, windows-latest, macOS-latest] + php: + - version: "7.4" + composer-args: "" + - version: "8.0" + composer-args: "" + - version: "8.1" + composer-args: "--ignore-platform-req=php" + - version: "8.2" + composer-args: "--ignore-platform-req=php" + - version: "8.3" + composer-args: "--ignore-platform-req=php" + prefer-lowest: ["", "--prefer-lowest"] + steps: + - uses: actions/checkout@v3 + + - name: Install PHP + uses: shivammathur/setup-php@v2 + with: + php-version: ${{ matrix.php.version }} + # extensions: intl #optional + # ini-values: "post_max_size=256M" #optional + + - name: Validate composer.json and composer.lock + run: composer validate --strict + + - name: Cache Composer packages + id: composer-cache + uses: actions/cache@v3 + with: + path: vendor + key: ${{ runner.os }}-php-${{ hashFiles('**/composer.lock') }} + restore-keys: | + ${{ runner.os }}-php- + + - name: Install dependencies + run: composer update --prefer-dist --no-progress ${{ matrix.prefer-lowest }} ${{ matrix.php.composer-args }} + + - name: Run test suite + run: composer run-script test + + integration: + name: Integration Tests + runs-on: ubuntu-latest + strategy: + matrix: + mysql: ["5.7", "8.0"] + postgres: ["14", "13", "12", "11", "10", "9"] + steps: + - uses: actions/checkout@v3 + + - name: Install PHP + uses: shivammathur/setup-php@v2 + with: + php-version: 8.0 + + - name: Cache Composer packages + id: composer-cache + uses: actions/cache@v2 + with: + path: vendor + key: ${{ runner.os }}-php-${{ hashFiles('**/composer.lock') }} + restore-keys: | + ${{ runner.os }}-php- + + - name: Install dependencies + run: composer update --prefer-dist --no-progress --ignore-platform-reqs + + - name: Start containers + run: docker-compose -f "docker-compose.yml" up -d --build + env: + MYSQL_VERSION: "${{ matrix.mysql }}" + POSTGRES_VERSION: "${{ matrix.postgres }}" + + - name: Sleep for 60 seconds + uses: jakejarvis/wait-action@master + with: + time: '60s' + + - name: Run test suite + run: composer run-script integration + + - name: Stop containers + if: always() + run: docker-compose -f "docker-compose.yml" down diff --git a/.github/workflows/integration.yml b/.github/workflows/integration.yml deleted file mode 100644 index c10e41c..0000000 --- a/.github/workflows/integration.yml +++ /dev/null @@ -1,55 +0,0 @@ -name: Integration Tests - -on: - push: - branches: - - '*' - pull_request: - - '*' - -jobs: - integration: - runs-on: ubuntu-latest - - strategy: - matrix: - mysql: ["5.7", "8.0"] - postgres: ["14", "13", "12", "11", "10", "9"] - - steps: - - uses: actions/checkout@v2 - - - name: Install PHP - uses: shivammathur/setup-php@v2 - with: - php-version: 8.0 - - - name: Cache Composer packages - id: composer-cache - uses: actions/cache@v2 - with: - path: vendor - key: ${{ runner.os }}-php-${{ hashFiles('**/composer.lock') }} - restore-keys: | - ${{ runner.os }}-php- - - - name: Install dependencies - run: composer update --prefer-dist --no-progress --ignore-platform-reqs - - - name: Start containers - run: docker-compose -f "docker-compose.yml" up -d --build - env: - MYSQL_VERSION: "${{ matrix.mysql }}" - POSTGRES_VERSION: "${{ matrix.postgres }}" - - - name: Sleep for 60 seconds - uses: jakejarvis/wait-action@master - with: - time: '60s' - - - name: Run test suite - run: composer run-script integration - - - name: Stop containers - if: always() - run: docker-compose -f "docker-compose.yml" down diff --git a/.github/workflows/static.yml b/.github/workflows/static.yml deleted file mode 100644 index 0826e2c..0000000 --- a/.github/workflows/static.yml +++ /dev/null @@ -1,35 +0,0 @@ -name: Static Code Analysis - -on: [push, pull_request] - -jobs: - psalm: - name: Psalm - runs-on: ubuntu-latest - steps: - - name: Checkout code - uses: actions/checkout@v2 - - - name: Psalm - uses: docker://vimeo/psalm-github-actions - with: - security_analysis: true - report_file: results.sarif - composer_ignore_platform_reqs: true - - - name: Upload Security Analysis results to GitHub - uses: github/codeql-action/upload-sarif@v1 - with: - sarif_file: results.sarif - - # we may use whatever way to install phpcs, just specify the path on the next step - # however, curl seems to be the fastest - - name: Install PHP_CodeSniffer - run: | - curl -OL https://squizlabs.github.io/PHP_CodeSniffer/phpcs.phar - php phpcs.phar --version - - uses: tinovyatkin/action-php-codesniffer@v1 - with: - files: "**.php" # you may customize glob as needed - phpcs_path: php phpcs.phar - standard: phpcs.xml diff --git a/.github/workflows/unit.yml b/.github/workflows/unit.yml deleted file mode 100644 index 204a8a2..0000000 --- a/.github/workflows/unit.yml +++ /dev/null @@ -1,58 +0,0 @@ -name: Unit Tests - -on: - push: - branches: - - "*" - pull_request: - - "*" - -jobs: - unittest: - runs-on: ubuntu-latest - - strategy: - matrix: - # operating-system: [ubuntu-latest, windows-latest, macOS-latest] - php: - - version: "7.4" - composer-args: "" - - version: "8.0" - composer-args: "" - - version: "8.1" - composer-args: "--ignore-platform-req=php" - - version: "8.2" - composer-args: "--ignore-platform-req=php" - - version: "8.3" - composer-args: "--ignore-platform-req=php" - prefer-lowest: ["", "--prefer-lowest"] - - name: Unit Tests - PHP ${{ matrix.php.version }} ${{ matrix.prefer-lowest }} - - steps: - - uses: actions/checkout@v2 - - - name: Install PHP - uses: shivammathur/setup-php@v2 - with: - php-version: ${{ matrix.php.version }} - # extensions: intl #optional - # ini-values: "post_max_size=256M" #optional - - - name: Validate composer.json and composer.lock - run: composer validate --strict - - - name: Cache Composer packages - id: composer-cache - uses: actions/cache@v2 - with: - path: vendor - key: ${{ runner.os }}-php-${{ hashFiles('**/composer.lock') }} - restore-keys: | - ${{ runner.os }}-php- - - - name: Install dependencies - run: composer update --prefer-dist --no-progress ${{ matrix.prefer-lowest }} ${{ matrix.php.composer-args }} - - - name: Run test suite - run: composer run-script test