2019-03-23 23:27:04 +08:00
|
|
|
const fs = require('fs');
|
|
|
|
const path = require('path');
|
|
|
|
const cwd = process.cwd();
|
|
|
|
const yaml = require('js-yaml');
|
|
|
|
|
|
|
|
const folders = fs.readdirSync(cwd, { withFileTypes: true });
|
2019-03-23 23:48:01 +08:00
|
|
|
const submodules = folders.filter(f =>
|
|
|
|
f.isDirectory() && fs.readdirSync(path.join(cwd, f.name)).includes('.git')
|
|
|
|
).map(f => f.name);
|
2019-03-23 23:27:04 +08:00
|
|
|
const dockers = folders.filter(f =>
|
|
|
|
f.isDirectory() && fs.readdirSync(path.join(cwd, f.name)).includes('Dockerfile')
|
2019-03-23 23:48:01 +08:00
|
|
|
).map(f => f.name);
|
2019-03-23 23:27:04 +08:00
|
|
|
|
2019-03-23 23:48:01 +08:00
|
|
|
const submodule_override = submodules.reduce((acc, f) => {
|
|
|
|
acc[f] = 'https://git.makerforce.io/beep/' + f + '.git';
|
|
|
|
return acc;
|
|
|
|
}, {});
|
|
|
|
|
|
|
|
const yamls = dockers.map(f => ({
|
2019-03-23 23:27:04 +08:00
|
|
|
kind: 'pipeline',
|
|
|
|
name: f,
|
|
|
|
clone: {
|
2019-03-23 23:48:01 +08:00
|
|
|
depth: 1,
|
2019-03-23 23:27:04 +08:00
|
|
|
},
|
|
|
|
steps: [
|
|
|
|
{
|
|
|
|
name: 'submodule',
|
|
|
|
image: 'plugins/git',
|
|
|
|
settings: {
|
|
|
|
recursive: true,
|
2019-03-23 23:48:01 +08:00
|
|
|
submodule_override,
|
2019-03-23 23:27:04 +08:00
|
|
|
},
|
|
|
|
},
|
|
|
|
{
|
|
|
|
name: 'docker',
|
|
|
|
image: 'plugins/docker',
|
|
|
|
settings: {
|
|
|
|
registry: 'registry.makerforce.io',
|
|
|
|
repo: 'registry.makerforce.io/beep/' + f,
|
2019-03-23 23:48:01 +08:00
|
|
|
context: f,
|
|
|
|
dockerfile: f + '/Dockerfile',
|
2019-03-23 23:27:04 +08:00
|
|
|
auto_tag: true,
|
|
|
|
username: {
|
|
|
|
from_secret: 'docker_username',
|
|
|
|
},
|
|
|
|
password: {
|
|
|
|
from_secret: 'docker_password',
|
|
|
|
},
|
|
|
|
},
|
|
|
|
},
|
|
|
|
],
|
2019-03-23 23:48:01 +08:00
|
|
|
}))
|
|
|
|
|
|
|
|
const deploy = {
|
|
|
|
kind: 'pipeline',
|
|
|
|
name: 'deploy',
|
|
|
|
clone: {
|
|
|
|
depth: 1,
|
|
|
|
},
|
|
|
|
steps: [
|
|
|
|
{
|
|
|
|
name: 'nop',
|
|
|
|
image: 'alpine:3.8',
|
|
|
|
commands: [
|
|
|
|
'echo nop',
|
|
|
|
],
|
|
|
|
},
|
|
|
|
],
|
|
|
|
depends_on: dockers,
|
|
|
|
};
|
|
|
|
|
|
|
|
const droneyml = [].concat(yamls).concat(deploy).map(yaml.safeDump).join('---\n');
|
2019-03-23 23:27:04 +08:00
|
|
|
|
|
|
|
fs.writeFileSync(path.join(cwd, '.drone.yml'), droneyml);
|
|
|
|
console.log('Written to .drone.yml');
|