Docker powered linux building

This commit is contained in:
David Baker
2020-02-17 20:10:58 +00:00
parent 0bfc970619
commit 52032aac14
10 changed files with 86 additions and 53 deletions

View File

@@ -15,7 +15,7 @@ limitations under the License.
*/
async function build(hakEnv, moduleInfo) {
moduleInfo.scripts.build(hakEnv, moduleInfo);
await moduleInfo.scripts.build(hakEnv, moduleInfo);
}
module.exports = build;

View File

@@ -89,45 +89,47 @@ async function main() {
}
}
let cmds;
if (process.argv.length < 3) {
console.log("Usage: hak <command> [modules...]");
process.exit(1);
cmds = ['check', 'fetch', 'fetchDeps', 'build', 'copy', 'link'];
} else {
cmds = [process.argv[2]];
}
const cmd = process.argv[2];
if (GENERALCOMMANDS.includes(cmd)) {
if (cmd === 'target') {
console.log(hakEnv.getNodeTriple());
}
return;
}
if (!MODULECOMMANDS.includes(cmd)) {
console.error("Unknown command: " + cmd);
console.log("Commands I know about:");
for (const cmd of MODULECOMMANDS) {
console.log("\t" + cmd);
}
process.exit(1);
}
const cmdFunc = require('./' + cmd);
let modules = process.argv.slice(3);
if (modules.length === 0) modules = Object.keys(deps);
for (const mod of modules) {
const depInfo = deps[mod];
if (depInfo === undefined) {
console.log(
"Module " + mod + " not found - is it in hakDependencies " +
"in your package.json?",
);
for (const cmd of cmds) {
if (GENERALCOMMANDS.includes(cmd)) {
if (cmd === 'target') {
console.log(hakEnv.getNodeTriple());
}
return;
}
if (!MODULECOMMANDS.includes(cmd)) {
console.error("Unknown command: " + cmd);
console.log("Commands I know about:");
for (const cmd of MODULECOMMANDS) {
console.log("\t" + cmd);
}
process.exit(1);
}
console.log("hak " + cmd + ": " + mod);
await cmdFunc(hakEnv, depInfo);
const cmdFunc = require('./' + cmd);
for (const mod of modules) {
const depInfo = deps[mod];
if (depInfo === undefined) {
console.log(
"Module " + mod + " not found - is it in hakDependencies " +
"in your package.json?",
);
process.exit(1);
}
console.log("hak " + cmd + ": " + mod);
await cmdFunc(hakEnv, depInfo);
}
}
}

View File

@@ -1,12 +1,19 @@
#!/bin/bash
docker inspect riot-desktop-dockerbuild 2> /dev/null > /dev/null
if [ $? != 0 ]; then
echo "Docker image riot-desktop-builder not found. Have you run yarn run docker:setup?"
exit 1
fi
# Taken from https://www.electron.build/multi-platform-build#docker
docker run --rm -ti \
--env-file <(env | grep -iE 'DEBUG|NODE_|ELECTRON_|YARN_|NPM_|CI|CIRCLE|TRAVIS_TAG|TRAVIS|TRAVIS_REPO_|TRAVIS_BUILD_|TRAVIS_BRANCH|TRAVIS_PULL_REQUEST_|APPVEYOR_|CSC_|GH_|GITHUB_|BT_|AWS_|STRIP|BUILD_') \
--env ELECTRON_CACHE="/root/.cache/electron" \
--env ELECTRON_BUILDER_CACHE="/root/.cache/electron-builder" \
-v ${PWD}:/project \
-v ${PWD}/docker_node_modules:/project/node_modules \
-v ${PWD}/docker/node_modules:/project/node_modules \
-v ${PWD}/docker/.hak:/project/.hak \
-v ~/.cache/electron:/root/.cache/electron \
-v ~/.cache/electron-builder:/root/.cache/electron-builder \
electronuserland/builder "$@"
riot-desktop-dockerbuild "$@"