Skip to content
This repository was archived by the owner on Jan 15, 2025. It is now read-only.

Commit d3cbcf0

Browse files
authored
add isStaging for lu builder (#898)
1 parent 547c305 commit d3cbcf0

File tree

6 files changed

+26
-22
lines changed

6 files changed

+26
-22
lines changed

packages/lu/src/parser/lubuild/builder.ts

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -139,6 +139,7 @@ export class Builder {
139139
suffix: string,
140140
fallbackLocale: string,
141141
deleteOldVersion: boolean,
142+
isStaging: boolean,
142143
multiRecognizers?: Map<string, MultiLanguageRecognizer>,
143144
settings?: Map<string, Settings>,
144145
luisAPITPS?: number,
@@ -198,7 +199,7 @@ export class Builder {
198199

199200
if (needTrainAndPublish) {
200201
// train and publish application
201-
await this.trainAndPublishApplication(luBuildCore, recognizer, timeBucket)
202+
await this.trainAndPublishApplication(luBuildCore, recognizer, timeBucket, isStaging)
202203
}
203204

204205
// update multiLanguageRecognizer asset
@@ -371,7 +372,7 @@ export class Builder {
371372
return true
372373
}
373374

374-
async trainAndPublishApplication(luBuildCore: LuBuildCore, recognizer: Recognizer, timeBucket: number) {
375+
async trainAndPublishApplication(luBuildCore: LuBuildCore, recognizer: Recognizer, timeBucket: number, isStaging: boolean) {
375376
// send train application request
376377
this.handler(`${recognizer.getLuPath()} training version=${recognizer.versionId}\n`)
377378
await delay(timeBucket)
@@ -398,8 +399,8 @@ export class Builder {
398399
// publish applications
399400
this.handler(`${recognizer.getLuPath()} publishing version=${recognizer.versionId}\n`)
400401
await delay(timeBucket)
401-
await luBuildCore.publishApplication(recognizer.getAppId(), recognizer.versionId)
402-
this.handler(`${recognizer.getLuPath()} publishing finished\n`)
402+
await luBuildCore.publishApplication(recognizer.getAppId(), recognizer.versionId, isStaging)
403+
this.handler(`${recognizer.getLuPath()} publishing finished for ${isStaging ? 'Staging' : 'Production'} slot\n`)
403404
}
404405

405406
mergeSettingsContent(settingsPath: string, contents: any[]) {

packages/lu/src/parser/lubuild/core.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -345,7 +345,7 @@ export class LuBuildCore {
345345
return status
346346
}
347347

348-
public async publishApplication(appId: string, versionId: string) {
348+
public async publishApplication(appId: string, versionId: string, isStaging: boolean) {
349349
let retryCount = this.retryCount + 1
350350
let error
351351
while (retryCount > 0) {
@@ -354,7 +354,7 @@ export class LuBuildCore {
354354
await this.client.apps.publish(appId,
355355
{
356356
versionId,
357-
isStaging: false
357+
isStaging
358358
})
359359
break
360360
} catch (e) {

packages/luis/README.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -372,6 +372,8 @@ OPTIONS
372372
373373
--schema=schema Defines $schema for generated .dialog files
374374
375+
--isStaging Publish luis application to staging slot if set. Default to production slot
376+
375377
EXAMPLE
376378
377379
$ bf luis:build --in {INPUT_FILE_OR_FOLDER} --authoringKey {AUTHORING_KEY} --botName {BOT_NAME} --dialog

packages/luis/src/commands/luis/build.ts

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,8 @@ export default class LuisBuild extends Command {
4242
deleteOldVersion: flags.boolean({description: 'Delete old version of LUIS application after building new one.'}),
4343
log: flags.boolean({description: 'Write out log messages to console', default: false}),
4444
endpoint: flags.string({description: 'Luis authoring endpoint for publishing'}),
45-
schema: flags.string({description: 'Defines $schema for generated .dialog files'})
45+
schema: flags.string({description: 'Defines $schema for generated .dialog files'}),
46+
isStaging: flags.boolean({description: 'Publish luis application to staging slot if set. Default to production slot', default: false})
4647
}
4748

4849
async run() {
@@ -70,7 +71,7 @@ export default class LuisBuild extends Command {
7071
// Flags override userConfig
7172
let luisBuildFlags = Object.keys(LuisBuild.flags)
7273

73-
let {inVal, authoringKey, botName, region, out, defaultCulture, fallbackLocale, suffix, dialog, force, luConfig, deleteOldVersion, log, schema, endpoint}
74+
let {inVal, authoringKey, botName, region, out, defaultCulture, fallbackLocale, suffix, dialog, force, luConfig, deleteOldVersion, log, endpoint, schema, isStaging}
7475
= await utils.processInputs(flags, luisBuildFlags, this.config.configDir)
7576

7677
flags.stdin = await this.readStdin()
@@ -140,7 +141,7 @@ export default class LuisBuild extends Command {
140141

141142
// update or create and then train and publish luis applications based on loaded resources
142143
if (log) this.log('Handling applications...')
143-
const dialogContents = await builder.build(luContents, recognizers, authoringKey, endpoint, botName, suffix, fallbackLocale, deleteOldVersion, multiRecognizers, settings)
144+
const dialogContents = await builder.build(luContents, recognizers, authoringKey, endpoint, botName, suffix, fallbackLocale, deleteOldVersion, isStaging, multiRecognizers, settings)
144145

145146
// write dialog assets based on config
146147
if (out) {

packages/luis/test/commands/luis/build.test.ts

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -108,21 +108,21 @@ describe('luis:build create a new application successfully', () => {
108108
nock('https://westus.api.cognitive.microsoft.com')
109109
.post(uri => uri.includes('publish'))
110110
.reply(201, {
111-
versionId: '0.2',
111+
versionId: '0.1',
112112
isStaging: true
113113
})
114114
})
115115

116116
test
117117
.stdout()
118-
.command(['luis:build', '--in', './test/fixtures/testcases/lubuild/sandwich//lufiles/sandwich.en-us.lu', '--authoringKey', uuidv1(), '--botName', 'test', '--log', '--suffix', 'development'])
118+
.command(['luis:build', '--in', './test/fixtures/testcases/lubuild/sandwich//lufiles/sandwich.en-us.lu', '--authoringKey', uuidv1(), '--botName', 'test', '--log', '--suffix', 'development', '--isStaging'])
119119
.it('should create a new application successfully', ctx => {
120120
expect(ctx.stdout).to.contain('Handling applications...')
121121
expect(ctx.stdout).to.contain('Creating LUIS.ai application')
122122
expect(ctx.stdout).to.contain('training version=0.1')
123123
expect(ctx.stdout).to.contain('waiting for training for version=0.1')
124124
expect(ctx.stdout).to.contain('publishing version=0.1')
125-
expect(ctx.stdout).to.contain('publishing finished')
125+
expect(ctx.stdout).to.contain('publishing finished for Staging slot')
126126
})
127127
})
128128

@@ -174,7 +174,7 @@ describe('luis:build update application succeed when utterances changed', () =>
174174
.post(uri => uri.includes('publish'))
175175
.reply(201, {
176176
versionId: '0.2',
177-
isStaging: true
177+
isStaging: false
178178
})
179179
})
180180

@@ -239,7 +239,7 @@ describe('luis:build update application succeed when utterances added', () => {
239239
.post(uri => uri.includes('publish'))
240240
.reply(201, {
241241
versionId: '0.2',
242-
isStaging: true
242+
isStaging: false
243243
})
244244
})
245245

@@ -453,14 +453,14 @@ describe('luis:build create multiple applications successfully when input is a f
453453
.post(uri => uri.includes('publish'))
454454
.reply(201, {
455455
versionId: '0.2',
456-
isStaging: true
456+
isStaging: false
457457
})
458458

459459
nock('https://westus.api.cognitive.microsoft.com')
460460
.post(uri => uri.includes('publish'))
461461
.reply(201, {
462462
versionId: '0.2',
463-
isStaging: true
463+
isStaging: false
464464
})
465465

466466
nock('https://westus.api.cognitive.microsoft.com')
@@ -573,7 +573,7 @@ describe('luis:build update dialog assets successfully when dialog assets exist'
573573
.post(uri => uri.includes('publish'))
574574
.reply(201, {
575575
versionId: '0.2',
576-
isStaging: true
576+
isStaging: false
577577
})
578578
})
579579

@@ -713,7 +713,7 @@ describe('luis:build update application succeed with parameters set from luconfi
713713
.post(uri => uri.includes('publish'))
714714
.reply(201, {
715715
versionId: '0.2',
716-
isStaging: true
716+
isStaging: false
717717
})
718718
})
719719

@@ -776,7 +776,7 @@ describe('luis:build create a new application successfully with locale set to it
776776
.post(uri => uri.includes('publish'))
777777
.reply(201, {
778778
versionId: '0.2',
779-
isStaging: true
779+
isStaging: false
780780
})
781781
})
782782

@@ -847,7 +847,7 @@ describe('luis:build update application succeed when activeVersion is null', ()
847847
.post(uri => uri.includes('publish'))
848848
.reply(201, {
849849
versionId: '0.2',
850-
isStaging: true
850+
isStaging: false
851851
})
852852
})
853853

@@ -901,7 +901,7 @@ describe('luis:build create a new application successfully with endpoint overrid
901901
.post(uri => uri.includes('publish'))
902902
.reply(201, {
903903
versionId: '0.2',
904-
isStaging: true
904+
isStaging: false
905905
})
906906
})
907907

packages/qnamaker/src/commands/qnamaker/build.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,7 @@ export default class QnamakerBuild extends Command {
7070
// Flags override userConfig
7171
let qnamakerBuildFlags = Object.keys(QnamakerBuild.flags)
7272

73-
let {inVal, subscriptionKey, botName, region, out, defaultCulture, fallbackLocale, suffix, dialog, force, log, schema, endpoint}
73+
let {inVal, subscriptionKey, botName, region, out, defaultCulture, fallbackLocale, suffix, dialog, force, log, endpoint, schema}
7474
= await processFlags(flags, qnamakerBuildFlags, this.config.configDir)
7575

7676
flags.stdin = await this.readStdin()

0 commit comments

Comments
 (0)