diff --git a/.github/workflows/assets.yml b/.github/workflows/assets.yml new file mode 100644 index 00000000..6d058166 --- /dev/null +++ b/.github/workflows/assets.yml @@ -0,0 +1,31 @@ +name: 'Assets' + +on: + create: + pull_request: + push: + branches: + - '[0-9]+.[0-9]+.x' + - 'refs/pull/*' + +jobs: + webpack: + name: 'Build Assets' + + runs-on: "ubuntu-latest" + + steps: + - name: "Checkout" + uses: "actions/checkout@v2.4.0" + + - name: "Using Node" + uses: "actions/setup-node@v2.5.1" + + - name: "Install dependencies" + run: "yarn" + + - name: "Build" + run: "yarn build" + + - name: "Check size" + run: "yarn size" diff --git a/.github/workflows/automatic-merge.yml b/.github/workflows/automatic-merge.yml index 06643227..0ff7a970 100644 --- a/.github/workflows/automatic-merge.yml +++ b/.github/workflows/automatic-merge.yml @@ -1,17 +1,11 @@ ---- name: "Automatic Merge" on: schedule: - - cron: '0 * * * *' + - cron: '0 */2 * * *' jobs: - merge: - name: "Merge Pull Requests" - runs-on: ubuntu-latest - - steps: - - name: "Merge" - uses: "nucleos/auto-merge-action@1.2.0" - env: - "GITHUB_TOKEN": ${{ secrets.ORGANIZATION_ADMIN_TOKEN }} + run: + uses: "nucleos/actions/.github/workflows/automatic-merge.yml@main" + secrets: + GITHUB_ADMIN_TOKEN: "${{ secrets.ORGANIZATION_ADMIN_TOKEN }}" diff --git a/.github/workflows/automatic-release.yml b/.github/workflows/automatic-release.yml index 84c0e3a3..a847155e 100644 --- a/.github/workflows/automatic-release.yml +++ b/.github/workflows/automatic-release.yml @@ -6,60 +6,12 @@ on: - "closed" jobs: - release: - name: "GIT tag, release & create merge-up PR" - runs-on: ubuntu-latest + run: + uses: "nucleos/actions/.github/workflows/automatic-release.yml@main" + secrets: + GIT_AUTHOR_NAME: "${{ secrets.GIT_AUTHOR_NAME }}" + GIT_AUTHOR_EMAIL: "${{ secrets.GIT_AUTHOR_EMAIL }}" + GITHUB_TOKEN: "${{ secrets.GITHUB_TOKEN }}" + GITHUB_ADMIN_TOKEN: "${{ secrets.ORGANIZATION_ADMIN_TOKEN }}" + SIGNING_SECRET_KEY: "${{ secrets.SIGNING_SECRET_KEY }}" - steps: - - name: "Checkout" - uses: "actions/checkout@v2" - - - name: "Release" - uses: "laminas/automatic-releases@1.13.0" - with: - command-name: "laminas:automatic-releases:release" - env: - "GITHUB_TOKEN": ${{ secrets.ORGANIZATION_ADMIN_TOKEN }} - "SIGNING_SECRET_KEY": ${{ secrets.SIGNING_SECRET_KEY }} - "GIT_AUTHOR_NAME": ${{ secrets.GIT_AUTHOR_NAME }} - "GIT_AUTHOR_EMAIL": ${{ secrets.GIT_AUTHOR_EMAIL }} - - - name: "Create Merge-Up Pull Request" - uses: "laminas/automatic-releases@1.13.0" - with: - command-name: "laminas:automatic-releases:create-merge-up-pull-request" - env: - "GITHUB_TOKEN": ${{ secrets.GITHUB_TOKEN }} - "SIGNING_SECRET_KEY": ${{ secrets.SIGNING_SECRET_KEY }} - "GIT_AUTHOR_NAME": ${{ secrets.GIT_AUTHOR_NAME }} - "GIT_AUTHOR_EMAIL": ${{ secrets.GIT_AUTHOR_EMAIL }} - - - name: "Create and/or Switch to new Release Branch" - uses: "laminas/automatic-releases@1.13.0" - with: - command-name: "laminas:automatic-releases:switch-default-branch-to-next-minor" - env: - "GITHUB_TOKEN": ${{ secrets.ORGANIZATION_ADMIN_TOKEN }} - "SIGNING_SECRET_KEY": ${{ secrets.SIGNING_SECRET_KEY }} - "GIT_AUTHOR_NAME": ${{ secrets.GIT_AUTHOR_NAME }} - "GIT_AUTHOR_EMAIL": ${{ secrets.GIT_AUTHOR_EMAIL }} - - - name: "Bump Changelog Version On Originating Release Branch" - uses: "laminas/automatic-releases@1.13.0" - with: - command-name: "laminas:automatic-releases:bump-changelog" - env: - "GITHUB_TOKEN": ${{ secrets.GITHUB_TOKEN }} - "SIGNING_SECRET_KEY": ${{ secrets.SIGNING_SECRET_KEY }} - "GIT_AUTHOR_NAME": ${{ secrets.GIT_AUTHOR_NAME }} - "GIT_AUTHOR_EMAIL": ${{ secrets.GIT_AUTHOR_EMAIL }} - - - name: "Create new milestones" - uses: "laminas/automatic-releases@1.13.0" - with: - command-name: "laminas:automatic-releases:create-milestones" - env: - "GITHUB_TOKEN": ${{ secrets.GITHUB_TOKEN }} - "SIGNING_SECRET_KEY": ${{ secrets.SIGNING_SECRET_KEY }} - "GIT_AUTHOR_NAME": ${{ secrets.GIT_AUTHOR_NAME }} - "GIT_AUTHOR_EMAIL": ${{ secrets.GIT_AUTHOR_EMAIL }} diff --git a/.github/workflows/continuous-integration.yml b/.github/workflows/continuous-integration.yml index 9d9039cd..10cc0df2 100644 --- a/.github/workflows/continuous-integration.yml +++ b/.github/workflows/continuous-integration.yml @@ -5,253 +5,14 @@ on: pull_request: push: branches: - - "*.x" - tags: - - "**" + - '[0-9]+.[0-9]+.x' + - 'refs/pull/*' jobs: - webpack: - name: "Webpack build" - - runs-on: ubuntu-latest - - steps: - - name: "Checkout" - uses: actions/checkout@v2.3.4 - - - name: "Using Node" - uses: actions/setup-node@v2.5.1 - - - name: "Install dependencies" - run: | - yarn - - - name: "Build" - run: yarn build - - - name: "Check size" - run: | - yarn size - - coding-standards: - name: "Coding Standards" - - runs-on: ubuntu-latest - - strategy: - matrix: - php-version: - - 8.1 - - steps: - - name: "Checkout" - uses: actions/checkout@v2.4.0 - - - name: "Install PHP with extensions" - uses: shivammathur/setup-php@2.16.0 - with: - coverage: none - extensions: "mbstring" - php-version: ${{ matrix.php-version }} - - - name: "Cache dependencies installed with composer" - uses: actions/cache@v2.1.7 - with: - path: ~/.composer/cache - key: php${{ matrix.php-version }}-composer- - restore-keys: | - php${{ matrix.php-version }}-composer- - - - name: "Install locked dependencies with composer" - run: composer install --no-interaction --no-progress - - - name: "Run composer lint" - run: make lint-composer - - - name: "Create cache directory for friendsofphp/php-cs-fixer" - run: mkdir -p .build/php-cs-fixer - - - name: "Cache cache directory for friendsofphp/php-cs-fixer" - uses: actions/cache@v2.1.7 - with: - path: .build/php-cs-fixer - key: php${{ matrix.php-version }}-php-cs-fixer- - restore-keys: | - php${{ matrix.php-version }}-php-cs-fixer- - - - name: "Run friendsofphp/php-cs-fixer" - env: - PHP_CS_FIXER_IGNORE_ENV: 1 - run: make cs - - static-code-analysis: - name: "Static Code Analysis" - - runs-on: ubuntu-latest - - strategy: - matrix: - php-version: - - 8.1 - - steps: - - name: "Checkout" - uses: actions/checkout@v2.4.0 - - - name: "Install PHP with extensions" - uses: shivammathur/setup-php@2.16.0 - with: - coverage: none - extensions: "mbstring" - php-version: ${{ matrix.php-version }} - - - name: "Cache dependencies installed with composer" - uses: actions/cache@v2.1.7 - with: - path: ~/.composer/cache - key: ${{ matrix.php-version }}-composer- - restore-keys: | - ${{ matrix.php-version }}-composer- - - - name: "Install locked dependencies with composer" - run: composer install --no-interaction --no-progress - - - name: "Run phpstan/phpstan" - run: make phpstan - - - name: "Run psalm" - run: make psalm - - - name: "Run phpmd" - run: make phpmd - - tests: - name: "Test (PHP ${{ matrix.php-version }}, symfony ${{ matrix.symfony }}, ${{ matrix.dependencies }})" - - runs-on: ubuntu-latest - - strategy: - matrix: - php-version: - - 8.0 - - 8.1 - - dependencies: - - lowest - - highest - - symfony: - - 5.4 - - 6.0 - - steps: - - name: "Checkout" - uses: actions/checkout@v2.4.0 - - - name: "Install PHP with extensions" - uses: shivammathur/setup-php@2.16.0 - with: - coverage: none - extensions: "mbstring" - php-version: ${{ matrix.php-version }} - - - name: 'Install Symfony Flex' - run: | - composer global require --prefer-dist --no-progress --ansi symfony/flex - - - name: "Cache dependencies installed with composer" - uses: actions/cache@v2.1.7 - with: - path: ~/.composer/cache - key: php${{ matrix.php-version }}-composer- - restore-keys: | - php${{ matrix.php-version }}-composer-${{ matrix.dependencies }}- - - - name: "Lock symfony version" - run: composer config extra.symfony.require "${{ matrix.symfony }}.*" - - - name: "Install lowest dependencies with composer" - if: matrix.dependencies == 'lowest' - run: composer update --no-interaction --no-progress --prefer-lowest - - - name: "Install highest dependencies with composer" - if: matrix.dependencies == 'highest' - run: composer update --no-interaction --no-progress - - - name: "Run tests with phpunit/phpunit" - run: make test - - code-coverage: - name: "Code Coverage" - - runs-on: ubuntu-latest - - strategy: - matrix: - php-version: - - 8.1 - - steps: - - name: "Checkout" - uses: actions/checkout@v2.4.0 - - - name: "Install PHP with extensions" - uses: shivammathur/setup-php@2.16.0 - with: - coverage: pcov - extensions: "mbstring" - php-version: ${{ matrix.php-version }} - - - name: "Cache dependencies installed with composer" - uses: actions/cache@v2.1.7 - with: - path: ~/.composer/cache - key: php${{ matrix.php-version }}-composer- - restore-keys: | - php${{ matrix.php-version }}-composer- - - - name: "Install locked dependencies with composer" - run: composer install --no-interaction --no-progress - - - name: "Collect code coverage with pcov and phpunit/phpunit" - run: make coverage - - - name: "Send code coverage report to Codecov.io" - env: - CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }} - run: bash <(curl -s https://codecov.io/bash) - - mutation-tests: - name: "Mutation Tests" - - runs-on: ubuntu-latest - - strategy: - matrix: - php-version: - - 8.0 - - steps: - - name: "Checkout" - uses: actions/checkout@v2.4.0 - - - name: "Install PHP with extensions" - uses: shivammathur/setup-php@2.16.0 - with: - coverage: pcov - extensions: "mbstring" - php-version: ${{ matrix.php-version }} - - - name: "Cache dependencies installed with composer" - uses: actions/cache@v2.1.7 - with: - path: ~/.composer/cache - key: php${{ matrix.php-version }}-composer- - restore-keys: | - php${{ matrix.php-version }}-composer- - - - name: "Install locked dependencies with composer" - run: composer install --no-interaction --no-progress - - - name: "Run mutation tests with pcov and infection/infection" - run: make infection + run: + uses: "nucleos/actions/.github/workflows/continuous-integration.yml@main" + with: + PHP_EXTENSIONS: "mbstring" + SYMFONY_KERNEL: "Nucleos\\GDPRBundle\\Tests\\App\\AppKernel" + secrets: + CODECOV_TOKEN: "${{ secrets.CODECOV_TOKEN }}" diff --git a/composer.json b/composer.json index c4c3dff2..1cb9d1c1 100644 --- a/composer.json +++ b/composer.json @@ -56,7 +56,9 @@ }, "require-dev": { "ergebnis/composer-normalize": "^2.0.1", - "symfony/browser-kit": "^5.4 || ^6.0" + "symfony/browser-kit": "^5.4 || ^6.0", + "symfony/console": "^5.4 || ^6.0", + "symfony/yaml": "^5.4 || ^6.0" }, "suggest": { "nucleos/shariff-bundle": "If you need a GDPR conform social media widget integration"