Skip to content

Commit 449a4c0

Browse files
authored
MCLOUD-7476: Add possibility to use released images and cached images (#30)
1 parent 671b0c2 commit 449a4c0

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

46 files changed

+416
-161
lines changed

Diff for: .travis.yml

+2-2
Original file line numberDiff line numberDiff line change
@@ -89,9 +89,9 @@ before_install:
8989
install: if [[ $TEST_SUITE != "build-images" ]]; then composer update; fi;
9090

9191
before_script:
92-
- if [ $TRAVIS_SECURE_ENV_VARS == "true" ] && [ $TEST_SUITE == "build-images" ]; then echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin; fi;
92+
- if [ $TRAVIS_SECURE_ENV_VARS == "true" ] && ([ $TEST_SUITE == "build-images" ] || [ $TEST_SUITE == "functional" ]); then echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin; fi;
9393
- if [ $TEST_SUITE == "functional" ]; then sudo sysctl -w vm.max_map_count=262144; fi;
94-
- if [ $TEST_SUITE == "functional" ]; then cp codeception.dist.yml codeception.yml && sed -i "s/use_generated_images:\ false/use_generated_images:\ true/" codeception.yml; fi;
94+
- if [ $TEST_SUITE == "functional" ]; then cp codeception.dist.yml codeception.yml && sed -i "s/use_custom_images:\ false/use_custom_images:\ true/" codeception.yml; fi;
9595

9696
script:
9797
- if [ $TRAVIS_SECURE_ENV_VARS == "true" ] && [ $TEST_SUITE == "functional" ]; then ./tests/travis/functional.sh; fi;

Diff for: codeception.dist.yml

+3-3
Original file line numberDiff line numberDiff line change
@@ -25,10 +25,10 @@ modules:
2525
composer_magento_username: "%REPO_USERNAME%"
2626
composer_magento_password: "%REPO_PASSWORD%"
2727
composer_github_token: "%GITHUB_TOKEN%"
28-
use_generated_images: false
29-
generated_images_namespace: "cloudft"
28+
use_custom_images: false
29+
custom_images_namespace: "cloudft"
30+
version_custom_images: "%TRAVIS_BUILD_NUMBER%"
3031
use_cached_workdir: true
31-
version_generated_images: "%TRAVIS_BUILD_NUMBER%"
3232
printOutput: false
3333
Magento\CloudDocker\Test\Functional\Codeception\Docker:
3434
system_magento_dir: "%Magento.docker.settings.system.magento_dir%"

Diff for: src/Command/BuildCompose.php

+5
Original file line numberDiff line numberDiff line change
@@ -200,6 +200,11 @@ protected function configure(): void
200200
InputOption::VALUE_OPTIONAL,
201201
'The maximum number of connections that each worker process can handle simultaneously',
202202
Source\BaseSource::DEFAULT_NGINX_WORKER_CONNECTIONS
203+
)->addOption(
204+
Source\CliSource::OPTION_CUSTOM_REGISTRY,
205+
null,
206+
InputOption::VALUE_OPTIONAL,
207+
'The custom registry. It can be your mirror with all needed images. For example: 123.example.com'
203208
);
204209

205210
$this->addOption(

Diff for: src/Compose/ProductionBuilder/Service/Blackfire.php

+2-1
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,8 @@ public function getConfig(Config $config): array
6464
],
6565
'ports' => ["8707"]
6666
],
67-
$config->getServiceImage($this->getServiceName())
67+
$config->getServiceImage($this->getServiceName()),
68+
$config->getCustomRegistry()
6869
);
6970
}
7071

Diff for: src/Compose/ProductionBuilder/Service/Build.php

+1
Original file line numberDiff line numberDiff line change
@@ -73,6 +73,7 @@ public function getConfig(Config $config): array
7373
$config->getServiceVersion(ServiceInterface::SERVICE_PHP),
7474
['volumes' => $this->volume->getBuild($config)],
7575
$config->getServiceImage(ServiceInterface::SERVICE_PHP),
76+
$config->getCustomRegistry(),
7677
$config->getServiceImagePattern(ServiceInterface::SERVICE_PHP_CLI)
7778
);
7879
}

Diff for: src/Compose/ProductionBuilder/Service/Cron.php

