Docker-Redis/generate

90 lines
2.5 KiB
Text
Raw Normal View History

2019-08-13 17:29:49 +00:00
#!/usr/bin/php
2019-08-13 15:30:40 +00:00
<?php
require_once __DIR__ . "/vendor/autoload.php";
use \Symfony\Component\Yaml\Yaml;
$image = "library/redis";
2019-08-13 17:29:49 +00:00
$stumpName = explode("/", $image,2)[1];
2019-08-13 17:38:07 +00:00
$excludedTags = ['windowsservercore', 'nanoserver', '3.2.6-windowsservercore', '3.2.6-nanoserver',];
2019-08-13 15:30:40 +00:00
$client = new \GuzzleHttp\Client();
$allLoaded = false;
$results = [];
$url = "https://hub.docker.com/v2/repositories/{$image}/tags/";
2019-08-13 15:30:40 +00:00
while($allLoaded == false) {
$data = $client->get($url)->getBody()->getContents();
$json = json_decode($data, true);
$results = array_merge($results, $json['results']);
if($json['next']){
$url = $json['next'];
}else{
$allLoaded = true;
}
}
$travisYaml = [
'language' => 'bash',
'notifications' => [
'email' => [
'matthew@baggett.me',
]
],
'before_script' => [
2019-08-13 16:30:56 +00:00
'docker login -u $DOCKER_LOGIN -p $DOCKER_PASSWORD $DOCKER_REGISTRY',
2019-08-13 15:30:40 +00:00
'sudo rm /usr/local/bin/docker-compose',
'curl -L https://github.com/docker/compose/releases/download/1.21.0/docker-compose-`uname -s`-`uname -m` > docker-compose',
'chmod +x docker-compose',
'sudo mv docker-compose /usr/local/bin',
],
'script' => [
2019-08-13 17:29:49 +00:00
"docker-compose -f build.yml build $stumpName-\$VERSION",
2019-08-13 15:30:40 +00:00
],
'after_script' => [
2019-08-13 17:29:49 +00:00
"docker-compose -f build.yml push $stumpName-\$VERSION",
2019-08-13 15:30:40 +00:00
],
'env' => [],
];
$buildYaml = [
'version' => (string) '2.3',
'services' => []
];
2019-08-13 15:39:07 +00:00
foreach($results as $result) {
2019-08-13 17:29:49 +00:00
if(!isset($result['name']))
continue;
if(in_array($result['name'], $excludedTags))
continue;
2019-08-13 15:30:40 +00:00
$dockerfileLines = [];
2019-08-13 17:29:49 +00:00
$dockerfileLines[] = "# From upstream {$stumpName}:{$result['name']}";
$dockerfileLines[] = "FROM {$stumpName}:{$result['name']}";
2019-08-13 15:30:40 +00:00
$dockerfileLines[] = "# Add healthcheck";
$dockerfileLines[] = "HEALTHCHECK --interval=30s --timeout=3s \\";
$dockerfileLines[] = " CMD redis-cli PING ";
$dockerfile = "generated/Dockerfile.{$result['name']}";
2019-08-13 17:29:49 +00:00
$buildYaml['services'][$stumpName . '-' . $result['name']] = [
2019-08-13 15:30:40 +00:00
'build' => [
'context' => '.',
'dockerfile' => $dockerfile
],
'image' => "benzine/redis:{$result['name']}",
];
$travisYaml['env'][] = "VERSION={$result['name']}";
file_put_contents($dockerfile, implode("\n", $dockerfileLines));
}
sort($travisYaml['env']);
$travisYaml['env'] = array_slice($travisYaml['env'],-200,200);
2019-08-13 15:39:07 +00:00
2019-08-13 15:30:40 +00:00
file_put_contents("build.yml", Yaml::dump($buildYaml));
file_put_contents(".travis.yml", Yaml::dump($travisYaml));