feature #3115 [Map][Google] Upgrade @googlemaps
/js-api-loader to ^2…
#1052
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Code Quality | |
on: | |
push: | |
paths-ignore: | |
- 'src/*/doc/**' | |
- 'src/**/*.md' | |
- 'ux.symfony.com/**' | |
- '.github/workflows/app-tests.yaml' | |
pull_request: | |
paths-ignore: | |
- 'src/*/doc/**' | |
- 'src/**/*.md' | |
- 'ux.symfony.com/**' | |
- '.github/workflows/app-tests.yaml' | |
concurrency: | |
group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }} | |
cancel-in-progress: true | |
jobs: | |
validate-packages: | |
name: Validate packages definition | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Check all composer.json have label "symfony-ux" | |
if: always() | |
run: | | |
for file in $(find src/ -mindepth 2 -type f -name composer.json); do | |
if ! jq -e '.keywords | index("symfony-ux")' "$file" > /dev/null; then | |
echo "File $file does not have the keyword 'symfony-ux' in its composer.json"; | |
exit 1; | |
fi | |
done | |
- name: Check all composer.json have license "MIT" | |
if: always() | |
run: | | |
for file in $(find src/ -mindepth 2 -type f -name composer.json); do | |
if ! jq -e '.license == "MIT"' "$file" > /dev/null; then | |
echo "File $file does not have the license 'MIT' in its composer.json"; | |
exit 1; | |
fi | |
done | |
- name: Check all composer.json have minimum-stability "dev" | |
if: always() | |
run: | | |
for file in $(find src/ -mindepth 2 -type f -name composer.json); do | |
if ! jq -e '."minimum-stability" == "dev"' "$file" > /dev/null; then | |
echo "File $file does not have the minimum-stability 'dev' in its composer.json"; | |
exit 1; | |
fi | |
done | |
- name: Check all composer.json have dependency to "php" >=8.2 | |
if: always() | |
run: | | |
for file in $(find src/ -mindepth 2 -type f -name composer.json); do | |
if ! jq -e '.require.php | test(">=8.2")' "$file" > /dev/null; then | |
echo "File $file does not have the dependency 'php' >=8.2 in its composer.json"; | |
exit 1; | |
fi | |
done | |
- name: Check all package.json have license "MIT" | |
if: always() | |
run: | | |
for file in $(find src/ -mindepth 2 -type f -name package.json -not -path "*/tests/*"); do | |
if ! jq -e '.license == "MIT"' "$file" > /dev/null; then | |
echo "File $file does not have the license 'MIT' in its package.json"; | |
exit 1; | |
fi | |
done | |
- name: Check all package.json have keywords including "symfony-ux" | |
if: always() | |
run: | | |
for file in $(find src/ -mindepth 2 -type f -name package.json -not -path "*/tests/*"); do | |
if ! jq -e '.keywords | index("symfony-ux")' "$file" > /dev/null; then | |
echo "File $file does not have the keyword 'symfony-ux' in its package.json"; | |
exit 1; | |
fi | |
done | |
- name: Check all package.json have type "module" | |
if: always() | |
run: | | |
for file in $(find src/ -mindepth 2 -type f -name package.json -not -path "*/tests/*"); do | |
if ! jq -e '.type == "module"' "$file" > /dev/null; then | |
echo "File $file does not have the type 'module' in its package.json"; | |
exit 1; | |
fi | |
done | |
- name: Check all package.json have files '["dist"]' | |
if: always() | |
run: | | |
for file in $(find src/ -mindepth 2 -type f -name package.json -not -path "*/tests/*"); do | |
if ! jq -e '.files | index("dist")' "$file" > /dev/null; then | |
echo "File $file does not have the files 'dist' in its package.json"; | |
exit 1; | |
fi | |
done | |
- name: Check all package.json peerDependencies are present in devDependencies and importmap to the exact same version | |
if: always() | |
run: | | |
for file in $(find src/ -mindepth 2 -type f -name package.json -not -path "*/tests/*"); do | |
peerDependencies=$(jq -r '.peerDependencies | keys[]' "$file") | |
for peerDependency in $peerDependencies; do | |
peerDependencyVersion=$(jq -r --arg dep "$peerDependency" '.peerDependencies[$dep]' "$file") | |
importmapVersion=$(jq -r ".symfony.importmap.\"$peerDependency\" | if type == \"string\" then . else .version end" "$file") | |
if [ "$importmapVersion" == null ]; then | |
echo "File $file does not have the peerDependency '$peerDependency' in its symfony.importmap, skipping version check"; | |
continue | |
fi | |
if [ "$peerDependencyVersion" != "$importmapVersion" ]; then | |
echo "File $file has a mismatch for $peerDependency: peerDependency version is '$peerDependencyVersion' but symfony.importmap version is '$importmapVersion'"; | |
exit 1; | |
fi | |
done | |
done | |
coding-style-js: | |
name: JavaScript Coding Style | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- run: npm i -g corepack && corepack enable | |
- uses: actions/setup-node@v4 | |
with: | |
node-version-file: '.nvmrc' | |
cache: 'pnpm' | |
- name: Install root JS dependencies | |
run: pnpm install --frozen-lockfile | |
- run: pnpm run ci | |
phpstan: | |
name: PHPStan | |
runs-on: ubuntu-latest | |
strategy: | |
fail-fast: false | |
matrix: | |
php-version: ['8.2'] | |
dependency-version: [''] | |
symfony-version: [''] | |
minimum-stability: ['stable'] | |
include: | |
# dev packages (probably not needed to have multiple such jobs) | |
- minimum-stability: 'dev' | |
php-version: 8.5 | |
# lowest deps | |
- dependency-version: 'lowest' | |
# LTS version of Symfony | |
- symfony-version: '6.4.*' | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- name: Configure environment | |
run: | | |
echo COLUMNS=120 >> $GITHUB_ENV | |
echo COMPOSER_MIN_STAB='composer config minimum-stability ${{ matrix.minimum-stability || 'stable' }} --ansi' >> $GITHUB_ENV | |
echo COMPOSER_UP='composer update ${{ matrix.dependency-version == 'lowest' && '--prefer-lowest' || '' }} --no-progress --no-interaction --ansi' >> $GITHUB_ENV | |
echo PHPUNIT_INSTALL='vendor/bin/simple-phpunit install' >> $GITHUB_ENV | |
echo PHPSTAN='vendor/bin/phpstan' >> $GITHUB_ENV | |
# TODO: Only Turbo has PHPStan configuration, let's improve this later :) | |
PACKAGES=Turbo | |
#PACKAGES=$(find src/ -mindepth 2 -type f -name composer.json -printf '%h\n' | sed 's/^src\///' | sort | tr '\n' ' ') | |
echo "Packages: $PACKAGES" | |
echo "PACKAGES=$PACKAGES" >> $GITHUB_ENV | |
- name: Setup PHP | |
uses: shivammathur/setup-php@v2 | |
with: | |
php-version: '8.2' | |
tools: flex | |
- name: Get composer cache directory | |
id: composer-cache | |
run: | | |
echo "dir=$(composer config cache-files-dir)" >> $GITHUB_OUTPUT | |
- name: Cache packages dependencies | |
uses: actions/cache@v4 | |
with: | |
path: ${{ steps.composer-cache.outputs.dir }} | |
key: ${{ runner.os }}-composer-packages-${{ matrix.php-version }}-${{ matrix.dependency-version }}-${{ matrix.symfony-version }}-${{ matrix.minimum-stability }}-${{ hashFiles('src/**/composer.json') }} | |
restore-keys: | | |
${{ runner.os }}-composer-packages-${{ matrix.php-version }}-${{ matrix.dependency-version }}-${{ matrix.symfony-version }}-${{ matrix.minimum-stability }} | |
- name: Install root dependencies | |
uses: ramsey/composer-install@v3 | |
with: | |
working-directory: ${{ github.workspace }} | |
- name: Build root packages | |
run: php .github/build-packages.php | |
- name: Run PHPStan on packages | |
run: | | |
source .github/workflows/.utils.sh | |
echo "$PACKAGES" | xargs -n1 | parallel -j +3 "_run_task {} '(cd src/{} && $COMPOSER_MIN_STAB && $COMPOSER_UP && $PHPUNIT_INSTALL && $PHPSTAN)'" |