+1
Original file line numberDiff line numberDiff line change
@@ -73,6 +73,7 @@ public function getConfig(Config $config): array
7373
$config->getServiceVersion(ServiceInterface::SERVICE_PHP),
7474
['command' => 'run-cron'],
7575
$config->getServiceImage(ServiceInterface::SERVICE_PHP),
76+
$config->getCustomRegistry(),
7677
$config->getServiceImagePattern(ServiceInterface::SERVICE_PHP_CLI)
7778
);
7879
$preparedCronConfig = [];

Diff for: src/Compose/ProductionBuilder/Service/Database/Db.php

+2-1
Original file line numberDiff line numberDiff line change
@@ -82,7 +82,8 @@ public function getConfig(Config $config): array
8282
ServiceInterface::SERVICE_DB,
8383
$config->getServiceVersion(ServiceInterface::SERVICE_DB),
8484
$dbConfig,
85-
$config->getServiceImage(ServiceInterface::SERVICE_DB)
85+
$config->getServiceImage(ServiceInterface::SERVICE_DB),
86+
$config->getCustomRegistry()
8687
);
8788
}
8889

Diff for: src/Compose/ProductionBuilder/Service/Database/DbQuote.php

+2-1
Original file line numberDiff line numberDiff line change
@@ -79,7 +79,8 @@ public function getConfig(Config $config): array
7979
ServiceInterface::SERVICE_DB_QUOTE,
8080
$config->getServiceVersion(ServiceInterface::SERVICE_DB),
8181
$dbConfig,
82-
$config->getServiceImage(ServiceInterface::SERVICE_DB)
82+
$config->getServiceImage(ServiceInterface::SERVICE_DB),
83+
$config->getCustomRegistry()
8384
);
8485
}
8586

Diff for: src/Compose/ProductionBuilder/Service/Database/DbSales.php

+2-1
Original file line numberDiff line numberDiff line change
@@ -79,7 +79,8 @@ public function getConfig(Config $config): array
7979
ServiceInterface::SERVICE_DB_SALES,
8080
$config->getServiceVersion(ServiceInterface::SERVICE_DB),
8181
$dbConfig,
82-
$config->getServiceImage(ServiceInterface::SERVICE_DB)
82+
$config->getServiceImage(ServiceInterface::SERVICE_DB),
83+
$config->getCustomRegistry()
8384
);
8485
}
8586

Diff for: src/Compose/ProductionBuilder/Service/Deploy.php

+1
Original file line numberDiff line numberDiff line change
@@ -73,6 +73,7 @@ public function getConfig(Config $config): array
7373
$config->getServiceVersion(ServiceInterface::SERVICE_PHP),
7474
['volumes' => $this->volume->getRo($config)],
7575
$config->getServiceImage(ServiceInterface::SERVICE_PHP),
76+
$config->getCustomRegistry(),
7677
$config->getServiceImagePattern(ServiceInterface::SERVICE_PHP_CLI)
7778
);
7879
}

Diff for: src/Compose/ProductionBuilder/Service/ElasticSearch.php

+1
Original file line numberDiff line numberDiff line change
@@ -72,6 +72,7 @@ public function getConfig(Config $config): array
7272
$config->getServiceVersion($this->getServiceName()),
7373
!empty($esEnvVars) ? ['environment' => $esEnvVars] : [],
7474
$config->getServiceImage($this->getServiceName()),
75+
$config->getCustomRegistry(),
7576
$config->getServiceImagePattern($this->getServiceName())
7677
);
7778
}

Diff for: src/Compose/ProductionBuilder/Service/Fpm.php

+1
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,7 @@ public function getConfig(Config $config): array
6565
$config->getServiceVersion(ServiceInterface::SERVICE_PHP),
6666
['volumes' => $this->volume->getRo($config)],
6767
$config->getServiceImage(ServiceInterface::SERVICE_PHP),
68+
$config->getCustomRegistry(),
6869
$config->getServiceImagePattern($this->getServiceName())
6970
);
7071
}

Diff for: src/Compose/ProductionBuilder/Service/FpmXdebug.php

+1
Original file line numberDiff line numberDiff line change
@@ -96,6 +96,7 @@ public function getConfig(Config $config): array
9696
'environment' => $this->converter->convert($envVariables)
9797
],
9898
$config->getServiceImage(ServiceInterface::SERVICE_PHP),
99+
$config->getCustomRegistry(),
99100
$config->getServiceImagePattern($this->getServiceName())
100101
);
101102
}

