Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Implement #194: remove latest composer deps from default generated pipelines #197

Open
wants to merge 1 commit into
base: 2.0.x
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 10 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -119,6 +119,15 @@ The "job" element will have the following elements, but is not restricted to the
}
```

Note: Configuring jobs to run with `latest` composer dependencies is not endorsed.
The default generated matrix will contain entries for `lowest` and `locked` dependencies.
This action operates under the assumption that you do your due diligence, and keep `composer.json`
and `composer.lock` updated.
By operating on locked dependencies, you will be able to pinpoint the exact dependency
change that caused a test regression.
We endorse regularly updating dependencies with automation like [renovate](https://github.com/renovatebot) or
[dependabot](https://github.com/dependabot).
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

what renovate/dependabot config entry would be required to have these updates?

besides this, it seems that lockfile updates do not properly handle latest. So we might want to have an additional action to be registered - or we go the way that we do only run latest for auto-contributions such as dependabot/renovate.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The lockfile maintenance is as if you run composer update on the PHP version specified in config.platform.php, so we won't get updates that require a higher minimum PHP version.


## Configuration

The package can include a configuration file in its root, `.laminas-ci.json`, which can provide the following:
Expand Down Expand Up @@ -206,7 +215,7 @@ The easiest way to exclude a single job is via the `name` parameter:
{
"exclude": [
{
"name": "PHPUnit on PHP 8.0 with latest dependencies"
"name": "PHPUnit on PHP 8.0 with lowest dependencies"
}
]
}
Expand Down
10 changes: 5 additions & 5 deletions laminas-ci.schema.json
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@
],
"exclude": [
{
"name": "Codeception [8.2, latest]"
"name": "Codeception [8.2, lowest]"
}
],
"ignore_php_platform_requirements": {
Expand Down Expand Up @@ -281,7 +281,7 @@
"examples": [
[
{
"name": "Codeception [8.2, latest]"
"name": "Codeception [8.2, lowest]"
}
]
],
Expand All @@ -290,7 +290,7 @@
"title": "The job description to be excluded",
"examples": [
{
"name": "Codeception [8.2, latest]"
"name": "Codeception [8.2, lowest]"
}
],
"required": [
Expand All @@ -303,7 +303,7 @@
"description": "The name of the job to be excluded. Must be an exact match.",
"minLength": 1,
"examples": [
"Codeception [8.2, latest]"
"Codeception [8.2, lowest]"
]
}
},
Expand Down Expand Up @@ -368,7 +368,7 @@
"type": "string",
"enum": ["latest", "lowest", "locked", "*"],
"title": "The composer dependencies to be used",
"description": "The composer dependencies to be used. If the wildcard `*` is passed, a list of checks is created containing each `lowest` and `latest` composer dependencies.",
"description": "The composer dependencies to be used. If the wildcard `*` is passed, a list of checks is created containing each `lowest` and `locked` composer dependencies.",
"default": "locked"
},
"command": {
Expand Down
20 changes: 4 additions & 16 deletions src/config/app.ts
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,6 @@ export const ACTION = 'laminas/laminas-continuous-integration-action@v1';
export enum ComposerDependencySet {
LOWEST = 'lowest',
LOCKED = 'locked',
LATEST = 'latest',
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I would not remove this. It should be possible to generate Jobs with latest, but that wont be the default tho besides opt-in.

I still see this being necessary as something has to check latest, just not every PR.

}

export function gatherVersions(composerJson: ComposerJson): InstallablePhpVersionType[] {
Expand Down Expand Up @@ -111,10 +110,10 @@ function discoverPhpVersionsForJob(job: JobDefinitionFromFile, config: Config):

function discoverComposerDependencySetsForJob(job: JobDefinitionFromFile, config: Config): ComposerDependencySet[] {
const dependencySetFromConfig = job.dependencies
?? (config.lockedDependenciesExists ? ComposerDependencySet.LOCKED : ComposerDependencySet.LATEST);
?? (config.lockedDependenciesExists ? ComposerDependencySet.LOCKED : ComposerDependencySet.LOWEST);
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

not sure if this makes sense at all. if there is no lock-file, latest would be installed in projects as well. since we are not affected in the laminas components (as we do have lockfiles), I'd say there is no need to touch this.


if (isAnyComposerDependencySet(dependencySetFromConfig)) {
return [ ComposerDependencySet.LOWEST, ComposerDependencySet.LATEST ];
return [ ComposerDependencySet.LOWEST ];
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I wonder if we should keep this as it is explicitly required from a manually written config entry. If some component does not need/want latest, they can remove that from their config.

}

return [ dependencySetFromConfig ];
Expand Down Expand Up @@ -295,7 +294,7 @@ function createJobsForTool(
if (tool.executionType === ToolExecutionType.STATIC) {
const lockedOrLatestDependencySet: ComposerDependencySet = config.lockedDependenciesExists
? ComposerDependencySet.LOCKED
: ComposerDependencySet.LATEST;
: ComposerDependencySet.LOWEST;
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

same as above. If there is no lockfile, having lowest would be super weird imho.


return [
createJob(
Expand Down Expand Up @@ -343,18 +342,7 @@ function createJobsForTool(
config.ignorePhpPlatformRequirements[version] ?? false,
config.additionalComposerArguments,
beforeScript,
), tool) as JobFromTool,

createJob(tool.name, createJobDefinition(
tool.command,
version,
ComposerDependencySet.LATEST,
config.phpExtensions,
config.phpIni,
config.ignorePhpPlatformRequirements[version] ?? false,
config.additionalComposerArguments,
beforeScript,
), tool) as JobFromTool,
), tool) as JobFromTool
));
}

Expand Down
4 changes: 2 additions & 2 deletions tests/code-check-codeception-dist/matrix.json
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
{
"include": [
{
"name": "Codeception [8.2, latest]",
"job": "{\"command\":\"./vendor/bin/codecept run\",\"php\":\"8.2\",\"extensions\":[],\"ini\":[],\"dependencies\":\"latest\",\"ignore_platform_reqs_8\":false,\"ignore_php_platform_requirement\":false,\"additional_composer_arguments\":[],\"before_script\":[]}",
"name": "Codeception [8.2, lowest]",
"job": "{\"command\":\"./vendor/bin/codecept run\",\"php\":\"8.2\",\"extensions\":[],\"ini\":[],\"dependencies\":\"lowest\",\"ignore_platform_reqs_8\":false,\"ignore_php_platform_requirement\":false,\"additional_composer_arguments\":[],\"before_script\":[]}",
"operatingSystem": "ubuntu-latest",
"action": "laminas/laminas-continuous-integration-action@v1"
}
Expand Down
4 changes: 2 additions & 2 deletions tests/code-check-codeception-nodist/matrix.json
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
{
"include": [
{
"name": "Codeception [8.2, latest]",
"job": "{\"command\":\"./vendor/bin/codecept run\",\"php\":\"8.2\",\"extensions\":[],\"ini\":[],\"dependencies\":\"latest\",\"ignore_platform_reqs_8\":false,\"ignore_php_platform_requirement\":false,\"additional_composer_arguments\":[],\"before_script\":[]}",
"name": "Codeception [8.2, lowest]",
"job": "{\"command\":\"./vendor/bin/codecept run\",\"php\":\"8.2\",\"extensions\":[],\"ini\":[],\"dependencies\":\"lowest\",\"ignore_platform_reqs_8\":false,\"ignore_php_platform_requirement\":false,\"additional_composer_arguments\":[],\"before_script\":[]}",
"operatingSystem": "ubuntu-latest",
"action": "laminas/laminas-continuous-integration-action@v1"
}
Expand Down
4 changes: 2 additions & 2 deletions tests/code-check-composer-require-checker/matrix.json
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
{
"include": [
{
"name": "Composer Require Checker [8.2, latest]",
"job": "{\"command\":\"./vendor/bin/composer-require-checker check --config-file=composer-require-checker.json -n -v composer.json\",\"php\":\"8.2\",\"extensions\":[],\"ini\":[],\"dependencies\":\"latest\",\"ignore_platform_reqs_8\":false,\"ignore_php_platform_requirement\":false,\"additional_composer_arguments\":[],\"before_script\":[]}",
"name": "Composer Require Checker [8.2, lowest]",
"job": "{\"command\":\"./vendor/bin/composer-require-checker check --config-file=composer-require-checker.json -n -v composer.json\",\"php\":\"8.2\",\"extensions\":[],\"ini\":[],\"dependencies\":\"lowest\",\"ignore_platform_reqs_8\":false,\"ignore_php_platform_requirement\":false,\"additional_composer_arguments\":[],\"before_script\":[]}",
"operatingSystem": "ubuntu-latest",
"action": "laminas/laminas-continuous-integration-action@v1"
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,9 +6,6 @@
},
{
"name": "PHPUnit on PHP 8.2 with locked dependencies"
},
{
"name": "PHPUnit on PHP 8.2 with latest dependencies"
}
]
}
3 changes: 0 additions & 3 deletions tests/code-check-exclusion-via-config/.laminas-ci.json
Original file line number Diff line number Diff line change
Expand Up @@ -6,9 +6,6 @@
},
{
"name": "PHPUnit [8.2, locked]"
},
{
"name": "PHPUnit [8.2, latest]"
}
]
}
4 changes: 2 additions & 2 deletions tests/code-check-infection-dist/matrix.json
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
{
"include": [
{
"name": "Infection [8.2, latest]",
"job": "{\"command\":\"./vendor/bin/infection\",\"php\":\"8.2\",\"extensions\":[],\"ini\":[],\"dependencies\":\"latest\",\"ignore_platform_reqs_8\":false,\"ignore_php_platform_requirement\":false,\"additional_composer_arguments\":[],\"before_script\":[]}",
"name": "Infection [8.2, lowest]",
"job": "{\"command\":\"./vendor/bin/infection\",\"php\":\"8.2\",\"extensions\":[],\"ini\":[],\"dependencies\":\"lowest\",\"ignore_platform_reqs_8\":false,\"ignore_php_platform_requirement\":false,\"additional_composer_arguments\":[],\"before_script\":[]}",
"operatingSystem": "ubuntu-latest",
"action": "laminas/laminas-continuous-integration-action@v1"
}
Expand Down
4 changes: 2 additions & 2 deletions tests/code-check-infection-nodist/matrix.json
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
{
"include": [
{
"name": "Infection [8.2, latest]",
"job": "{\"command\":\"./vendor/bin/infection\",\"php\":\"8.2\",\"extensions\":[],\"ini\":[],\"dependencies\":\"latest\",\"ignore_platform_reqs_8\":false,\"ignore_php_platform_requirement\":false,\"additional_composer_arguments\":[],\"before_script\":[]}",
"name": "Infection [8.2, lowest]",
"job": "{\"command\":\"./vendor/bin/infection\",\"php\":\"8.2\",\"extensions\":[],\"ini\":[],\"dependencies\":\"lowest\",\"ignore_platform_reqs_8\":false,\"ignore_php_platform_requirement\":false,\"additional_composer_arguments\":[],\"before_script\":[]}",
"operatingSystem": "ubuntu-latest",
"action": "laminas/laminas-continuous-integration-action@v1"
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
{
"include": [
{
"name": "Infection [8.1, latest]",
"job": "{\"command\":\"./vendor/bin/roave-infection-static-analysis-plugin\",\"php\":\"8.1\",\"extensions\":[],\"ini\":[],\"dependencies\":\"latest\",\"ignore_platform_reqs_8\":false,\"ignore_php_platform_requirement\":false,\"additional_composer_arguments\":[],\"before_script\":[]}",
"name": "Infection [8.1, lowest]",
"job": "{\"command\":\"./vendor/bin/roave-infection-static-analysis-plugin\",\"php\":\"8.1\",\"extensions\":[],\"ini\":[],\"dependencies\":\"lowest\",\"ignore_platform_reqs_8\":false,\"ignore_php_platform_requirement\":false,\"additional_composer_arguments\":[],\"before_script\":[]}",
"operatingSystem": "ubuntu-latest",
"action": "laminas/laminas-continuous-integration-action@v1"
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
{
"include": [
{
"name": "Infection [8.1, latest]",
"job": "{\"command\":\"./vendor/bin/roave-infection-static-analysis-plugin\",\"php\":\"8.1\",\"extensions\":[],\"ini\":[],\"dependencies\":\"latest\",\"ignore_platform_reqs_8\":false,\"ignore_php_platform_requirement\":false,\"additional_composer_arguments\":[],\"before_script\":[]}",
"name": "Infection [8.1, lowest]",
"job": "{\"command\":\"./vendor/bin/roave-infection-static-analysis-plugin\",\"php\":\"8.1\",\"extensions\":[],\"ini\":[],\"dependencies\":\"lowest\",\"ignore_platform_reqs_8\":false,\"ignore_php_platform_requirement\":false,\"additional_composer_arguments\":[],\"before_script\":[]}",
"operatingSystem": "ubuntu-latest",
"action": "laminas/laminas-continuous-integration-action@v1"
}
Expand Down
4 changes: 2 additions & 2 deletions tests/code-check-phpbench/matrix.json
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
{
"include": [
{
"name": "PHPBench [8.2, latest]",
"job": "{\"command\":\"./vendor/bin/phpbench run --revs=2 --iterations=2 --report=aggregate\",\"php\":\"8.2\",\"extensions\":[],\"ini\":[],\"dependencies\":\"latest\",\"ignore_platform_reqs_8\":false,\"ignore_php_platform_requirement\":false,\"additional_composer_arguments\":[],\"before_script\":[]}",
"name": "PHPBench [8.2, lowest]",
"job": "{\"command\":\"./vendor/bin/phpbench run --revs=2 --iterations=2 --report=aggregate\",\"php\":\"8.2\",\"extensions\":[],\"ini\":[],\"dependencies\":\"lowest\",\"ignore_platform_reqs_8\":false,\"ignore_php_platform_requirement\":false,\"additional_composer_arguments\":[],\"before_script\":[]}",
"operatingSystem": "ubuntu-latest",
"action": "laminas/laminas-continuous-integration-action@v1"
}
Expand Down
4 changes: 2 additions & 2 deletions tests/code-check-phpcs-dist/matrix.json
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
{
"include": [
{
"name": "PHPCodeSniffer [8.2, latest]",
"job": "{\"command\":\"./vendor/bin/phpcs -q --report=checkstyle | cs2pr\",\"php\":\"8.2\",\"extensions\":[],\"ini\":[],\"dependencies\":\"latest\",\"ignore_platform_reqs_8\":false,\"ignore_php_platform_requirement\":false,\"additional_composer_arguments\":[],\"before_script\":[\"xmllint --schema vendor/squizlabs/php_codesniffer/phpcs.xsd phpcs.xml.dist\"]}",
"name": "PHPCodeSniffer [8.2, lowest]",
"job": "{\"command\":\"./vendor/bin/phpcs -q --report=checkstyle | cs2pr\",\"php\":\"8.2\",\"extensions\":[],\"ini\":[],\"dependencies\":\"lowest\",\"ignore_platform_reqs_8\":false,\"ignore_php_platform_requirement\":false,\"additional_composer_arguments\":[],\"before_script\":[\"xmllint --schema vendor/squizlabs/php_codesniffer/phpcs.xsd phpcs.xml.dist\"]}",
"operatingSystem": "ubuntu-latest",
"action": "laminas/laminas-continuous-integration-action@v1"
}
Expand Down
4 changes: 2 additions & 2 deletions tests/code-check-phpcs-nodist/matrix.json
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
{
"include": [
{
"name": "PHPCodeSniffer [8.2, latest]",
"job": "{\"command\":\"./vendor/bin/phpcs -q --report=checkstyle | cs2pr\",\"php\":\"8.2\",\"extensions\":[],\"ini\":[],\"dependencies\":\"latest\",\"ignore_platform_reqs_8\":false,\"ignore_php_platform_requirement\":false,\"additional_composer_arguments\":[],\"before_script\":[\"xmllint --schema vendor/squizlabs/php_codesniffer/phpcs.xsd phpcs.xml\"]}",
"name": "PHPCodeSniffer [8.2, lowest]",
"job": "{\"command\":\"./vendor/bin/phpcs -q --report=checkstyle | cs2pr\",\"php\":\"8.2\",\"extensions\":[],\"ini\":[],\"dependencies\":\"lowest\",\"ignore_platform_reqs_8\":false,\"ignore_php_platform_requirement\":false,\"additional_composer_arguments\":[],\"before_script\":[\"xmllint --schema vendor/squizlabs/php_codesniffer/phpcs.xsd phpcs.xml\"]}",
"operatingSystem": "ubuntu-latest",
"action": "laminas/laminas-continuous-integration-action@v1"
}
Expand Down
4 changes: 2 additions & 2 deletions tests/code-check-phpcsfixer-php-dist/matrix.json
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
{
"include": [
{
"name": "PHP CS Fixer [8.2, latest]",
"job": "{\"command\":\"./vendor/bin/php-cs-fixer fix -v --diff --dry-run\",\"php\":\"8.2\",\"extensions\":[],\"ini\":[],\"dependencies\":\"latest\",\"ignore_platform_reqs_8\":false,\"ignore_php_platform_requirement\":false,\"additional_composer_arguments\":[],\"before_script\":[]}",
"name": "PHP CS Fixer [8.2, lowest]",
"job": "{\"command\":\"./vendor/bin/php-cs-fixer fix -v --diff --dry-run\",\"php\":\"8.2\",\"extensions\":[],\"ini\":[],\"dependencies\":\"lowest\",\"ignore_platform_reqs_8\":false,\"ignore_php_platform_requirement\":false,\"additional_composer_arguments\":[],\"before_script\":[]}",
"operatingSystem": "ubuntu-latest",
"action": "laminas/laminas-continuous-integration-action@v1"
}
Expand Down
4 changes: 2 additions & 2 deletions tests/code-check-phpcsfixer-php/matrix.json
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
{
"include": [
{
"name": "PHP CS Fixer [8.2, latest]",
"job": "{\"command\":\"./vendor/bin/php-cs-fixer fix -v --diff --dry-run\",\"php\":\"8.2\",\"extensions\":[],\"ini\":[],\"dependencies\":\"latest\",\"ignore_platform_reqs_8\":false,\"ignore_php_platform_requirement\":false,\"additional_composer_arguments\":[],\"before_script\":[]}",
"name": "PHP CS Fixer [8.2, lowest]",
"job": "{\"command\":\"./vendor/bin/php-cs-fixer fix -v --diff --dry-run\",\"php\":\"8.2\",\"extensions\":[],\"ini\":[],\"dependencies\":\"lowest\",\"ignore_platform_reqs_8\":false,\"ignore_php_platform_requirement\":false,\"additional_composer_arguments\":[],\"before_script\":[]}",
"operatingSystem": "ubuntu-latest",
"action": "laminas/laminas-continuous-integration-action@v1"
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,12 +11,6 @@
"job": "{\"command\":\"./vendor/bin/phpunit\",\"php\":\"8.1\",\"extensions\":[],\"ini\":[],\"dependencies\":\"lowest\",\"ignore_platform_reqs_8\":false,\"ignore_php_platform_requirement\":false,\"additional_composer_arguments\":[],\"before_script\":[\"xmllint --schema vendor/phpunit/phpunit/phpunit.xsd phpunit.xml.dist\"]}",
"operatingSystem": "ubuntu-latest",
"action": "laminas/laminas-continuous-integration-action@v1"
},
{
"name": "PHPUnit [8.1, latest]",
"job": "{\"command\":\"./vendor/bin/phpunit\",\"php\":\"8.1\",\"extensions\":[],\"ini\":[],\"dependencies\":\"latest\",\"ignore_platform_reqs_8\":false,\"ignore_php_platform_requirement\":false,\"additional_composer_arguments\":[],\"before_script\":[\"xmllint --schema vendor/phpunit/phpunit/phpunit.xsd phpunit.xml.dist\"]}",
"operatingSystem": "ubuntu-latest",
"action": "laminas/laminas-continuous-integration-action@v1"
}
]
}
6 changes: 0 additions & 6 deletions tests/code-check-phpunit-dist/matrix.json
Original file line number Diff line number Diff line change
Expand Up @@ -11,12 +11,6 @@
"job": "{\"command\":\"./vendor/bin/phpunit\",\"php\":\"8.1\",\"extensions\":[],\"ini\":[],\"dependencies\":\"lowest\",\"ignore_platform_reqs_8\":false,\"ignore_php_platform_requirement\":false,\"additional_composer_arguments\":[],\"before_script\":[\"xmllint --schema vendor/phpunit/phpunit/phpunit.xsd phpunit.xml.dist\"]}",
"operatingSystem": "ubuntu-latest",
"action": "laminas/laminas-continuous-integration-action@v1"
},
{
"name": "PHPUnit [8.1, latest]",
"job": "{\"command\":\"./vendor/bin/phpunit\",\"php\":\"8.1\",\"extensions\":[],\"ini\":[],\"dependencies\":\"latest\",\"ignore_platform_reqs_8\":false,\"ignore_php_platform_requirement\":false,\"additional_composer_arguments\":[],\"before_script\":[\"xmllint --schema vendor/phpunit/phpunit/phpunit.xsd phpunit.xml.dist\"]}",
"operatingSystem": "ubuntu-latest",
"action": "laminas/laminas-continuous-integration-action@v1"
}
]
}
6 changes: 0 additions & 6 deletions tests/code-check-phpunit-nodist/matrix.json
Original file line number Diff line number Diff line change
Expand Up @@ -5,12 +5,6 @@
"job": "{\"command\":\"./vendor/bin/phpunit\",\"php\":\"8.1\",\"extensions\":[],\"ini\":[],\"dependencies\":\"lowest\",\"ignore_platform_reqs_8\":false,\"ignore_php_platform_requirement\":false,\"additional_composer_arguments\":[],\"before_script\":[\"xmllint --schema vendor/phpunit/phpunit/phpunit.xsd phpunit.xml\"]}",
"operatingSystem": "ubuntu-latest",
"action": "laminas/laminas-continuous-integration-action@v1"
},
{
"name": "PHPUnit [8.1, latest]",
"job": "{\"command\":\"./vendor/bin/phpunit\",\"php\":\"8.1\",\"extensions\":[],\"ini\":[],\"dependencies\":\"latest\",\"ignore_platform_reqs_8\":false,\"ignore_php_platform_requirement\":false,\"additional_composer_arguments\":[],\"before_script\":[\"xmllint --schema vendor/phpunit/phpunit/phpunit.xsd phpunit.xml\"]}",
"operatingSystem": "ubuntu-latest",
"action": "laminas/laminas-continuous-integration-action@v1"
}
]
}
Loading