Skip to content
This repository was archived by the owner on Nov 23, 2022. It is now read-only.

Commit a8b8886

Browse files
committed
Merge branch 'develop', prepare v5.0
2 parents 0aa9e98 + b196639 commit a8b8886

File tree

18 files changed

+1753
-1141
lines changed

18 files changed

+1753
-1141
lines changed

.eslintrc

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
"max-len": ["error", 120, 4],
77
"camelcase": "off",
88
"promise/param-names": "off",
9+
"no-async-promise-executor": "off",
910
"prefer-promise-reject-errors": "off",
1011
"no-control-regex": "off",
1112
"prettier/prettier": [

.gitignore

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,4 +6,4 @@ test/fixtures/deploying/
66
test/fixtures/secrets.db
77
dist/
88
bin/server-core.js
9-
bin/home.html
9+
bin/assets/

.travis.yml

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,14 +5,18 @@ language: node_js
55
services:
66
- docker
77

8-
node_js: 10
8+
node_js: 12
99

1010
cache: yarn
1111

1212
before_install:
1313
- curl -L https://github.com/docker/compose/releases/download/1.23.2/docker-compose-`uname -s`-`uname -m` > docker-compose
1414
- chmod +x docker-compose
1515

16+
script:
17+
- yarn test
18+
- yarn lint
19+
1620
after_success:
1721
- docker rmi $(docker images -q)
1822
- yarn coveralls

Dockerfile

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,16 @@
1-
FROM docker/compose:1.24.0
1+
FROM node:12.4-alpine
22

3-
# install required libs and yarn
4-
RUN apk update && apk add --no-cache libstdc++ libgcc yarn
3+
# install docker-compose
4+
RUN apk update \
5+
&& apk add --no-cache py-pip python-dev \
6+
libffi-dev openssl-dev gcc libc-dev make \
7+
&& pip install docker-compose
58

6-
# copy binary
7-
COPY exoframe-server /
9+
# create new workdir
10+
WORKDIR /app
11+
12+
# copy source
13+
COPY bin/ /app
814

915
# set environment to production
1016
ENV NODE_ENV production
@@ -13,4 +19,4 @@ ENV NODE_ENV production
1319
EXPOSE 8080
1420

1521
# set binary as entry point
16-
ENTRYPOINT ["/exoframe-server"]
22+
CMD ["node", "exoframe-server.js"]

package.json

Lines changed: 24 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,46 +1,55 @@
11
{
22
"name": "exoframe-server",
3-
"version": "4.1.2",
3+
"version": "4.1.3-dev",
44
"description": "Exoframe is a self-hosted tool that allows simple one-command deployments using Docker",
55
"main": "bin/server-core.js",
66
"bin": "bin/exoframe-server.js",
77
"scripts": {
88
"start": "node index.js",
9+
"lint": "eslint src/ test/ bin/exoframe-server.js",
910
"test": "NODE_ENV=testing jest --coverage --silent --maxWorkers=2 --ci",
1011
"coveralls": "cat ./coverage/lcov.info | coveralls",
1112
"build-bundle": "ncc build src/index.js -o dist",
12-
"prepare-build": "mv dist/index.js bin/server-core.js && mv dist/home.html bin/home.html",
13-
"build": "yarn build-bundle && yarn prepare-build && pkg -t node10.4.1-alpine -o exoframe-server ."
14-
},
15-
"pkg": {
16-
"assets": "bin/home.html"
13+
"prepare-build": "cp dist/index.js bin/server-core.js && cp -r dist/assets bin/",
14+
"build": "yarn build-bundle && yarn prepare-build"
1715
},
1816
"files": [
1917
"bin/exoframe-server.js",
2018
"bin/server-core.js",
21-
"bin/home.html"
19+
"bin/assets/home.html",
20+
"bin/assets/runner.js"
2221
],
2322
"repository": "[email protected]:exoframejs/exoframe-server.git",
2423
"author": "Tim Ermilov <[email protected]>",
2524
"license": "MIT",
2625
"devDependencies": {
27-
"@zeit/ncc": "^0.15.0",
26+
"@zeit/ncc": "^0.20.4",
27+
"babel-eslint": "^10.0.2",
2828
"cors": "^2.8.4",
29-
"coveralls": "^3.0.2",
29+
"coveralls": "^3.0.5",
3030
"dockerode": "^2.5.6",
31-
"fastify": "^1.14.0",
32-
"fastify-auth": "^0.3.0",
33-
"get-port": "^4.0.0",
31+
"eslint": "^6.0.1",
32+
"eslint-config-prettier": "^6.0.0",
33+
"eslint-config-standard": "^13.0.1",
34+
"eslint-plugin-import": "^2.18.0",
35+
"eslint-plugin-node": "^9.1.0",
36+
"eslint-plugin-prettier": "^3.1.0",
37+
"eslint-plugin-promise": "^4.2.1",
38+
"eslint-plugin-standard": "^4.0.0",
39+
"exoframe-faas": "^1.0.1",
40+
"fastify": "^2.6.0",
41+
"fastify-auth": "^0.5.0",
42+
"get-port": "^5.0.0",
3443
"highland": "^2.13.0",
3544
"jest": "^24.0.0",
3645
"js-yaml": "^3.12.0",
3746
"jsonwebtoken": "^8.3.0",
38-
"lodash": "^4.17.11",
47+
"lodash": "^4.17.14",
3948
"lokijs": "^1.5.5",
4049
"mkdirp": "^0.5.1",
4150
"nock": "^10.0.4",
42-
"node-fetch": "^2.2.0",
43-
"pkg": "^4.3.4",
51+
"node-fetch": "^2.6.0",
52+
"prettier": "^1.18.2",
4453
"rimraf": "^2.6.2",
4554
"semver-compare": "^1.0.0",
4655
"signale": "^1.3.0",

src/config/index.js

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ const publicKeysPath = path.join(os.homedir(), '.ssh');
1515
const extensionsFolder = path.join(baseFolder, 'extensions');
1616
const recipesFolder = path.join(baseFolder, 'recipes');
1717
const pluginsFolder = path.join(baseFolder, 'plugins');
18+
const faasFolder = path.join(baseFolder, 'faas');
1819
// dir for temporary files used to build docker images
1920
const tempDir = path.join(baseFolder, 'deploying');
2021

@@ -23,6 +24,7 @@ exports.baseFolder = baseFolder;
2324
exports.extensionsFolder = extensionsFolder;
2425
exports.recipesFolder = recipesFolder;
2526
exports.pluginsFolder = pluginsFolder;
27+
exports.faasFolder = faasFolder;
2628
exports.tempDockerDir = tempDir;
2729

2830
// create base folder if doesn't exist
@@ -32,6 +34,13 @@ try {
3234
fs.mkdirSync(baseFolder);
3335
}
3436

37+
// create faas folder if doesn't exist
38+
try {
39+
fs.statSync(faasFolder);
40+
} catch (e) {
41+
fs.mkdirSync(faasFolder);
42+
}
43+
3544
// create extensions folder if doesn't exist
3645
try {
3746
fs.statSync(extensionsFolder);
@@ -95,7 +104,7 @@ let userConfig = defaultConfig;
95104

96105
// config loaded promise
97106
let loadedResolve = () => {};
98-
let isConfigLoaded = new Promise(resolve => {
107+
const isConfigLoaded = new Promise(resolve => {
99108
loadedResolve = resolve;
100109
});
101110

@@ -107,7 +116,11 @@ const reloadUserConfig = () => {
107116
logger.debug('loaded new config:', userConfig);
108117
loadedResolve();
109118
} catch (e) {
110-
logger.error('error parsing user config:', e);
119+
if (e.code === 'ENOENT') {
120+
logger.warn('no config found, using default values..');
121+
} else {
122+
logger.error('error parsing user config:', e);
123+
}
111124
}
112125
};
113126

src/docker/start.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -162,7 +162,7 @@ exports.start = async ({image, username, folder, resultStream, existing = []}) =
162162
// generate host
163163
const host = getHost({serverConfig, name, config});
164164

165-
const Env = getEnv({username, config, name, project, host}).map((pair) => pair.join('='));
165+
const Env = getEnv({username, config, name, project, host}).map(pair => pair.join('='));
166166

167167
// construct restart policy
168168
let RestartPolicy = {};

src/docker/templates/index.js

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,8 @@ const imageTemplate = require('./image');
1111
const composeTemplate = require('./compose');
1212
const dockerfileTemplate = require('./dockerfile');
1313
const nodeTemplate = require('./node');
14-
const nginxTemplate = require('./nginx');
14+
const staticTemplate = require('./static');
15+
const {template: faasTemplate} = require('exoframe-faas');
1516

1617
// load 3rd party templates
1718
module.exports = () => {
@@ -24,5 +25,7 @@ module.exports = () => {
2425
return require(templatePath);
2526
});
2627

27-
return [imageTemplate, composeTemplate, dockerfileTemplate, nodeTemplate, nginxTemplate].concat(userTemplates);
28+
return [faasTemplate, imageTemplate, composeTemplate, dockerfileTemplate, nodeTemplate, staticTemplate].concat(
29+
userTemplates
30+
);
2831
};
File renamed without changes.

src/index.js

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,11 +13,12 @@ const {initDocker} = require('./docker/init');
1313
const {initPlugins} = require('./plugins');
1414

1515
// config
16-
const {getConfig, waitForConfig} = require('./config');
16+
const {getConfig, waitForConfig, faasFolder} = require('./config');
1717

1818
// paths
1919
const setupAuth = require('./auth');
2020
const routes = require('./routes');
21+
const {setup: faas} = require('exoframe-faas');
2122

2223
exports.startServer = async (port = 8080) => {
2324
// create server
@@ -43,6 +44,7 @@ exports.startServer = async (port = 8080) => {
4344
// register plugins
4445
await setupAuth(fastify)
4546
.register(routes)
47+
.register(faas({faasFolder}))
4648
.ready();
4749

4850
// start server

0 commit comments

Comments
 (0)