Diff for: src/Compose/ProductionBuilder/Service/Generic.php

+1
Original file line numberDiff line numberDiff line change
@@ -83,6 +83,7 @@ public function getConfig(Config $config): array
8383
)
8484
],
8585
$config->getServiceImage(ServiceInterface::SERVICE_PHP),
86+
$config->getCustomRegistry(),
8687
$config->getServiceImagePattern(ServiceInterface::SERVICE_PHP_CLI)
8788
);
8889
}

Diff for: src/Compose/ProductionBuilder/Service/Mailhog.php

+1
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,7 @@ public function getConfig(Config $config): array
6161
]
6262
],
6363
$config->getServiceImage($this->getServiceName()),
64+
$config->getCustomRegistry(),
6465
$config->getServiceImagePattern($this->getServiceName())
6566
);
6667
}

Diff for: src/Compose/ProductionBuilder/Service/Node.php

+1
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,7 @@ public function getConfig(Config $config): array
6363
$config->getServiceVersion($this->getServiceName()),
6464
['volumes' => $this->volume->getRo($config)],
6565
$config->getServiceImage($this->getServiceName()),
66+
$config->getCustomRegistry(),
6667
$config->getServiceImagePattern($this->getServiceName())
6768
);
6869
}

Diff for: src/Compose/ProductionBuilder/Service/RabbitMq.php

+2-1
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,8 @@ public function getConfig(Config $config): array
5555
$this->getServiceName(),
5656
$config->getServiceVersion($this->getServiceName()),
5757
[],
58-
$config->getServiceImage($this->getServiceName())
58+
$config->getServiceImage($this->getServiceName()),
59+
$config->getCustomRegistry()
5960
);
6061
}
6162

Diff for: src/Compose/ProductionBuilder/Service/Redis.php

+2-1
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,8 @@ public function getConfig(Config $config): array
6262
'retries' => 3
6363
]
6464
],
65-
$config->getServiceImage($this->getServiceName())
65+
$config->getServiceImage($this->getServiceName()),
66+
$config->getCustomRegistry()
6667
);
6768
}
6869

Diff for: src/Compose/ProductionBuilder/Service/Selenium.php

+2-1
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,8 @@ public function getConfig(Config $config): array
5656
$this->getServiceName(),
5757
$config->getServiceVersion($this->getServiceName()),
5858
[],
59-
$config->getServiceImage($this->getServiceName())
59+
$config->getServiceImage($this->getServiceName()),
60+
$config->getCustomRegistry()
6061
);
6162
}
6263

Diff for: src/Compose/ProductionBuilder/Service/Test.php

+1
Original file line numberDiff line numberDiff line change
@@ -73,6 +73,7 @@ public function getConfig(Config $config): array
7373
$config->getServiceVersion(ServiceInterface::SERVICE_PHP),
7474
['volumes' => $this->volume->getRw($config)],
7575
$config->getServiceImage(ServiceInterface::SERVICE_PHP),
76+
$config->getCustomRegistry(),
7677
$config->getServiceImagePattern(ServiceInterface::SERVICE_PHP_CLI)
7778
);
7879
}

Diff for: src/Compose/ProductionBuilder/Service/Tls.php

+1
Original file line numberDiff line numberDiff line change
@@ -69,6 +69,7 @@ public function getConfig(Config $config): array
6969
]
7070
],
7171
$config->getServiceImage($this->getServiceName()),
72+
$config->getCustomRegistry(),
7273
$config->getServiceImagePattern($this->getServiceName())
7374
);
7475
}

Diff for: src/Compose/ProductionBuilder/Service/Varnish.php

+1
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,7 @@ public function getConfig(Config $config): array
5757
$config->getServiceVersion($this->getServiceName()),
5858
[],
5959
$config->getServiceImage($this->getServiceName()),
60+
$config->getCustomRegistry(),
6061
$config->getServiceImagePattern($this->getServiceName())
6162
);
6263

Diff for: src/Compose/ProductionBuilder/Service/Web.php

