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

Commit 64a5bdd

Browse files
committed
Merge branch 'develop', prepare 5.0.4
2 parents 61a0bb0 + ba84147 commit 64a5bdd

File tree

9 files changed

+642
-585
lines changed

9 files changed

+642
-585
lines changed

.prettierrc

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
{
2+
"trailingComma": "es5",
3+
"singleQuote": true,
4+
"bracketSpacing": false,
5+
"printWidth": 120
6+
}

package.json

Lines changed: 15 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "exoframe-server",
3-
"version": "5.0.3",
3+
"version": "5.0.4-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",
@@ -24,38 +24,38 @@
2424
"license": "MIT",
2525
"devDependencies": {
2626
"@zeit/ncc": "^0.20.4",
27-
"babel-eslint": "^10.0.2",
27+
"babel-eslint": "^10.0.3",
2828
"cors": "^2.8.4",
29-
"coveralls": "^3.0.5",
29+
"coveralls": "^3.0.6",
3030
"dockerode": "^2.5.6",
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",
31+
"eslint": "^6.2.2",
32+
"eslint-config-prettier": "^6.1.0",
33+
"eslint-config-standard": "^14.1.0",
34+
"eslint-plugin-import": "^2.18.2",
3535
"eslint-plugin-node": "^9.1.0",
3636
"eslint-plugin-prettier": "^3.1.0",
3737
"eslint-plugin-promise": "^4.2.1",
38-
"eslint-plugin-standard": "^4.0.0",
38+
"eslint-plugin-standard": "^4.0.1",
3939
"exoframe-faas": "^1.0.1",
40-
"fastify": "^2.6.0",
40+
"fastify": "^2.7.1",
4141
"fastify-auth": "^0.5.0",
4242
"get-port": "^5.0.0",
43-
"highland": "^2.13.0",
44-
"jest": "^24.0.0",
43+
"highland": "^2.13.5",
44+
"jest": "^24.9.0",
4545
"js-yaml": "^3.12.0",
4646
"jsonwebtoken": "^8.3.0",
47-
"lodash": "^4.17.14",
48-
"lokijs": "^1.5.5",
47+
"lodash": "^4.17.15",
48+
"lokijs": "^1.5.7",
4949
"mkdirp": "^0.5.1",
5050
"nock": "^10.0.4",
5151
"node-fetch": "^2.6.0",
5252
"prettier": "^1.18.2",
53-
"rimraf": "^2.6.2",
53+
"rimraf": "^3.0.0",
5454
"semver-compare": "^1.0.0",
5555
"signale": "^1.3.0",
5656
"sshpk": "^1.14.2",
5757
"tar-fs": "^2.0.0",
58-
"uuid": "^3.3.2"
58+
"uuid": "^3.3.3"
5959
},
6060
"jest": {
6161
"testEnvironment": "node"

src/config/index.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -89,7 +89,7 @@ const defaultConfig = {
8989
baseDomain: false,
9090
cors: false,
9191
updateChannel: 'stable',
92-
traefikImage: 'traefik:latest',
92+
traefikImage: 'traefik:v1.7',
9393
traefikName: 'exoframe-traefik',
9494
traefikArgs: [],
9595
exoframeNetwork: 'exoframe',

src/docker/templates/node.js

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,9 @@ ${yarnOrNpm({hasYarn, hasLock})}
2929
# copy app itself
3030
COPY . /usr/src/app
3131
32+
# run build if needed
33+
RUN npm run build --if-present
34+
3235
EXPOSE 80
3336
3437
CMD ["npm", "start"]

src/routes/version.js

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,10 +9,16 @@ const pkg = require('../../package.json');
99
// urls for tags request
1010
const exoServerUrl = `https://api.github.com/repos/exoframejs/exoframe-server/releases`;
1111
const traefikUrl = 'https://api.github.com/repos/containous/traefik/releases';
12+
const traefikVersionPrefix = 'v1.7';
1213

13-
const getLatestVersion = async url => {
14+
const getLatestVersion = async (url, versionPrefix) => {
1415
const res = await fetch(url).then(r => r.json());
15-
const latestRelease = res.filter(r => !r.draft && !r.prerelease).shift();
16+
const latestRelease = res
17+
// filter out drafts and pre-releases
18+
.filter(r => !r.draft && !r.prerelease)
19+
// if version prefix is provided - filter out releases that don't match it
20+
.filter(r => (versionPrefix ? r.tag_name.startsWith(versionPrefix) : true))
21+
.shift();
1622
return latestRelease.tag_name;
1723
};
1824

@@ -32,7 +38,7 @@ module.exports = fastify => {
3238
}
3339
// get latest versions
3440
const lastServerTag = await getLatestVersion(exoServerUrl);
35-
const lastTraefikTag = await getLatestVersion(traefikUrl);
41+
const lastTraefikTag = await getLatestVersion(traefikUrl, traefikVersionPrefix);
3642
// reply
3743
reply.code(200).send({
3844
server: pkg.version,

test/__mocks__/config.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ const testConfig = {
2525
},
2626
compress: true,
2727
updateChannel: 'stable',
28-
traefikImage: 'traefik:latest',
28+
traefikImage: 'traefik:v1.7',
2929
traefikName: 'exoframe-traefik',
3030
traefikArgs: [],
3131
exoframeNetwork: 'exoframe',

test/deploy.test.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -601,8 +601,8 @@ test('Should display error log for broken Node.js project', async done => {
601601
// check response
602602
expect(response.statusCode).toEqual(200);
603603
expect(error.message).toEqual('Build failed! See build log for details.');
604-
expect(error.log[0].includes('Step 1/8 : FROM node:latest')).toBeTruthy();
605-
expect(error.log.find(l => l.includes('Step 2/8 : RUN mkdir -p /usr/src/app'))).toBeDefined();
604+
expect(error.log[0].includes('FROM node:latest')).toBeTruthy();
605+
expect(error.log.find(l => l.includes('RUN mkdir -p /usr/src/app'))).toBeDefined();
606606
expect(error.log[error.log.length - 1]).toEqual(
607607
"The command '/bin/sh -c npm install --silent' returned a non-zero code: 1"
608608
);

test/update.test.js

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,8 @@ const {sleep} = require('../src/util');
1414

1515
// old traefik and server images
1616
const traefikTag = 'traefik:1.3-alpine';
17+
const traefikVersion = 'v1.7';
18+
const traefikNewTag = `traefik:${traefikVersion}`;
1719
const serverTag = 'exoframe/server:1.0.0';
1820

1921
// options base
@@ -43,7 +45,7 @@ beforeAll(async () => {
4345
// get all images
4446
const oldImages = await docker.listImages();
4547
// remove current :latest images
46-
const latestTraefik = oldImages.find(img => img.RepoTags && img.RepoTags.includes('traefik:latest'));
48+
const latestTraefik = oldImages.find(img => img.RepoTags && img.RepoTags.includes(traefikNewTag));
4749
if (latestTraefik) {
4850
const limg = docker.getImage(latestTraefik.Id);
4951
await limg.remove({force: true});
@@ -61,7 +63,7 @@ beforeAll(async () => {
6163
// get old one and tag it as latest
6264
oldTraefik = images.find(img => img.RepoTags && img.RepoTags.includes(traefikTag));
6365
const timg = docker.getImage(oldTraefik.Id);
64-
await timg.tag({repo: 'traefik', tag: 'latest'});
66+
await timg.tag({repo: 'traefik', tag: traefikVersion});
6567
oldServer = images.find(img => img.RepoTags && img.RepoTags.includes(serverTag));
6668
const simg = docker.getImage(oldServer.Id);
6769
await simg.tag({repo: 'exoframe/server', tag: 'latest'});
@@ -139,7 +141,7 @@ test('Should update traefik', async done => {
139141

140142
// check docker services
141143
const allImages = await docker.listImages();
142-
const newTraefik = allImages.find(it => it.RepoTags && it.RepoTags.includes('traefik:latest'));
144+
const newTraefik = allImages.find(it => it.RepoTags && it.RepoTags.includes(traefikNewTag));
143145
expect(newTraefik.Id).not.toBe(oldTraefik.Id);
144146

145147
done();

0 commit comments

Comments
 (0)