@scandipwa/magento-scripts 2.3.1 → 2.3.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/config/docker.js +3 -2
- package/lib/config/services/nginx/versions/index.js +3 -1
- package/lib/config/services/nginx/versions/nginx-1.22.js +12 -0
- package/lib/config/services/nginx/versions/nginx-1.24.js +12 -0
- package/lib/config/versions/magento-2.4.4-p9.js +40 -0
- package/lib/config/versions/magento-2.4.5-p8.js +40 -0
- package/lib/config/versions/magento-2.4.6-p6.js +40 -0
- package/lib/config/versions/magento-2.4.7-p1.js +41 -0
- package/lib/config/versions/magento-2.4.7.js +0 -1
- package/lib/tasks/docker/project-image-builder.js +8 -10
- package/lib/tasks/requirements/elasticsearch-version.js +33 -11
- package/lib/tasks/requirements/opensearch-version.js +33 -11
- package/lib/tasks/status/index.js +7 -2
- package/package.json +2 -2
- package/typings/context.d.ts +1 -1
package/lib/config/docker.js
CHANGED
|
@@ -365,6 +365,7 @@ module.exports = async (ctx, overridenConfiguration, baseConfig) => {
|
|
|
365
365
|
env:
|
|
366
366
|
searchengine === 'elasticsearch'
|
|
367
367
|
? deepmerge(
|
|
368
|
+
defaultEsEnv,
|
|
368
369
|
{
|
|
369
370
|
// https://www.elastic.co/guide/en/elasticsearch/reference/master/ml-settings.html
|
|
370
371
|
'xpack.ml.enabled': ['sse4.2', 'sse4_2'].some(
|
|
@@ -372,9 +373,9 @@ module.exports = async (ctx, overridenConfiguration, baseConfig) => {
|
|
|
372
373
|
cpuSupportedFlags.includes(sse42Flag)
|
|
373
374
|
)
|
|
374
375
|
},
|
|
375
|
-
elasticsearch.env ||
|
|
376
|
+
elasticsearch.env || {}
|
|
376
377
|
)
|
|
377
|
-
: deepmerge(
|
|
378
|
+
: deepmerge(defaultOsEnv, opensearch.env || {}),
|
|
378
379
|
network: network.name,
|
|
379
380
|
image: `${
|
|
380
381
|
searchengine === 'elasticsearch'
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
const path = require('path')
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* @param {{ templateDir: string }} param0
|
|
5
|
+
* @returns {import('../../../../../typings/index').NginxConfiguration}
|
|
6
|
+
*/
|
|
7
|
+
const nginx122 = ({ templateDir }) => ({
|
|
8
|
+
image: 'nginx:1.22.0',
|
|
9
|
+
configTemplate: path.join(templateDir || '', 'nginx.template.conf')
|
|
10
|
+
})
|
|
11
|
+
|
|
12
|
+
module.exports = nginx122
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
const path = require('path')
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* @param {{ templateDir: string }} param0
|
|
5
|
+
* @returns {import('../../../../../typings/index').NginxConfiguration}
|
|
6
|
+
*/
|
|
7
|
+
const nginx124 = ({ templateDir }) => ({
|
|
8
|
+
image: 'nginx:1.24.0',
|
|
9
|
+
configTemplate: path.join(templateDir || '', 'nginx.template.conf')
|
|
10
|
+
})
|
|
11
|
+
|
|
12
|
+
module.exports = nginx124
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
const sodium = require('../services/php/extensions/sodium')
|
|
2
|
+
const {
|
|
3
|
+
magento24PHPExtensionList
|
|
4
|
+
} = require('../magento/required-php-extensions')
|
|
5
|
+
const { php81 } = require('../services/php/versions')
|
|
6
|
+
const { sslTerminator } = require('../services/ssl-terminator')
|
|
7
|
+
const { varnish73 } = require('../services/varnish')
|
|
8
|
+
const { repo } = require('../services/php/base-repo')
|
|
9
|
+
const { nginx124 } = require('../services/nginx/versions')
|
|
10
|
+
const { composer22 } = require('../services/composer/versions')
|
|
11
|
+
const { maildev } = require('../services/maildev')
|
|
12
|
+
const { redis62 } = require('../services/redis')
|
|
13
|
+
const { mariadb104 } = require('../services/mariadb/versions')
|
|
14
|
+
const { elasticsearch717 } = require('../services/elasticsearch/versions')
|
|
15
|
+
const { mysql80 } = require('../services/mysql/versions')
|
|
16
|
+
const { opensearch13 } = require('../services/opensearch/versions')
|
|
17
|
+
|
|
18
|
+
/**
|
|
19
|
+
* @type {import('../../../typings/common').MagentoVersionConfigurationFunction}
|
|
20
|
+
*/
|
|
21
|
+
module.exports = ({ templateDir }) => ({
|
|
22
|
+
magentoVersion: '2.4.4-p9',
|
|
23
|
+
configuration: {
|
|
24
|
+
php: php81({
|
|
25
|
+
templateDir,
|
|
26
|
+
extensions: { ...magento24PHPExtensionList, sodium },
|
|
27
|
+
baseImage: `${repo}:php-8.1-magento-2.4`
|
|
28
|
+
}),
|
|
29
|
+
nginx: nginx124({ templateDir }),
|
|
30
|
+
redis: redis62(),
|
|
31
|
+
mysql: mysql80(),
|
|
32
|
+
mariadb: mariadb104(),
|
|
33
|
+
elasticsearch: elasticsearch717(),
|
|
34
|
+
composer: composer22(),
|
|
35
|
+
varnish: varnish73({ templateDir }),
|
|
36
|
+
sslTerminator: sslTerminator({ templateDir }),
|
|
37
|
+
maildev: maildev(),
|
|
38
|
+
opensearch: opensearch13()
|
|
39
|
+
}
|
|
40
|
+
})
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
const sodium = require('../services/php/extensions/sodium')
|
|
2
|
+
const {
|
|
3
|
+
magento24PHPExtensionList
|
|
4
|
+
} = require('../magento/required-php-extensions')
|
|
5
|
+
const { php81 } = require('../services/php/versions')
|
|
6
|
+
const { sslTerminator } = require('../services/ssl-terminator')
|
|
7
|
+
const { varnish73 } = require('../services/varnish')
|
|
8
|
+
const { repo } = require('../services/php/base-repo')
|
|
9
|
+
const { nginx124 } = require('../services/nginx/versions')
|
|
10
|
+
const { composer22 } = require('../services/composer/versions')
|
|
11
|
+
const { maildev } = require('../services/maildev')
|
|
12
|
+
const { redis62 } = require('../services/redis')
|
|
13
|
+
const { mariadb104 } = require('../services/mariadb/versions')
|
|
14
|
+
const { elasticsearch717 } = require('../services/elasticsearch/versions')
|
|
15
|
+
const { mysql80 } = require('../services/mysql/versions')
|
|
16
|
+
const { opensearch13 } = require('../services/opensearch/versions')
|
|
17
|
+
|
|
18
|
+
/**
|
|
19
|
+
* @type {import('../../../typings/common').MagentoVersionConfigurationFunction}
|
|
20
|
+
*/
|
|
21
|
+
module.exports = ({ templateDir }) => ({
|
|
22
|
+
magentoVersion: '2.4.5-p8',
|
|
23
|
+
configuration: {
|
|
24
|
+
php: php81({
|
|
25
|
+
templateDir,
|
|
26
|
+
extensions: { ...magento24PHPExtensionList, sodium },
|
|
27
|
+
baseImage: `${repo}:php-8.1-magento-2.4`
|
|
28
|
+
}),
|
|
29
|
+
nginx: nginx124({ templateDir }),
|
|
30
|
+
redis: redis62(),
|
|
31
|
+
mysql: mysql80(),
|
|
32
|
+
mariadb: mariadb104(),
|
|
33
|
+
elasticsearch: elasticsearch717(),
|
|
34
|
+
composer: composer22(),
|
|
35
|
+
varnish: varnish73({ templateDir }),
|
|
36
|
+
sslTerminator: sslTerminator({ templateDir }),
|
|
37
|
+
maildev: maildev(),
|
|
38
|
+
opensearch: opensearch13()
|
|
39
|
+
}
|
|
40
|
+
})
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
const sodium = require('../services/php/extensions/sodium')
|
|
2
|
+
const {
|
|
3
|
+
magento24PHPExtensionList
|
|
4
|
+
} = require('../magento/required-php-extensions')
|
|
5
|
+
const { php81 } = require('../services/php/versions')
|
|
6
|
+
const { sslTerminator } = require('../services/ssl-terminator')
|
|
7
|
+
const { varnish73 } = require('../services/varnish')
|
|
8
|
+
const { repo } = require('../services/php/base-repo')
|
|
9
|
+
const { nginx124 } = require('../services/nginx/versions')
|
|
10
|
+
const { composer22 } = require('../services/composer/versions')
|
|
11
|
+
const { maildev } = require('../services/maildev')
|
|
12
|
+
const { redis70 } = require('../services/redis')
|
|
13
|
+
const { mariadb106 } = require('../services/mariadb/versions')
|
|
14
|
+
const { elasticsearch85 } = require('../services/elasticsearch/versions')
|
|
15
|
+
const { mysql80 } = require('../services/mysql/versions')
|
|
16
|
+
const { opensearch212 } = require('../services/opensearch/versions')
|
|
17
|
+
|
|
18
|
+
/**
|
|
19
|
+
* @type {import('../../../typings/common').MagentoVersionConfigurationFunction}
|
|
20
|
+
*/
|
|
21
|
+
module.exports = ({ templateDir }) => ({
|
|
22
|
+
magentoVersion: '2.4.6-p6',
|
|
23
|
+
configuration: {
|
|
24
|
+
php: php81({
|
|
25
|
+
templateDir,
|
|
26
|
+
extensions: { ...magento24PHPExtensionList, sodium },
|
|
27
|
+
baseImage: `${repo}:php-8.1-magento-2.4`
|
|
28
|
+
}),
|
|
29
|
+
nginx: nginx124({ templateDir }),
|
|
30
|
+
redis: redis70(),
|
|
31
|
+
mysql: mysql80(),
|
|
32
|
+
mariadb: mariadb106(),
|
|
33
|
+
elasticsearch: elasticsearch85(),
|
|
34
|
+
composer: composer22(),
|
|
35
|
+
varnish: varnish73({ templateDir }),
|
|
36
|
+
sslTerminator: sslTerminator({ templateDir }),
|
|
37
|
+
maildev: maildev(),
|
|
38
|
+
opensearch: opensearch212()
|
|
39
|
+
}
|
|
40
|
+
})
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
const sodium = require('../services/php/extensions/sodium')
|
|
2
|
+
const {
|
|
3
|
+
magento24PHPExtensionList
|
|
4
|
+
} = require('../magento/required-php-extensions')
|
|
5
|
+
const { php82 } = require('../services/php/versions')
|
|
6
|
+
const { sslTerminator } = require('../services/ssl-terminator')
|
|
7
|
+
const { varnish74 } = require('../services/varnish')
|
|
8
|
+
const { repo } = require('../services/php/base-repo')
|
|
9
|
+
const { nginx124 } = require('../services/nginx/versions')
|
|
10
|
+
const { composer26 } = require('../services/composer/versions')
|
|
11
|
+
const { maildev } = require('../services/maildev')
|
|
12
|
+
const { redis72 } = require('../services/redis')
|
|
13
|
+
const { mariadb106 } = require('../services/mariadb/versions')
|
|
14
|
+
const { elasticsearch811 } = require('../services/elasticsearch/versions')
|
|
15
|
+
const { mysql80 } = require('../services/mysql/versions')
|
|
16
|
+
const { opensearch212 } = require('../services/opensearch/versions')
|
|
17
|
+
|
|
18
|
+
/**
|
|
19
|
+
* @type {import('../../../typings/common').MagentoVersionConfigurationFunction}
|
|
20
|
+
*/
|
|
21
|
+
module.exports = ({ templateDir }) => ({
|
|
22
|
+
magentoVersion: '2.4.7-p1',
|
|
23
|
+
isDefault: true,
|
|
24
|
+
configuration: {
|
|
25
|
+
php: php82({
|
|
26
|
+
templateDir,
|
|
27
|
+
extensions: { ...magento24PHPExtensionList, sodium },
|
|
28
|
+
baseImage: `${repo}:php-8.2-magento-2.4`
|
|
29
|
+
}),
|
|
30
|
+
nginx: nginx124({ templateDir }),
|
|
31
|
+
redis: redis72(),
|
|
32
|
+
mysql: mysql80(),
|
|
33
|
+
mariadb: mariadb106(),
|
|
34
|
+
elasticsearch: elasticsearch811(),
|
|
35
|
+
composer: composer26(),
|
|
36
|
+
varnish: varnish74({ templateDir }),
|
|
37
|
+
sslTerminator: sslTerminator({ templateDir }),
|
|
38
|
+
maildev: maildev(),
|
|
39
|
+
opensearch: opensearch212()
|
|
40
|
+
}
|
|
41
|
+
})
|
|
@@ -45,15 +45,10 @@ const addExtensionToBuilder =
|
|
|
45
45
|
let runCommand = ''
|
|
46
46
|
if (typeof command === 'string') {
|
|
47
47
|
runCommand += ` ${command}`
|
|
48
|
-
} else if (command
|
|
48
|
+
} else if (typeof command === 'function') {
|
|
49
49
|
runCommand += ` ${await Promise.resolve(
|
|
50
50
|
command({ ...extensionInstructionsWithoutCommand, ctx })
|
|
51
51
|
)}`
|
|
52
|
-
} else if (typeof command === 'function') {
|
|
53
|
-
runCommand += ` ${command({
|
|
54
|
-
...extensionInstructionsWithoutCommand,
|
|
55
|
-
ctx
|
|
56
|
-
})}`
|
|
57
52
|
} else {
|
|
58
53
|
runCommand += ` docker-php-ext-install ${
|
|
59
54
|
extensionInstructionsWithoutCommand.name || extensionName
|
|
@@ -146,14 +141,17 @@ const buildDockerFileInstructions = async (ctx, { image, tag }) => {
|
|
|
146
141
|
composer.plugins
|
|
147
142
|
)) {
|
|
148
143
|
if (pluginOptions.enabled) {
|
|
144
|
+
const pluginVersion = pluginOptions.version
|
|
149
145
|
dockerFileInstructions
|
|
150
|
-
.comment(
|
|
146
|
+
.comment(
|
|
147
|
+
`install ${pluginName}${
|
|
148
|
+
pluginVersion ? ` (version ${pluginVersion})` : ''
|
|
149
|
+
} composer global package`
|
|
150
|
+
)
|
|
151
151
|
|
|
152
152
|
.run(
|
|
153
153
|
`composer global require ${pluginName}${
|
|
154
|
-
|
|
155
|
-
? ` ${pluginOptions.options}`
|
|
156
|
-
: ''
|
|
154
|
+
pluginVersion ? `:${pluginVersion}` : ''
|
|
157
155
|
}${
|
|
158
156
|
pluginOptions.options
|
|
159
157
|
? ` ${pluginOptions.options}`
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
const { getPort } = require('../../config/port-config')
|
|
1
2
|
const UnknownError = require('../../errors/unknown-error')
|
|
2
3
|
const { containerApi } = require('../docker/containers')
|
|
3
4
|
|
|
@@ -11,19 +12,40 @@ const checkElasticSearchVersion = () => ({
|
|
|
11
12
|
ctx.config.overridenConfiguration.configuration
|
|
12
13
|
const { ports } = ctx
|
|
13
14
|
|
|
15
|
+
const { elasticsearch: elasticSearchContainer } =
|
|
16
|
+
ctx.config.docker.getContainers(ports)
|
|
17
|
+
|
|
14
18
|
let elasticSearchVersionResponse
|
|
15
19
|
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
20
|
+
const elasticSearchContainerRunning = await containerApi.ls({
|
|
21
|
+
filter: `name=${elasticSearchContainer.name}`,
|
|
22
|
+
formatToJSON: true
|
|
23
|
+
})
|
|
24
|
+
|
|
25
|
+
if (
|
|
26
|
+
elasticSearchContainerRunning.length !== 0 &&
|
|
27
|
+
elasticSearchContainerRunning[0].State === 'running'
|
|
28
|
+
) {
|
|
29
|
+
elasticSearchVersionResponse = await containerApi.exec(
|
|
30
|
+
'elasticsearch --version',
|
|
31
|
+
elasticSearchContainer.name
|
|
32
|
+
)
|
|
33
|
+
} else {
|
|
34
|
+
try {
|
|
35
|
+
const availableElasticSearchPort = await getPort(
|
|
36
|
+
ports.elasticsearch
|
|
37
|
+
)
|
|
38
|
+
elasticSearchVersionResponse = await containerApi.run({
|
|
39
|
+
...elasticsearch,
|
|
40
|
+
command: 'elasticsearch --version',
|
|
41
|
+
detach: false,
|
|
42
|
+
rm: true,
|
|
43
|
+
ports: [`127.0.0.1:${availableElasticSearchPort}:9200`],
|
|
44
|
+
memory: '512mb'
|
|
45
|
+
})
|
|
46
|
+
} catch (e) {
|
|
47
|
+
elasticSearchVersionResponse = e.message
|
|
48
|
+
}
|
|
27
49
|
}
|
|
28
50
|
|
|
29
51
|
const elasticSearchVersionResponseResult =
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
const { getPort } = require('../../config/port-config')
|
|
1
2
|
const UnknownError = require('../../errors/unknown-error')
|
|
2
3
|
const { containerApi } = require('../docker/containers')
|
|
3
4
|
|
|
@@ -10,19 +11,40 @@ const checkOpenSearchVersion = () => ({
|
|
|
10
11
|
const { opensearch } = ctx.config.overridenConfiguration.configuration
|
|
11
12
|
const { ports } = ctx
|
|
12
13
|
|
|
14
|
+
const { elasticsearch: openSearchContainer } =
|
|
15
|
+
ctx.config.docker.getContainers(ports)
|
|
16
|
+
|
|
13
17
|
let openSearchVersionResponse
|
|
14
18
|
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
19
|
+
const openSearchContainerRunning = await containerApi.ls({
|
|
20
|
+
filter: `name=${openSearchContainer.name}`,
|
|
21
|
+
formatToJSON: true
|
|
22
|
+
})
|
|
23
|
+
|
|
24
|
+
if (
|
|
25
|
+
openSearchContainerRunning.length !== 0 &&
|
|
26
|
+
openSearchContainerRunning[0].State === 'running'
|
|
27
|
+
) {
|
|
28
|
+
openSearchVersionResponse = await containerApi.exec(
|
|
29
|
+
'opensearch --version',
|
|
30
|
+
openSearchContainer.name
|
|
31
|
+
)
|
|
32
|
+
} else {
|
|
33
|
+
try {
|
|
34
|
+
const availableOpenSearchPort = await getPort(
|
|
35
|
+
ports.elasticsearch
|
|
36
|
+
)
|
|
37
|
+
openSearchVersionResponse = await containerApi.run({
|
|
38
|
+
...opensearch,
|
|
39
|
+
command: 'opensearch --version',
|
|
40
|
+
detach: false,
|
|
41
|
+
rm: true,
|
|
42
|
+
ports: [`127.0.0.1:${availableOpenSearchPort}:9200`],
|
|
43
|
+
memory: '512mb'
|
|
44
|
+
})
|
|
45
|
+
} catch (e) {
|
|
46
|
+
openSearchVersionResponse = e.message
|
|
47
|
+
}
|
|
26
48
|
}
|
|
27
49
|
|
|
28
50
|
const openSearchVersionResponseResult = openSearchVersionResponse.match(
|
|
@@ -105,12 +105,17 @@ const prettyStatus = async (ctx) => {
|
|
|
105
105
|
if (
|
|
106
106
|
container.status &&
|
|
107
107
|
container.status.State &&
|
|
108
|
-
container.status.State.Health
|
|
108
|
+
container.status.State.Health &&
|
|
109
|
+
container.status.State.Status === 'running'
|
|
109
110
|
) {
|
|
110
111
|
containerStatus = `✓ ${logger.style.file(
|
|
111
112
|
container.status.State.Health.Status
|
|
112
113
|
)} and ${logger.style.file('running')}`
|
|
113
|
-
} else if (
|
|
114
|
+
} else if (
|
|
115
|
+
container.status &&
|
|
116
|
+
container.status.State &&
|
|
117
|
+
container.status.State.Status !== 'exited'
|
|
118
|
+
) {
|
|
114
119
|
containerStatus = logger.style.file(container.status.State.Status)
|
|
115
120
|
} else {
|
|
116
121
|
containerStatus = '✖ Not running'
|
package/package.json
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
"description": "Scripts and configuration used by CMA.",
|
|
4
4
|
"homepage": "https://docs.create-magento-app.com/",
|
|
5
5
|
"repository": "github:scandipwa/create-magento-app",
|
|
6
|
-
"version": "2.3.
|
|
6
|
+
"version": "2.3.3",
|
|
7
7
|
"main": "./index.js",
|
|
8
8
|
"types": "./typings/index.d.ts",
|
|
9
9
|
"license": "OSL-3.0",
|
|
@@ -59,5 +59,5 @@
|
|
|
59
59
|
"@types/node": "^20.10.4",
|
|
60
60
|
"@types/yargs": "^17.0.13"
|
|
61
61
|
},
|
|
62
|
-
"gitHead": "
|
|
62
|
+
"gitHead": "041e92f309c8e1d513f8d12aacd8d262b302d905"
|
|
63
63
|
}
|
package/typings/context.d.ts
CHANGED
|
@@ -91,7 +91,7 @@ export interface ListrContext {
|
|
|
91
91
|
}
|
|
92
92
|
}
|
|
93
93
|
>
|
|
94
|
-
getContainers(ports?:
|
|
94
|
+
getContainers(ports?: ListrContext['ports']): Record<'php' | 'sslTerminator' | 'nginx' | 'redis' | 'mariadb' | 'elasticsearch' | 'maildev' | 'varnish',
|
|
95
95
|
{
|
|
96
96
|
_: string
|
|
97
97
|
ports: string[]
|