+1
Original file line numberDiff line numberDiff line change
@@ -72,6 +72,7 @@ public function getConfig(Config $config): array
7272
],
7373
],
7474
$config->getServiceImage(ServiceInterface::SERVICE_NGINX),
75+
$config->getCustomRegistry(),
7576
$config->getServiceImagePattern(ServiceInterface::SERVICE_NGINX)
7677
);
7778

Diff for: src/Config/Config.php

+9
Original file line numberDiff line numberDiff line change
@@ -215,6 +215,15 @@ public function getServiceImage(string $name): ?string
215215
return $this->all()->get($this->getKey($name, 'image'));
216216
}
217217

218+
/**
219+
* @return string|null
220+
* @throws ConfigurationMismatchException
221+
*/
222+
public function getCustomRegistry(): ?string
223+
{
224+
return $this->all()->get(SourceInterface::SYSTEM_CUSTOM_REGISTRY);
225+
}
226+
218227
/**
219228
* @param string $name
220229
* @return string|null

Diff for: src/Config/Source/CliSource.php

+11
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,11 @@ class CliSource implements SourceInterface
3535
public const OPTION_NO_MAILHOG = 'no-mailhog';
3636
public const OPTION_NO_TLS = 'no-tls';
3737

38+
/**
39+
* Custom registry
40+
*/
41+
public const OPTION_CUSTOM_REGISTRY = 'custom-registry';
42+
3843
/**
3944
* MailHog configuration
4045
*/
@@ -145,6 +150,12 @@ public function read(): Repository
145150
{
146151
$repository = new Repository();
147152

153+
if ($customRegistry = $this->input->getOption(self::OPTION_CUSTOM_REGISTRY)) {
154+
$repository->set([
155+
self::SYSTEM_CUSTOM_REGISTRY => $customRegistry
156+
]);
157+
}
158+
148159
if ($mode = $this->input->getOption(self::OPTION_MODE)) {
149160
$repository->set([
150161
self::SYSTEM_MODE => $mode

Diff for: src/Config/Source/SourceInterface.php

+1
Original file line numberDiff line numberDiff line change
@@ -135,6 +135,7 @@ interface SourceInterface
135135
/**
136136
* Config
137137
*/
138+
public const SYSTEM_CUSTOM_REGISTRY = 'system.custom_registry';
138139
public const SYSTEM_SYNC_ENGINE = 'system.sync_engine';
139140
public const SYSTEM_TMP_MOUNTS = 'system.tmp_mounts';
140141
public const SYSTEM_MODE = 'system.mode';

Diff for: src/Service/ServiceFactory.php

+3-1
Original file line numberDiff line numberDiff line change
@@ -161,6 +161,7 @@ public function __construct(FileList $fileList)
161161
* @param string $version
162162
* @param array $config
163163
* @param string $image
164+
* @param string|null $customRegistry
164165
* @param string|null $imagePattern
165166
* @return array
166167
* @throws ConfigurationMismatchException
@@ -170,6 +171,7 @@ public function create(
170171
string $version,
171172
array $config = [],
172173
string $image = null,
174+
string $customRegistry = null,
173175
string $imagePattern = null
174176
): array {
175177
if (!array_key_exists($name, self::$config)) {
@@ -182,7 +184,7 @@ public function create(
182184
$metaConfig = self::$config[$name];
183185
$defaultConfig = $metaConfig['config'] ?? [];
184186

185-
$image = $image ?: $metaConfig['image'];
187+
$image = ($customRegistry ? $customRegistry . '/' : '') . ($image ?: $metaConfig['image']);
186188
$pattern = $imagePattern ?: $metaConfig['pattern'];
187189

188190
return array_replace(

Diff for: src/Test/Functional/Acceptance/Acceptance71Cest.php

-16
This file was deleted.

Diff for: src/Test/Functional/Acceptance/AcceptanceCest.php

+4-4
Original file line numberDiff line numberDiff line change
@@ -20,8 +20,8 @@ class AcceptanceCest extends AbstractCest
2020
*/
2121
public function testProductionMode(\CliTester $I): void
2222
{
23-
$I->assertTrue($I->runEceDockerCommand('build:compose --mode=production'), 'Command build:compose failed');
24-
$I->replaceImagesWithGenerated();
23+
$I->assertTrue($I->generateDockerCompose('--mode=production'), 'Command build:compose failed');
24+
$I->replaceImagesWithCustom();
2525
$I->startEnvironment();
2626
$I->runDockerComposeCommand('run build cloud-build');
2727
$I->runDockerComposeCommand('run deploy cloud-deploy');
@@ -41,10 +41,10 @@ public function testCustomHost(\CliTester $I): void
4141
{
4242
$I->updateBaseUrl('http://magento2.test:8080/');
4343
$I->assertTrue(
44-
$I->runEceDockerCommand('build:compose --mode=production --host=magento2.test --port=8080'),
44+
$I->generateDockerCompose('--mode=production --host=magento2.test --port=8080'),
4545
'Command build:compose failed'
4646
);
47-
$I->replaceImagesWithGenerated();
47+
$I->replaceImagesWithCustom();
4848
$I->startEnvironment();
4949
$I->assertTrue($I->runDockerComposeCommand('run build cloud-build'), 'Build phase failed');
5050
$I->assertTrue($I->runDockerComposeCommand('run deploy cloud-deploy'), 'Deploy phase failed');

Diff for: src/Test/Functional/Acceptance/Elasticsearch72Cest.php

-10
Original file line numberDiff line numberDiff line change
@@ -27,16 +27,6 @@ class Elasticsearch72Cest extends ElasticsearchCest
2727
protected function dataProvider(): array
2828
{
2929
return [
30-
[
31-
'version' => '1.7',
32-
'xms' => '512m',
33-
'xmx' => '512m',
34-
],
35-
[
36-
'version' => '2.4',
37-
'xms' => '514m',
38-
'xmx' => '514m',
39-
],
4030
[
4131
'version' => '5.2',
4232
'xms' => '516m',

Diff for: src/Test/Functional/Acceptance/ElasticsearchCest.php

+3-3
Original file line numberDiff line numberDiff line change
@@ -30,8 +30,8 @@ class ElasticsearchCest extends AbstractCest
3030
*/
3131
public function testElasticsearch(CliTester $I, Example $data)
3232
{
33-
$I->runEceDockerCommand($this->buildCommand($data));
34-
$I->replaceImagesWithGenerated();
33+
$I->generateDockerCompose($this->buildCommand($data));
34+
$I->replaceImagesWithCustom();
3535
$I->startEnvironment();
3636
if (!empty($data['plugins'])) {
3737
$I->runDockerComposeCommand('logs elasticsearch');
@@ -58,7 +58,7 @@ public function testElasticsearch(CliTester $I, Example $data)
5858
private function buildCommand(Example $data): string
5959
{
6060
$command = sprintf(
61-
'build:compose --mode=production --es=%s --es-env-var="ES_JAVA_OPTS=-Xms%s -Xmx%s"',
61+
'--mode=production --es=%s --es-env-var="ES_JAVA_OPTS=-Xms%s -Xmx%s"',
6262
$data['version'],
6363
$data['xms'],
6464
$data['xmx']

Diff for: src/Test/Functional/Acceptance/MailHogCest.php

+3-3
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ public function testDefaultPorts(\CliTester $I): void
2020
{
2121
$I->updateBaseUrl('http://magento2.docker:8025/');
2222
$I->assertTrue(
23-
$I->runEceDockerCommand('build:compose'),
23+
$I->generateDockerCompose(),
2424
'Command build:compose failed'
2525
);
2626
$this->runAndAssert($I);
@@ -34,7 +34,7 @@ public function testCustomPorts(\CliTester $I): void
3434
{
3535
$I->updateBaseUrl('http://magento2.docker:8026/');
3636
$I->assertTrue(
37-
$I->runEceDockerCommand('build:compose --mailhog-http-port=8026 --mailhog-smtp-port=1026'),
37+
$I->generateDockerCompose('--mailhog-http-port=8026 --mailhog-smtp-port=1026'),
3838
'Command build:compose failed'
3939
);
4040
$this->runAndAssert($I);
@@ -46,7 +46,7 @@ public function testCustomPorts(\CliTester $I): void
4646
*/
4747
private function runAndAssert(\CliTester $I): void
4848
{
49-
$I->replaceImagesWithGenerated();
49+
$I->replaceImagesWithCustom();
5050
$I->startEnvironment();
5151
$I->amOnPage('/');
5252
$I->see('MailHog');

0 commit comments

Comments
 (0)