mirror of
https://github.com/graycoreio/github-actions-magento2.git
synced 2026-06-19 06:41:20 +00:00
feat: add project versions (#110)
* refactor: allow version matrixes by projects * feat: add initial version-matrix for mage-os * feat: add project as optional input to action * docs: document new input * refactor: tighten types a bit * chore: apply change requests from code review
This commit is contained in:
@@ -0,0 +1,24 @@
|
||||
import { getIndividualVersionsForProject, getCompositeVersionsForProject } from "./get-versions-for-project";
|
||||
import {Project} from "../project/projects";
|
||||
|
||||
describe('getIndividialVersionsForProject', () => {
|
||||
it('returns individual versions matrix for magento-open-source', () => {
|
||||
expect(Object.keys(getIndividualVersionsForProject("magento-open-source")).length).toBeGreaterThan(0)
|
||||
expect(Object.keys(getIndividualVersionsForProject("mage-os")).length).toBeGreaterThan(0)
|
||||
})
|
||||
|
||||
it('throws error if no individual versions are specified for given project', () => {
|
||||
expect(() => getIndividualVersionsForProject(<Project>"ahsoka")).toThrowError()
|
||||
})
|
||||
})
|
||||
|
||||
describe('getCompositeVersionsForProject', () => {
|
||||
it('returns composite versions matrix for magento-open-source', () => {
|
||||
expect(Object.keys(getCompositeVersionsForProject("magento-open-source")).length).toBeGreaterThan(0)
|
||||
expect(Object.keys(getCompositeVersionsForProject("mage-os")).length).toBeGreaterThan(0)
|
||||
})
|
||||
|
||||
it('throws error if no composite versions are specified for given project', () => {
|
||||
expect(() => getCompositeVersionsForProject(<Project>"spock")).toThrowError()
|
||||
})
|
||||
})
|
||||
@@ -0,0 +1,34 @@
|
||||
import { validateProject } from "../project/validate-projects";
|
||||
import { PackageMatrixVersion } from "../matrix/matrix-type";
|
||||
|
||||
const individual = {
|
||||
'mage-os': require('./mage-os/individual.json'),
|
||||
'magento-open-source': require('./magento-open-source/individual.json')
|
||||
}
|
||||
|
||||
const composite = {
|
||||
'mage-os': require('./mage-os/composite.json'),
|
||||
'magento-open-source': require('./magento-open-source/composite.json')
|
||||
}
|
||||
|
||||
export const getIndividualVersionsForProject = (project: string): Record<string, PackageMatrixVersion> => {
|
||||
validateProject(<any>project)
|
||||
if (individual[project] === undefined) {
|
||||
throw new Error(
|
||||
`Project "${project}" has no individual version specifications`
|
||||
)
|
||||
}
|
||||
|
||||
return individual[project]
|
||||
}
|
||||
|
||||
export const getCompositeVersionsForProject = (project: string): Record<string, PackageMatrixVersion> => {
|
||||
validateProject(<any>project)
|
||||
if (composite[project] === undefined) {
|
||||
throw new Error(
|
||||
`Project "${project}" has no composite version specifications`
|
||||
)
|
||||
}
|
||||
|
||||
return composite[project]
|
||||
}
|
||||
@@ -0,0 +1,30 @@
|
||||
{
|
||||
"mage-os/project-community-edition": {
|
||||
"magento": "mage-os/project-community-edition",
|
||||
"php": 8.1,
|
||||
"composer": "2.2.21",
|
||||
"mysql": "mysql:8.0",
|
||||
"elasticsearch": "elasticsearch:8.5.3",
|
||||
"rabbitmq": "rabbitmq:3.9-management",
|
||||
"redis": "redis:7.0",
|
||||
"varnish": "varnish:7.3",
|
||||
"nginx": "nginx:1.22",
|
||||
"os": "ubuntu-latest",
|
||||
"release": "2023-09-15T00:00:00+0000",
|
||||
"eol": "2026-09-15T00:00:00+0000"
|
||||
},
|
||||
"mage-os/project-community-edition:next": {
|
||||
"magento": "mage-os/project-community-edition:next",
|
||||
"php": 8.2,
|
||||
"composer": "2",
|
||||
"mysql": "mysql:8.0",
|
||||
"elasticsearch": "elasticsearch:8.5.3",
|
||||
"rabbitmq": "rabbitmq:3.11-management",
|
||||
"redis": "redis:7.0",
|
||||
"varnish": "varnish:7.3",
|
||||
"nginx": "nginx:1.22",
|
||||
"os": "ubuntu-latest",
|
||||
"release": "2023-09-15T00:00:00+0000",
|
||||
"eol": "2026-09-15T00:00:00+0000"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,16 @@
|
||||
{
|
||||
"mage-os/project-community-edition:1.0.0": {
|
||||
"magento": "mage-os/project-community-edition:1.0.0",
|
||||
"php": 8.1,
|
||||
"composer": "2.2.21",
|
||||
"mysql": "mysql:8.0",
|
||||
"elasticsearch": "elasticsearch:8.5.3",
|
||||
"rabbitmq": "rabbitmq:3.9-management",
|
||||
"redis": "redis:7.0",
|
||||
"varnish": "varnish:7.3",
|
||||
"nginx": "nginx:1.22",
|
||||
"os": "ubuntu-latest",
|
||||
"release": "2023-09-15T00:00:00+0000",
|
||||
"eol": "2026-09-15T00:00:00+0000"
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user