soajs.controller 4.2.41 → 4.2.43
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.github/workflows/ci.yml +43 -0
- package/.github/workflows/release.yml +92 -0
- package/ARCHITECTURE.md +193 -0
- package/Gruntfile.js +1 -1
- package/docs/configuration-custom-registry.md +421 -0
- package/docs/configuration-services-config.md +275 -0
- package/docs/data-flow.md +138 -0
- package/docs/deployment.md +205 -0
- package/docs/external-integrations.md +159 -0
- package/docs/gateway-routes.md +259 -0
- package/docs/maintenance-routes.md +308 -0
- package/docs/middleware/awareness.md +120 -0
- package/docs/middleware/cors.md +88 -0
- package/docs/middleware/enhancer.md +75 -0
- package/docs/middleware/favicon.md +36 -0
- package/docs/middleware/gotoService.md +146 -0
- package/docs/middleware/ip2ban.md +70 -0
- package/docs/middleware/key.md +196 -0
- package/docs/middleware/keyACL.md +139 -0
- package/docs/middleware/lastSeen.md +111 -0
- package/docs/middleware/maintenanceMode.md +81 -0
- package/docs/middleware/mt.md +188 -0
- package/docs/middleware/oauth.md +173 -0
- package/docs/middleware/response.md +106 -0
- package/docs/middleware/soajs.md +71 -0
- package/docs/middleware/traffic.md +190 -0
- package/docs/middleware/url.md +102 -0
- package/docs/multi-tenant-security.md +183 -0
- package/docs/request-flow.md +230 -0
- package/docs/service-discovery.md +167 -0
- package/mw/gotoService/redirectToService.js +15 -4
- package/mw/key/index.js +16 -1
- package/mw/lastSeen/index.js +3 -0
- package/mw/mt/urac.js +21 -1
- package/mw/mt/utils.js +2 -0
- package/package.json +7 -7
- package/test/integration/UC1-gateway-routes/index.js +2 -2
- package/test/unit/mw/key/index.js +150 -0
- package/test/unit/mw/lastSeen/index.js +5 -4
- package/test/unit/mw/mt/urac.js +157 -4
- package/test/unit/mw/mt/utils.js +6 -6
- package/.travis.yml +0 -72
|
@@ -134,4 +134,154 @@ describe("Unit test for: mw - key", function () {
|
|
|
134
134
|
done();
|
|
135
135
|
});
|
|
136
136
|
});
|
|
137
|
+
|
|
138
|
+
describe("Network Package Override", function () {
|
|
139
|
+
let networkKeyObj = {
|
|
140
|
+
"key": "a139786a6e6d18e48b4987e83789430b",
|
|
141
|
+
"tenant": {"id": "10d2cb5fc04ce51e06000001", "code": "DBTN", "locked": true},
|
|
142
|
+
"application": {
|
|
143
|
+
"product": "AVAPP",
|
|
144
|
+
"package": "AVAPP_EXMPL",
|
|
145
|
+
"appId": "5c0e74ba9acc3c5a84a5125a",
|
|
146
|
+
"acl": null,
|
|
147
|
+
"acl_all_env": null
|
|
148
|
+
},
|
|
149
|
+
"device": null,
|
|
150
|
+
"env": "dev",
|
|
151
|
+
"geo": null,
|
|
152
|
+
"config": {
|
|
153
|
+
"gateway": {
|
|
154
|
+
"networkPackages": {
|
|
155
|
+
"mw": {
|
|
156
|
+
"AVAPP": {
|
|
157
|
+
"default": "AVAPP_DEFAU",
|
|
158
|
+
"users": {
|
|
159
|
+
"AVAPP_EXMPL": "AVAPP_ALTRN"
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
};
|
|
167
|
+
|
|
168
|
+
let networkReq = {
|
|
169
|
+
"get": () => {
|
|
170
|
+
return key;
|
|
171
|
+
},
|
|
172
|
+
"soajs": {
|
|
173
|
+
"controller": {"serviceParams": {}},
|
|
174
|
+
"registry": {
|
|
175
|
+
"serviceConfig": {
|
|
176
|
+
"key": {
|
|
177
|
+
algorithm: "aes256",
|
|
178
|
+
password: "soajs key lal massa"
|
|
179
|
+
}
|
|
180
|
+
},
|
|
181
|
+
"custom": {
|
|
182
|
+
"gateway": {
|
|
183
|
+
"value": {
|
|
184
|
+
"lastSeen": {
|
|
185
|
+
"network": "mw"
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
},
|
|
191
|
+
"log": {
|
|
192
|
+
"error": (err) => {
|
|
193
|
+
console.log(err);
|
|
194
|
+
},
|
|
195
|
+
"debug": (msg) => {
|
|
196
|
+
console.log(msg);
|
|
197
|
+
}
|
|
198
|
+
}
|
|
199
|
+
}
|
|
200
|
+
};
|
|
201
|
+
|
|
202
|
+
it("Call MW with network package override - should replace package with default", function (done) {
|
|
203
|
+
let networkProvision = {
|
|
204
|
+
"getExternalKeyData": (key, keyConfig, cb) => {
|
|
205
|
+
return cb(null, JSON.parse(JSON.stringify(networkKeyObj)));
|
|
206
|
+
},
|
|
207
|
+
"getPackageData": (pack, cb) => {
|
|
208
|
+
// Verify the package was overridden
|
|
209
|
+
if (pack === "AVAPP_DEFAU") {
|
|
210
|
+
return cb(null, {"acl": {}, "_TTL": 604800000});
|
|
211
|
+
}
|
|
212
|
+
return cb(new Error("Expected package AVAPP_DEFAU but got " + pack));
|
|
213
|
+
}
|
|
214
|
+
};
|
|
215
|
+
let mw_use = mw({"provision": networkProvision, "regEnvironment": "dev"});
|
|
216
|
+
mw_use(networkReq, res, (err) => {
|
|
217
|
+
if (err) {
|
|
218
|
+
done(new Error("Unexpected error: " + err));
|
|
219
|
+
} else {
|
|
220
|
+
done();
|
|
221
|
+
}
|
|
222
|
+
});
|
|
223
|
+
});
|
|
224
|
+
|
|
225
|
+
it("Call MW without network in registry - should NOT replace package", function (done) {
|
|
226
|
+
let reqNoNetwork = JSON.parse(JSON.stringify(networkReq));
|
|
227
|
+
reqNoNetwork.soajs.registry.custom = {};
|
|
228
|
+
reqNoNetwork.get = () => key;
|
|
229
|
+
reqNoNetwork.soajs.log = {
|
|
230
|
+
"error": (err) => { console.log(err); },
|
|
231
|
+
"debug": (msg) => { console.log(msg); }
|
|
232
|
+
};
|
|
233
|
+
|
|
234
|
+
let networkProvision = {
|
|
235
|
+
"getExternalKeyData": (key, keyConfig, cb) => {
|
|
236
|
+
return cb(null, JSON.parse(JSON.stringify(networkKeyObj)));
|
|
237
|
+
},
|
|
238
|
+
"getPackageData": (pack, cb) => {
|
|
239
|
+
// Verify the package was NOT overridden
|
|
240
|
+
if (pack === "AVAPP_EXMPL") {
|
|
241
|
+
return cb(null, {"acl": {}, "_TTL": 604800000});
|
|
242
|
+
}
|
|
243
|
+
return cb(new Error("Expected package AVAPP_EXMPL but got " + pack));
|
|
244
|
+
}
|
|
245
|
+
};
|
|
246
|
+
let mw_use = mw({"provision": networkProvision, "regEnvironment": "dev"});
|
|
247
|
+
mw_use(reqNoNetwork, res, (err) => {
|
|
248
|
+
if (err) {
|
|
249
|
+
done(new Error("Unexpected error: " + err));
|
|
250
|
+
} else {
|
|
251
|
+
done();
|
|
252
|
+
}
|
|
253
|
+
});
|
|
254
|
+
});
|
|
255
|
+
|
|
256
|
+
it("Call MW with different network - should NOT replace package", function (done) {
|
|
257
|
+
let reqDiffNetwork = JSON.parse(JSON.stringify(networkReq));
|
|
258
|
+
reqDiffNetwork.soajs.registry.custom.gateway.value.lastSeen.network = "other";
|
|
259
|
+
reqDiffNetwork.get = () => key;
|
|
260
|
+
reqDiffNetwork.soajs.log = {
|
|
261
|
+
"error": (err) => { console.log(err); },
|
|
262
|
+
"debug": (msg) => { console.log(msg); }
|
|
263
|
+
};
|
|
264
|
+
|
|
265
|
+
let networkProvision = {
|
|
266
|
+
"getExternalKeyData": (key, keyConfig, cb) => {
|
|
267
|
+
return cb(null, JSON.parse(JSON.stringify(networkKeyObj)));
|
|
268
|
+
},
|
|
269
|
+
"getPackageData": (pack, cb) => {
|
|
270
|
+
// Verify the package was NOT overridden (different network)
|
|
271
|
+
if (pack === "AVAPP_EXMPL") {
|
|
272
|
+
return cb(null, {"acl": {}, "_TTL": 604800000});
|
|
273
|
+
}
|
|
274
|
+
return cb(new Error("Expected package AVAPP_EXMPL but got " + pack));
|
|
275
|
+
}
|
|
276
|
+
};
|
|
277
|
+
let mw_use = mw({"provision": networkProvision, "regEnvironment": "dev"});
|
|
278
|
+
mw_use(reqDiffNetwork, res, (err) => {
|
|
279
|
+
if (err) {
|
|
280
|
+
done(new Error("Unexpected error: " + err));
|
|
281
|
+
} else {
|
|
282
|
+
done();
|
|
283
|
+
}
|
|
284
|
+
});
|
|
285
|
+
});
|
|
286
|
+
});
|
|
137
287
|
});
|
|
@@ -7,7 +7,7 @@ const nock = require('nock')
|
|
|
7
7
|
|
|
8
8
|
describe("Unit test for: mw - lastSeen", () => {
|
|
9
9
|
|
|
10
|
-
it("success -
|
|
10
|
+
it("success - with network", (done) => {
|
|
11
11
|
let res = {};
|
|
12
12
|
let req = {
|
|
13
13
|
getClientIP: () => {
|
|
@@ -42,7 +42,8 @@ describe("Unit test for: mw - lastSeen", () => {
|
|
|
42
42
|
gateway: {
|
|
43
43
|
value: {
|
|
44
44
|
lastSeen: {
|
|
45
|
-
active: true
|
|
45
|
+
active: true,
|
|
46
|
+
network: "YAYA"
|
|
46
47
|
}
|
|
47
48
|
}
|
|
48
49
|
}
|
|
@@ -51,11 +52,11 @@ describe("Unit test for: mw - lastSeen", () => {
|
|
|
51
52
|
}
|
|
52
53
|
};
|
|
53
54
|
const scope = nock('http://urac.fake:4001')
|
|
54
|
-
.post('/user/last/seen')
|
|
55
|
+
.post('/user/last/seen', "{\"network\":\"YAYA\"}")
|
|
55
56
|
.reply(200, {
|
|
56
57
|
result: true,
|
|
57
58
|
data: true
|
|
58
|
-
})
|
|
59
|
+
});
|
|
59
60
|
let functionMw = mw({});
|
|
60
61
|
functionMw(req, res, (error) => {
|
|
61
62
|
assert.ifError(error);
|
package/test/unit/mw/mt/urac.js
CHANGED
|
@@ -78,17 +78,17 @@ describe("Unit test for: mw - mt URAC", () => {
|
|
|
78
78
|
oauth.bearerToken = require('../../../data/sample/bearerToken.json');
|
|
79
79
|
soajs.tenant.application.product = "DSBRD";
|
|
80
80
|
let uracDriver = new UracDriver({"soajs": soajs, "oauth": oauth});
|
|
81
|
-
|
|
81
|
+
|
|
82
82
|
let provisionStub;
|
|
83
|
-
|
|
83
|
+
|
|
84
84
|
before((done) => {
|
|
85
85
|
const coreModules = require("soajs.core.modules");
|
|
86
86
|
let provision = coreModules.provision;
|
|
87
|
-
|
|
87
|
+
|
|
88
88
|
provisionStub = sinon.stub(provision, 'getPackagesData').callsFake((code, cb) => {
|
|
89
89
|
return cb(null, []);
|
|
90
90
|
});
|
|
91
|
-
|
|
91
|
+
|
|
92
92
|
done();
|
|
93
93
|
});
|
|
94
94
|
after((done) => {
|
|
@@ -154,4 +154,157 @@ describe("Unit test for: mw - mt URAC", () => {
|
|
|
154
154
|
done();
|
|
155
155
|
});
|
|
156
156
|
});
|
|
157
|
+
|
|
158
|
+
describe("Network Package Override test for: mw - mt URAC", () => {
|
|
159
|
+
let networkSoajs = {
|
|
160
|
+
tenant: {
|
|
161
|
+
application: {
|
|
162
|
+
product: "AVAPP"
|
|
163
|
+
},
|
|
164
|
+
key: {
|
|
165
|
+
iKey: "1111"
|
|
166
|
+
}
|
|
167
|
+
},
|
|
168
|
+
registry: {
|
|
169
|
+
custom: {
|
|
170
|
+
gateway: {
|
|
171
|
+
value: {
|
|
172
|
+
lastSeen: {
|
|
173
|
+
network: "mw"
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
},
|
|
179
|
+
controller: {
|
|
180
|
+
serviceParams: {
|
|
181
|
+
keyObj: {
|
|
182
|
+
config: {
|
|
183
|
+
gateway: {
|
|
184
|
+
networkPackages: {
|
|
185
|
+
"mw": {
|
|
186
|
+
"AVAPP": {
|
|
187
|
+
"default": "AVAPP_DEFAU",
|
|
188
|
+
"users": {
|
|
189
|
+
"AVAPP_EXMPL": "AVAPP_ALTRN"
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
}
|
|
195
|
+
}
|
|
196
|
+
}
|
|
197
|
+
}
|
|
198
|
+
},
|
|
199
|
+
log: {
|
|
200
|
+
debug: (msg) => {
|
|
201
|
+
console.log(msg);
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
};
|
|
205
|
+
|
|
206
|
+
let networkOauth = {
|
|
207
|
+
type: 2,
|
|
208
|
+
bearerToken: {
|
|
209
|
+
user: {
|
|
210
|
+
"_id": "user123",
|
|
211
|
+
"username": "testuser",
|
|
212
|
+
"firstName": "Test",
|
|
213
|
+
"lastName": "User",
|
|
214
|
+
"email": "test@example.com",
|
|
215
|
+
"groups": ["testgroup"],
|
|
216
|
+
"config": {},
|
|
217
|
+
"tenant": {"id": "tenant123", "code": "TEST"},
|
|
218
|
+
"groupsConfig": {
|
|
219
|
+
"allowedPackages": {
|
|
220
|
+
"AVAPP": ["AVAPP_EXMPL"]
|
|
221
|
+
}
|
|
222
|
+
},
|
|
223
|
+
"loginMode": "oauth",
|
|
224
|
+
"id": "user123"
|
|
225
|
+
}
|
|
226
|
+
}
|
|
227
|
+
};
|
|
228
|
+
|
|
229
|
+
let provisionStub;
|
|
230
|
+
let receivedPackages = null;
|
|
231
|
+
|
|
232
|
+
before((done) => {
|
|
233
|
+
const coreModules = require("soajs.core.modules");
|
|
234
|
+
let provision = coreModules.provision;
|
|
235
|
+
|
|
236
|
+
provisionStub = sinon.stub(provision, 'getPackagesData').callsFake((packages, cb) => {
|
|
237
|
+
receivedPackages = packages;
|
|
238
|
+
return cb(null, []);
|
|
239
|
+
});
|
|
240
|
+
|
|
241
|
+
done();
|
|
242
|
+
});
|
|
243
|
+
|
|
244
|
+
after((done) => {
|
|
245
|
+
if (provisionStub) {
|
|
246
|
+
provisionStub.restore();
|
|
247
|
+
}
|
|
248
|
+
done();
|
|
249
|
+
});
|
|
250
|
+
|
|
251
|
+
it("test resolveACL with user network package override - should replace package", (done) => {
|
|
252
|
+
receivedPackages = null;
|
|
253
|
+
let uracDriver = new UracDriver({"soajs": networkSoajs, "oauth": networkOauth});
|
|
254
|
+
|
|
255
|
+
uracDriver.init((error, uracProfile) => {
|
|
256
|
+
// Verify getPackagesData was called with the overridden package
|
|
257
|
+
assert.ok(receivedPackages, "getPackagesData should have been called");
|
|
258
|
+
assert.deepStrictEqual(receivedPackages, ["AVAPP_ALTRN"], "Package should be overridden from AVAPP_EXMPL to AVAPP_ALTRN");
|
|
259
|
+
done();
|
|
260
|
+
});
|
|
261
|
+
});
|
|
262
|
+
|
|
263
|
+
it("test resolveACL without network - should NOT replace package", (done) => {
|
|
264
|
+
receivedPackages = null;
|
|
265
|
+
let soajsNoNetwork = JSON.parse(JSON.stringify(networkSoajs));
|
|
266
|
+
soajsNoNetwork.registry.custom = {};
|
|
267
|
+
soajsNoNetwork.log = {debug: (msg) => console.log(msg)};
|
|
268
|
+
|
|
269
|
+
let uracDriver = new UracDriver({"soajs": soajsNoNetwork, "oauth": networkOauth});
|
|
270
|
+
|
|
271
|
+
uracDriver.init((error, uracProfile) => {
|
|
272
|
+
// Verify getPackagesData was called with the original package
|
|
273
|
+
assert.ok(receivedPackages, "getPackagesData should have been called");
|
|
274
|
+
assert.deepStrictEqual(receivedPackages, ["AVAPP_EXMPL"], "Package should NOT be overridden");
|
|
275
|
+
done();
|
|
276
|
+
});
|
|
277
|
+
});
|
|
278
|
+
|
|
279
|
+
it("test resolveACL with different network - should NOT replace package", (done) => {
|
|
280
|
+
receivedPackages = null;
|
|
281
|
+
let soajsDiffNetwork = JSON.parse(JSON.stringify(networkSoajs));
|
|
282
|
+
soajsDiffNetwork.registry.custom.gateway.value.lastSeen.network = "other";
|
|
283
|
+
soajsDiffNetwork.log = {debug: (msg) => console.log(msg)};
|
|
284
|
+
|
|
285
|
+
let uracDriver = new UracDriver({"soajs": soajsDiffNetwork, "oauth": networkOauth});
|
|
286
|
+
|
|
287
|
+
uracDriver.init((error, uracProfile) => {
|
|
288
|
+
// Verify getPackagesData was called with the original package (different network)
|
|
289
|
+
assert.ok(receivedPackages, "getPackagesData should have been called");
|
|
290
|
+
assert.deepStrictEqual(receivedPackages, ["AVAPP_EXMPL"], "Package should NOT be overridden for different network");
|
|
291
|
+
done();
|
|
292
|
+
});
|
|
293
|
+
});
|
|
294
|
+
|
|
295
|
+
it("test resolveACL with no user mapping for package - should NOT replace package", (done) => {
|
|
296
|
+
receivedPackages = null;
|
|
297
|
+
let oauthDiffPackage = JSON.parse(JSON.stringify(networkOauth));
|
|
298
|
+
oauthDiffPackage.bearerToken.user.groupsConfig.allowedPackages.AVAPP = ["AVAPP_OTHER"];
|
|
299
|
+
|
|
300
|
+
let uracDriver = new UracDriver({"soajs": networkSoajs, "oauth": oauthDiffPackage});
|
|
301
|
+
|
|
302
|
+
uracDriver.init((error, uracProfile) => {
|
|
303
|
+
// Verify getPackagesData was called with original package (no mapping exists)
|
|
304
|
+
assert.ok(receivedPackages, "getPackagesData should have been called");
|
|
305
|
+
assert.deepStrictEqual(receivedPackages, ["AVAPP_OTHER"], "Package should NOT be overridden when no mapping exists");
|
|
306
|
+
done();
|
|
307
|
+
});
|
|
308
|
+
});
|
|
309
|
+
});
|
|
157
310
|
});
|
package/test/unit/mw/mt/utils.js
CHANGED
|
@@ -83,7 +83,7 @@ describe("Unit test for: mw - mt utils", () => {
|
|
|
83
83
|
}
|
|
84
84
|
};
|
|
85
85
|
utils.securityDeviceCheck(obj, function (error, obj) {
|
|
86
|
-
assert.
|
|
86
|
+
assert.strictEqual(error, 156);
|
|
87
87
|
done();
|
|
88
88
|
});
|
|
89
89
|
});
|
|
@@ -132,7 +132,7 @@ describe("Unit test for: mw - mt utils", () => {
|
|
|
132
132
|
}
|
|
133
133
|
};
|
|
134
134
|
utils.securityDeviceCheck(obj, function (error, obj) {
|
|
135
|
-
assert.
|
|
135
|
+
assert.strictEqual(error, 156);
|
|
136
136
|
done();
|
|
137
137
|
});
|
|
138
138
|
});
|
|
@@ -181,7 +181,7 @@ describe("Unit test for: mw - mt utils", () => {
|
|
|
181
181
|
}
|
|
182
182
|
};
|
|
183
183
|
utils.securityDeviceCheck(obj, function (error, obj) {
|
|
184
|
-
assert.
|
|
184
|
+
assert.strictEqual(error, 156);
|
|
185
185
|
done();
|
|
186
186
|
});
|
|
187
187
|
});
|
|
@@ -223,7 +223,7 @@ describe("Unit test for: mw - mt utils", () => {
|
|
|
223
223
|
}
|
|
224
224
|
};
|
|
225
225
|
utils.securityDeviceCheck(obj, function (error, obj) {
|
|
226
|
-
assert.
|
|
226
|
+
assert.strictEqual(error, 156);
|
|
227
227
|
done();
|
|
228
228
|
});
|
|
229
229
|
});
|
|
@@ -265,7 +265,7 @@ describe("Unit test for: mw - mt utils", () => {
|
|
|
265
265
|
}
|
|
266
266
|
};
|
|
267
267
|
utils.securityDeviceCheck(obj, function (error, obj) {
|
|
268
|
-
assert.
|
|
268
|
+
assert.strictEqual(error, 156);
|
|
269
269
|
done();
|
|
270
270
|
});
|
|
271
271
|
});
|
|
@@ -305,7 +305,7 @@ describe("Unit test for: mw - mt utils", () => {
|
|
|
305
305
|
}
|
|
306
306
|
};
|
|
307
307
|
utils.securityDeviceCheck(obj, function (error, obj) {
|
|
308
|
-
assert.
|
|
308
|
+
assert.strictEqual(error, 156);
|
|
309
309
|
done();
|
|
310
310
|
});
|
|
311
311
|
});
|
package/.travis.yml
DELETED
|
@@ -1,72 +0,0 @@
|
|
|
1
|
-
dist: focal
|
|
2
|
-
language: node_js
|
|
3
|
-
node_js: 20
|
|
4
|
-
|
|
5
|
-
jobs:
|
|
6
|
-
include:
|
|
7
|
-
|
|
8
|
-
- stage: install, check code style and coverage
|
|
9
|
-
if: tag IS blank
|
|
10
|
-
services:
|
|
11
|
-
- mongodb
|
|
12
|
-
addons:
|
|
13
|
-
hosts:
|
|
14
|
-
- localhost
|
|
15
|
-
before_script:
|
|
16
|
-
- npm install -g grunt-cli
|
|
17
|
-
- sleep 10
|
|
18
|
-
script:
|
|
19
|
-
- grunt
|
|
20
|
-
- if [ "$TRAVIS_BRANCH" != "master" ]; then grunt test; fi
|
|
21
|
-
- if [ "$TRAVIS_BRANCH" = "master" ]; then grunt coverage; fi
|
|
22
|
-
|
|
23
|
-
# - stage: Publish to npm
|
|
24
|
-
# if: branch =~ /(release)/
|
|
25
|
-
# script:
|
|
26
|
-
# - echo "PUBLISH npm"
|
|
27
|
-
# deploy:
|
|
28
|
-
# skip_cleanup: true
|
|
29
|
-
# provider: npm
|
|
30
|
-
# email: $NPM_EMAIL
|
|
31
|
-
# api_key: $NPM_TOKEN
|
|
32
|
-
# on:
|
|
33
|
-
# all_branches: true
|
|
34
|
-
# condition: $TRAVIS_BRANCH =~ ^(release)*
|
|
35
|
-
|
|
36
|
-
- stage: Publish to docker registry
|
|
37
|
-
if: branch =~ /(release)/
|
|
38
|
-
script:
|
|
39
|
-
- echo "PUBLISH docker"
|
|
40
|
-
- export PACKAGE_VERSION=$(cat package.json | grep version | head -1 | awk -Fn '{ print $2 }' | sed 's/[n:",]//g' | tr -d '[[:space:]]')
|
|
41
|
-
- export MAJOR_VERSION=$(echo ${PACKAGE_VERSION} | awk -F. '{ print $1 }')
|
|
42
|
-
- echo Package version ${PACKAGE_VERSION}
|
|
43
|
-
- echo Major version ${MAJOR_VERSION}
|
|
44
|
-
|
|
45
|
-
- git config --local user.name ${GIT_USER}
|
|
46
|
-
- git config --local user.email ${GIT_EMAIL}
|
|
47
|
-
- git tag ${PACKAGE_VERSION}
|
|
48
|
-
|
|
49
|
-
- echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin
|
|
50
|
-
|
|
51
|
-
- docker build -t soajsorg/gateway . --platform linux/amd64
|
|
52
|
-
|
|
53
|
-
- docker images
|
|
54
|
-
|
|
55
|
-
- docker tag soajsorg/gateway:latest soajsorg/gateway:${PACKAGE_VERSION}
|
|
56
|
-
- docker tag soajsorg/gateway:latest soajsorg/gateway:${MAJOR_VERSION}.x
|
|
57
|
-
|
|
58
|
-
- docker push soajsorg/gateway
|
|
59
|
-
- docker push soajsorg/gateway:${PACKAGE_VERSION}
|
|
60
|
-
- docker push soajsorg/gateway:${MAJOR_VERSION}.x
|
|
61
|
-
before_deploy:
|
|
62
|
-
- yes | gem update --system --force
|
|
63
|
-
- gem install bundler
|
|
64
|
-
- gem install faraday-net_http -v '3.3.0'
|
|
65
|
-
- gem install uri
|
|
66
|
-
- gem install logger
|
|
67
|
-
deploy:
|
|
68
|
-
on:
|
|
69
|
-
all_branches: true
|
|
70
|
-
provider: releases
|
|
71
|
-
api_key: ${GIT_TOKEN}
|
|
72
|
-
skip_cleanup: true
|