11on : pull_request
2- name : Review
2+ name : PR Review
33jobs :
44 changelog :
55 runs-on : ubuntu-latest
@@ -18,65 +18,144 @@ jobs:
1818 - name : Check that changelog has been updated.
1919 run : git diff --exit-code origin/${{ github.base_ref }} -- CHANGELOG.md && exit 1 || exit 0
2020
21- validate-composer-files :
22- name : Validate composer
23- runs-on : ubuntu-latest
24- steps :
25- - uses : actions/checkout@v4
26- - name : Validate composer files
27- run : |
28- # Note that we don't use the --strict flag on validate due to the
29- # package drupal/config_entity_revisions 2.0.x-dev being considered a
30- # version cf.
31- # https://getcomposer.org/doc/articles/versions.md#branches
32- docker compose run --rm php composer validate composer.json
33- - name : Check that composer file is normalized
34- run : |
35- docker compose run --rm php composer install
36- docker compose run --rm php composer normalize --dry-run
37-
3821 test-composer-files :
39- name : Test composer files
22+ name : Validate composer
4023 runs-on : ubuntu-latest
4124 strategy :
4225 matrix :
26+ php-versions : [ '8.1' ]
4327 dependency-version : [ prefer-lowest, prefer-stable ]
4428 steps :
45- - uses : actions/checkout@v4
46- - name : Check that dependencies resolve.
29+ - uses : actions/checkout@master
30+ - name : Setup PHP, with composer and extensions
31+ uses : shivammathur/setup-php@v2
32+ with :
33+ php-version : ${{ matrix.php-versions }}
34+ extensions : json
35+ coverage : none
36+ tools : composer:v2
37+ # https://github.com/shivammathur/setup-php#cache-composer-dependencies
38+ - name : Get composer cache directory
39+ id : composer-cache
40+ run : echo "::set-output name=dir::$(composer config cache-files-dir)"
41+ - name : Cache dependencies
42+ uses : actions/cache@v4
43+ with :
44+ path : ${{ steps.composer-cache.outputs.dir }}
45+ key : ${{ runner.os }}-composer-${{ hashFiles('**/composer.lock') }}
46+ restore-keys : ${{ runner.os }}-composer-
47+ - name : Validate composer files
4748 run : |
48- # Clean up before update (cf. https://www.drupal.org/project/simplesamlphp_auth/issues/3350773)
49- rm -fr vendor/
50- docker compose run --rm php composer update --${{ matrix.dependency-version }} --prefer-dist --no-interaction
49+ composer validate --strict composer.json
50+ # Check that dependencies resolve.
51+ composer update --${{ matrix.dependency-version }} --prefer-dist --no-interaction
5152
5253 php-coding-standards :
5354 name : PHP coding standards
5455 runs-on : ubuntu-latest
56+ strategy :
57+ matrix :
58+ php-versions : [ '8.1' ]
59+ dependency-version : [ prefer-lowest, prefer-stable ]
5560 steps :
56- - uses : actions/checkout@v4
61+ - uses : actions/checkout@master
62+ - name : Setup PHP, with composer and extensions
63+ uses : shivammathur/setup-php@v2
64+ with :
65+ php-version : ${{ matrix.php-versions }}
66+ extensions : json
67+ coverage : none
68+ tools : composer:v2
69+ # https://github.com/shivammathur/setup-php#cache-composer-dependencies
70+ - name : Get composer cache directory
71+ id : composer-cache
72+ run : echo "::set-output name=dir::$(composer config cache-files-dir)"
73+ - name : Cache dependencies
74+ uses : actions/cache@v2
75+ with :
76+ path : ${{ steps.composer-cache.outputs.dir }}
77+ key : ${{ runner.os }}-composer-${{ hashFiles('**/composer.lock') }}
78+ restore-keys : ${{ runner.os }}-composer-
5779 - name : Install Dependencies
5880 run : |
59- docker compose run --rm php composer install
81+ composer install --no-interaction --no-progress
6082 - name : PHPCS
6183 run : |
62- docker compose run --rm php composer coding-standards-check/phpcs
84+ composer coding-standards-check/phpcs
6385
6486 php-code-analysis :
6587 name : PHP code analysis
6688 runs-on : ubuntu-latest
89+ strategy :
90+ matrix :
91+ php-versions : [ '8.1' ]
92+ dependency-version : [ prefer-lowest, prefer-stable ]
6793 steps :
68- - uses : actions/checkout@v4
69- - name : Code analysis
94+ - uses : actions/checkout@master
95+ - name : Setup PHP, with composer and extensions
96+ uses : shivammathur/setup-php@v2
97+ with :
98+ php-version : ${{ matrix.php-versions }}
99+ extensions : json, gd
100+ coverage : none
101+ tools : composer:v2
102+ # https://github.com/shivammathur/setup-php#cache-composer-dependencies
103+ - name : Get composer cache directory
104+ id : composer-cache
105+ run : echo "::set-output name=dir::$(composer config cache-files-dir)"
106+ - name : Cache dependencies
107+ uses : actions/cache@v4
108+ with :
109+ path : ${{ steps.composer-cache.outputs.dir }}
110+ key : ${{ runner.os }}-composer-${{ hashFiles('**/composer.lock') }}
111+ restore-keys : ${{ runner.os }}-composer-
112+ - name : drupal-check
70113 run : |
71- ./scripts/code-analysis
114+ # We need a Drupal project to run drupal-check (cf. https://github.com/mglaman/drupal-check#usage)
115+ # Install Drupal
116+ composer --no-interaction create-project drupal/recommended-project:^9 --stability=dev drupal
117+ # Copy our module source code into the Drupal module folder.
118+ mkdir -p drupal/web/modules/contrib/os2forms_sync
119+ cp -r os2forms_sync.* composer.json src drupal/web/modules/contrib/os2forms_sync
120+ # Add our module as a composer repository.
121+ composer --no-interaction --working-dir=drupal config repositories.os2forms/os2forms_sync path web/modules/contrib/os2forms_sync
122+ # Restore Drupal composer repository.
123+ composer --no-interaction --working-dir=drupal config repositories.drupal composer https://packages.drupal.org/8
72124
73- coding-standards-markdown :
74- name : Markdown coding standards
125+ # Require our module.
126+ composer --no-interaction --working-dir=drupal require 'os2forms/os2forms_sync:*'
127+
128+ # Check code
129+ composer --no-interaction --working-dir=drupal require --dev drupal/core-dev
130+ cd drupal/web/modules/contrib/os2forms_sync
131+ # Remove our non-dev dependencies to prevent duplicated Drupal installation
132+ # PHP Fatal error: Cannot redeclare drupal_get_filename() (previously declared in /home/runner/work/os2forms_sync/os2forms_sync/drupal/web/modules/contrib/os2forms_sync/vendor/drupal/core/includes/bootstrap.inc:190) in /home/runner/work/os2forms_sync/os2forms_sync/drupal/web/core/includes/bootstrap.inc on line 190
133+ # Use sed to remove the "require" property in composer.json
134+ sed -i '/^\s*"require":/,/^\s*}/d' composer.json
135+ composer --no-interaction install
136+ composer code-analysis
137+
138+ markdown-coding-standards :
75139 runs-on : ubuntu-latest
140+ name : Markdown coding standards
76141 steps :
77142 - name : Checkout
78143 uses : actions/checkout@v4
79-
80- - name : Coding standards
81- run : |
82- docker compose run --rm markdownlint markdownlint '**/*.md'
144+ - name : Get yarn cache directory path
145+ id : yarn-cache-dir-path
146+ run : echo "::set-output name=dir::$(yarn cache dir)"
147+ - name : Cache yarn packages
148+ uses : actions/cache@v4
149+ id : yarn-cache
150+ with :
151+ path : ${{ steps.yarn-cache-dir-path.outputs.dir }}
152+ key : ${{ runner.os }}-yarn-${{ hashFiles('**/yarn.lock') }}
153+ restore-keys : |
154+ ${{ runner.os }}-yarn-
155+ - name : Yarn install
156+ uses : actions/setup-node@v2
157+ with :
158+ node-version : ' 22'
159+ - run : yarn install
160+ - name : coding-standards-check
161+ run : yarn coding-standards-check
0 commit comments