From 7ae852d8e48ff2c1f4c444404224d528809988b6 Mon Sep 17 00:00:00 2001 From: HANG SUN Date: Thu, 15 Dec 2022 12:01:18 +0800 Subject: [PATCH 1/3] add variable AZDO_DATABRICKS_JOBID --- tasks/ExecuteNotebook/ExecuteNotebookV1/executeNotebook.ts | 2 ++ 1 file changed, 2 insertions(+) diff --git a/tasks/ExecuteNotebook/ExecuteNotebookV1/executeNotebook.ts b/tasks/ExecuteNotebook/ExecuteNotebookV1/executeNotebook.ts index 18c6efe..5479ce0 100644 --- a/tasks/ExecuteNotebook/ExecuteNotebookV1/executeNotebook.ts +++ b/tasks/ExecuteNotebook/ExecuteNotebookV1/executeNotebook.ts @@ -116,6 +116,8 @@ class Notebook{ return; } + tl.setVariable("AZDO_DATABRICKS_JOBID", job.job_id); + let run = this.createRun(job); if(run == null){ From 9cb711dc4113d8ca7f3156ce08a3e6a84f4e8b87 Mon Sep 17 00:00:00 2001 From: Ric Serradas Date: Mon, 19 Dec 2022 16:20:38 -0800 Subject: [PATCH 2/3] Updating dependencies and fixing syntaxes --- azure-pipelines-cd.yml | 2 +- azure-pipelines.yml | 2 +- package.json | 4 ++-- .../ConfigureDatabricksV1/index.ts | 8 ++++---- .../DeployNotebooksTaskV1/index.ts | 8 ++++---- .../ExecuteNotebookV1/executeNotebook.ts | 12 ++++++------ .../CompileInstallJarV1/compileinstalljar.ts | 16 ++++++++-------- .../InstallScalaToolsV1/installScalaTools.js | 3 ++- .../InstallScalaToolsV1/installScalaTools.ts | 4 ++-- .../InstallSpark/InstallSparkV1/installSpark.js | 3 ++- .../InstallSpark/InstallSparkV1/installSpark.ts | 2 +- .../RunSbtTests/RunSbtTestsV1/runsbttests.js | 3 ++- .../RunSbtTests/RunSbtTestsV1/runsbttests.ts | 6 +++--- .../StartCluster/StartClusterV1/startCluster.js | 3 ++- .../StartCluster/StartClusterV1/startCluster.ts | 5 ++--- .../uninstallcodefromcluster.js | 3 ++- .../uninstallcodefromcluster.ts | 10 +++++----- .../waitforclusterreboot.js | 3 ++- .../waitforclusterreboot.ts | 6 +++--- .../WaitExecutionV1/waitexecution.ts | 2 +- 20 files changed, 55 insertions(+), 50 deletions(-) diff --git a/azure-pipelines-cd.yml b/azure-pipelines-cd.yml index 7328e55..0fa4102 100644 --- a/azure-pipelines-cd.yml +++ b/azure-pipelines-cd.yml @@ -13,7 +13,7 @@ pool: steps: - task: NodeTool@0 inputs: - versionSpec: "10.x" + versionSpec: "18.x" displayName: "Install Node.js" - script: | diff --git a/azure-pipelines.yml b/azure-pipelines.yml index 536bd48..37e5b25 100644 --- a/azure-pipelines.yml +++ b/azure-pipelines.yml @@ -15,7 +15,7 @@ pool: steps: - task: NodeTool@0 inputs: - versionSpec: "10.x" + versionSpec: "18.x" displayName: "Install Node.js" - script: | diff --git a/package.json b/package.json index 7161055..45f5d1b 100644 --- a/package.json +++ b/package.json @@ -3,14 +3,14 @@ "version": "0.1.0", "description": "A set of Pipeline tasks to help add DevOps practices to a Databricks development cycle.", "dependencies": { - "azure-pipelines-task-lib": "^2.8.0", + "azure-pipelines-task-lib": "^4.1.0", "recursive-install": "^1.4.0" }, "devDependencies": { "@types/mocha": "^5.2.7", "@types/node": "^12.0.8", "@types/q": "^1.5.2", - "tfx-cli": "^0.7.6" + "tfx-cli": "^0.12.0" }, "scripts": { "recursive-install": "npm-recursive-install", diff --git a/tasks/ConfigureDatabricks/ConfigureDatabricksV1/index.ts b/tasks/ConfigureDatabricks/ConfigureDatabricksV1/index.ts index 5d24c3a..b0ddcc3 100644 --- a/tasks/ConfigureDatabricks/ConfigureDatabricksV1/index.ts +++ b/tasks/ConfigureDatabricks/ConfigureDatabricksV1/index.ts @@ -9,8 +9,8 @@ import { stringify } from 'querystring'; async function run() { try { - const url: string = tl.getInput('url', true); - const token: string = tl.getInput('token', true); + const url: string = tl.getInput('url', true)!; + const token: string = tl.getInput('token', true)!; installDatabricksCli(); @@ -18,7 +18,7 @@ async function run() { let homeDir = os.homedir(); } - catch (err) { + catch (err: any) { tl.setResult(tl.TaskResult.Failed, err.message); } } @@ -47,7 +47,7 @@ async function configurePat(url:string, token: string){ fs.writeFileSync(databricksCfgPath, content, { flag: "w"}); } - catch (err) { + catch (err: any) { tl.setResult(tl.TaskResult.Failed, err.message); } } diff --git a/tasks/DeployNotebooksTask/DeployNotebooksTaskV1/index.ts b/tasks/DeployNotebooksTask/DeployNotebooksTaskV1/index.ts index 58ae00a..c3f76e2 100644 --- a/tasks/DeployNotebooksTask/DeployNotebooksTaskV1/index.ts +++ b/tasks/DeployNotebooksTask/DeployNotebooksTaskV1/index.ts @@ -4,8 +4,8 @@ import { fstat } from 'fs'; async function run() { try { - const notebooksFolderPath: string = tl.getInput('notebooksFolderPath', true); - const workspaceFolder: string = tl.getInput('workspaceFolder', true); + const notebooksFolderPath: string = tl.getInput('notebooksFolderPath', true)!; + const workspaceFolder: string = tl.getInput('workspaceFolder', true)!; if (!isDirSync(notebooksFolderPath)){ tl.setResult(tl.TaskResult.Failed, 'The specified path for Notebooks folder is a file.') @@ -24,7 +24,7 @@ async function run() { console.log(importResult.stdout); } } - catch (err) { + catch (err: any) { tl.setResult(tl.TaskResult.Failed, err.message); } } @@ -32,7 +32,7 @@ async function run() { function isDirSync(aPath: string) { try { return fs.statSync(aPath).isDirectory(); - } catch (e) { + } catch (e: any) { if (e.code === 'ENOENT') { return false; } else { diff --git a/tasks/ExecuteNotebook/ExecuteNotebookV1/executeNotebook.ts b/tasks/ExecuteNotebook/ExecuteNotebookV1/executeNotebook.ts index 5479ce0..ea5a8db 100644 --- a/tasks/ExecuteNotebook/ExecuteNotebookV1/executeNotebook.ts +++ b/tasks/ExecuteNotebook/ExecuteNotebookV1/executeNotebook.ts @@ -7,9 +7,9 @@ async function run() { tl.setResourcePath(path.join(__dirname, 'task.json')); try { - const notebookPath: string = tl.getInput('notebookPath', true); - const executionParams: string = tl.getInput('executionParams', false); - const existingClusterId: string = tl.getInput('existingClusterId', false); + const notebookPath: string = tl.getInput('notebookPath', true)!; + const executionParams: string = tl.getInput('executionParams', false)!; + const existingClusterId: string = tl.getInput('existingClusterId', false)!; let notebook = new Notebook(notebookPath, executionParams); @@ -23,7 +23,7 @@ async function run() { notebook.execute(existingClusterId); } } - catch (err) { + catch (err: any) { tl.setResult(tl.TaskResult.Failed, err.message); } } @@ -62,7 +62,7 @@ class Notebook{ try { let paramsJson = JSON.parse(this.params); - } catch (error) { + } catch (error: any) { tl.setResult(tl.TaskResult.Failed, error); return false; @@ -101,7 +101,7 @@ class Notebook{ }); return true; - } catch (err) { + } catch (err: any) { tl.setResult(tl.TaskResult.Failed, err); } } diff --git a/tasks/Scala/CompileInstallJar/CompileInstallJarV1/compileinstalljar.ts b/tasks/Scala/CompileInstallJar/CompileInstallJarV1/compileinstalljar.ts index c3d2ed6..f3c6d11 100644 --- a/tasks/Scala/CompileInstallJar/CompileInstallJarV1/compileinstalljar.ts +++ b/tasks/Scala/CompileInstallJar/CompileInstallJarV1/compileinstalljar.ts @@ -3,13 +3,13 @@ import tl = require('azure-pipelines-task-lib'); import shell = require('shelljs'); async function compileInstallJar(){ - const failOnStderr: boolean = tl.getBoolInput('failOnStderr', false); - const clusterid: string = tl.getInput('clusterid', true); - const workingDirectory: string = tl.getInput('workingDirectory', false); - const packageName: string = tl.getInput('packageName', true); - const packageVersion: string = tl.getInput('packageVersion', true); - const scalaVersion: string = tl.getInput('scalaVersion', true); - const sampleDataSetFilePath: string = tl.getInput('sampleDataSetFilePath', true); + const failOnStderr: boolean = tl.getBoolInput('failOnStderr', false)!; + const clusterid: string = tl.getInput('clusterid', true)!; + const workingDirectory: string = tl.getInput('workingDirectory', false)!; + const packageName: string = tl.getInput('packageName', true)!; + const packageVersion: string = tl.getInput('packageVersion', true)!; + const scalaVersion: string = tl.getInput('scalaVersion', true)!; + const sampleDataSetFilePath: string = tl.getInput('sampleDataSetFilePath', true)!; if(workingDirectory){ shell.cd(workingDirectory); @@ -41,7 +41,7 @@ async function run() { } else { await compileInstallJar(); } - } catch(err){ + } catch(err: any){ tl.setResult(tl.TaskResult.Failed, err.message); } } diff --git a/tasks/Scala/InstallScalaTools/InstallScalaToolsV1/installScalaTools.js b/tasks/Scala/InstallScalaTools/InstallScalaToolsV1/installScalaTools.js index 8aaedc4..2247634 100644 --- a/tasks/Scala/InstallScalaTools/InstallScalaToolsV1/installScalaTools.js +++ b/tasks/Scala/InstallScalaTools/InstallScalaToolsV1/installScalaTools.js @@ -1,9 +1,10 @@ "use strict"; var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } return new (P || (P = Promise))(function (resolve, reject) { function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } - function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } step((generator = generator.apply(thisArg, _arguments || [])).next()); }); }; diff --git a/tasks/Scala/InstallScalaTools/InstallScalaToolsV1/installScalaTools.ts b/tasks/Scala/InstallScalaTools/InstallScalaToolsV1/installScalaTools.ts index 97d9e4e..08c8702 100644 --- a/tasks/Scala/InstallScalaTools/InstallScalaToolsV1/installScalaTools.ts +++ b/tasks/Scala/InstallScalaTools/InstallScalaToolsV1/installScalaTools.ts @@ -57,7 +57,7 @@ async function run() { // Write the script to disk. tl.assertAgent('2.115.0'); - let tempDirectory = tl.getVariable('agent.tempDirectory'); + let tempDirectory = tl.getVariable('agent.tempDirectory')!; tl.checkPath(tempDirectory, `${tempDirectory} (agent.tempDirectory)`); let fileName = uuidV4() + '.sh'; @@ -123,7 +123,7 @@ async function run() { tl.setResult(result, "", true); } - catch (err) { + catch (err: any) { tl.setResult(tl.TaskResult.Failed, err.message || 'run() failed', true); } } diff --git a/tasks/Scala/InstallSpark/InstallSparkV1/installSpark.js b/tasks/Scala/InstallSpark/InstallSparkV1/installSpark.js index a8f11d6..8d60fb4 100644 --- a/tasks/Scala/InstallSpark/InstallSparkV1/installSpark.js +++ b/tasks/Scala/InstallSpark/InstallSparkV1/installSpark.js @@ -1,9 +1,10 @@ "use strict"; var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } return new (P || (P = Promise))(function (resolve, reject) { function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } - function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } step((generator = generator.apply(thisArg, _arguments || [])).next()); }); }; diff --git a/tasks/Scala/InstallSpark/InstallSparkV1/installSpark.ts b/tasks/Scala/InstallSpark/InstallSparkV1/installSpark.ts index 7598ed4..f14ab1d 100644 --- a/tasks/Scala/InstallSpark/InstallSparkV1/installSpark.ts +++ b/tasks/Scala/InstallSpark/InstallSparkV1/installSpark.ts @@ -55,7 +55,7 @@ async function run() { tl.setResult(result, "", true); } - catch (err) { + catch (err: any) { tl.setResult(tl.TaskResult.Failed, err.message); } } diff --git a/tasks/Scala/RunSbtTests/RunSbtTestsV1/runsbttests.js b/tasks/Scala/RunSbtTests/RunSbtTestsV1/runsbttests.js index ddbc134..b9082b7 100644 --- a/tasks/Scala/RunSbtTests/RunSbtTestsV1/runsbttests.js +++ b/tasks/Scala/RunSbtTests/RunSbtTestsV1/runsbttests.js @@ -1,9 +1,10 @@ "use strict"; var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } return new (P || (P = Promise))(function (resolve, reject) { function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } - function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } step((generator = generator.apply(thisArg, _arguments || [])).next()); }); }; diff --git a/tasks/Scala/RunSbtTests/RunSbtTestsV1/runsbttests.ts b/tasks/Scala/RunSbtTests/RunSbtTestsV1/runsbttests.ts index 9d41ae0..54e022d 100644 --- a/tasks/Scala/RunSbtTests/RunSbtTestsV1/runsbttests.ts +++ b/tasks/Scala/RunSbtTests/RunSbtTestsV1/runsbttests.ts @@ -7,8 +7,8 @@ async function run() { tl.setResourcePath(path.join(__dirname, 'task.json')); const failOnStderr: boolean = tl.getBoolInput('failOnStderr', false); - const workingDirectory: string = tl.getInput('workingDirectory', false); - const additionalParameters: string = tl.getInput('additionalParameters', false) + const workingDirectory: string = tl.getInput('workingDirectory', false)!; + const additionalParameters: string = tl.getInput('additionalParameters', false)!; if(workingDirectory != ''){ shell.cd(workingDirectory); @@ -27,7 +27,7 @@ async function run() { tl.setResult(tl.TaskResult.Failed, `Command wrote to stderr: ${runSbtExec.stderr}`); } } - catch (err) { + catch (err: any) { tl.setResult(tl.TaskResult.Failed, err.message); } } diff --git a/tasks/Scala/StartCluster/StartClusterV1/startCluster.js b/tasks/Scala/StartCluster/StartClusterV1/startCluster.js index be95c2d..64721c6 100644 --- a/tasks/Scala/StartCluster/StartClusterV1/startCluster.js +++ b/tasks/Scala/StartCluster/StartClusterV1/startCluster.js @@ -1,9 +1,10 @@ "use strict"; var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } return new (P || (P = Promise))(function (resolve, reject) { function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } - function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } step((generator = generator.apply(thisArg, _arguments || [])).next()); }); }; diff --git a/tasks/Scala/StartCluster/StartClusterV1/startCluster.ts b/tasks/Scala/StartCluster/StartClusterV1/startCluster.ts index 571dfd8..eec417a 100644 --- a/tasks/Scala/StartCluster/StartClusterV1/startCluster.ts +++ b/tasks/Scala/StartCluster/StartClusterV1/startCluster.ts @@ -1,7 +1,6 @@ import shell = require('shelljs'); import path = require('path'); import tl = require('azure-pipelines-task-lib'); -import { async } from 'q'; async function startCluster(clusterid: string, failOnStderr: boolean) { let fileName = 'startCluster.sh'; @@ -22,7 +21,7 @@ async function run() { try{ tl.setResourcePath(path.join(__dirname, 'task.json')); - const clusterid: string = tl.getInput('clusterid', true); + const clusterid: string = tl.getInput('clusterid', true)!; const failOnStderr: boolean = tl.getBoolInput('failOnStderr', false); if(!shell.which('databricks')){ @@ -30,7 +29,7 @@ async function run() { } else { await startCluster(clusterid, failOnStderr); } - } catch(err){ + } catch(err: any){ tl.setResult(tl.TaskResult.Failed, err.message); } } diff --git a/tasks/Scala/UninstallCodeFromCluster/UninstallCodeFromClusterV1/uninstallcodefromcluster.js b/tasks/Scala/UninstallCodeFromCluster/UninstallCodeFromClusterV1/uninstallcodefromcluster.js index 0ef4577..42a44f5 100644 --- a/tasks/Scala/UninstallCodeFromCluster/UninstallCodeFromClusterV1/uninstallcodefromcluster.js +++ b/tasks/Scala/UninstallCodeFromCluster/UninstallCodeFromClusterV1/uninstallcodefromcluster.js @@ -1,9 +1,10 @@ "use strict"; var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } return new (P || (P = Promise))(function (resolve, reject) { function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } - function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } step((generator = generator.apply(thisArg, _arguments || [])).next()); }); }; diff --git a/tasks/Scala/UninstallCodeFromCluster/UninstallCodeFromClusterV1/uninstallcodefromcluster.ts b/tasks/Scala/UninstallCodeFromCluster/UninstallCodeFromClusterV1/uninstallcodefromcluster.ts index 2360f26..7f852e4 100644 --- a/tasks/Scala/UninstallCodeFromCluster/UninstallCodeFromClusterV1/uninstallcodefromcluster.ts +++ b/tasks/Scala/UninstallCodeFromCluster/UninstallCodeFromClusterV1/uninstallcodefromcluster.ts @@ -4,9 +4,9 @@ import shell = require('shelljs'); function uninstallLibsFromCluster() { try { - const failOnStderr: boolean = tl.getBoolInput('failOnStderr', false); - const libraryfilename: string = tl.getInput('libraryfilename', true); - const clusterid: string = tl.getInput('clusterid', true); + const failOnStderr: boolean = tl.getBoolInput('failOnStderr', false)!; + const libraryfilename: string = tl.getInput('libraryfilename', true)!; + const clusterid: string = tl.getInput('clusterid', true)!; let fileName = 'uninstallcodefromcluster.sh' let filePath = path.join(__dirname, fileName); @@ -20,7 +20,7 @@ function uninstallLibsFromCluster() { if(failOnStderr && uninstallExec.stderr != ""){ tl.setResult(tl.TaskResult.Failed, `Command wrote to stderr: ${uninstallExec.stderr}`); } - } catch(err) { + } catch(err: any) { tl.setResult(tl.TaskResult.Failed, err.message); } } @@ -34,7 +34,7 @@ async function run() { } else { await uninstallLibsFromCluster(); } - } catch(err){ + } catch(err: any){ tl.setResult(tl.TaskResult.Failed, err.message); } } diff --git a/tasks/Scala/WaitForClusterReboot/WaitForClusterRebootV1/waitforclusterreboot.js b/tasks/Scala/WaitForClusterReboot/WaitForClusterRebootV1/waitforclusterreboot.js index db5c5f2..7587433 100644 --- a/tasks/Scala/WaitForClusterReboot/WaitForClusterRebootV1/waitforclusterreboot.js +++ b/tasks/Scala/WaitForClusterReboot/WaitForClusterRebootV1/waitforclusterreboot.js @@ -1,9 +1,10 @@ "use strict"; var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } return new (P || (P = Promise))(function (resolve, reject) { function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } - function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } step((generator = generator.apply(thisArg, _arguments || [])).next()); }); }; diff --git a/tasks/Scala/WaitForClusterReboot/WaitForClusterRebootV1/waitforclusterreboot.ts b/tasks/Scala/WaitForClusterReboot/WaitForClusterRebootV1/waitforclusterreboot.ts index ff50fa7..e86bbc3 100644 --- a/tasks/Scala/WaitForClusterReboot/WaitForClusterRebootV1/waitforclusterreboot.ts +++ b/tasks/Scala/WaitForClusterReboot/WaitForClusterRebootV1/waitforclusterreboot.ts @@ -6,13 +6,13 @@ async function run() { try { tl.setResourcePath(path.join(__dirname, 'task.json')); - const workingDirectory: string = tl.getInput('workingDirectory', false); + const workingDirectory: string = tl.getInput('workingDirectory', false)!; if(workingDirectory != ''){ tl.cd(workingDirectory); } - const clusterid: string = tl.getInput('clusterid', true); + const clusterid: string = tl.getInput('clusterid', true)!; let bashPath: string = tl.which('bash', true); let fileName = 'waitforclusterreboot.sh' @@ -59,7 +59,7 @@ async function run() { tl.setResult(result, "", true); } - catch (err) { + catch (err: any) { tl.setResult(tl.TaskResult.Failed, err.message); } } diff --git a/tasks/WaitExecution/WaitExecutionV1/waitexecution.ts b/tasks/WaitExecution/WaitExecutionV1/waitexecution.ts index c087243..402b166 100644 --- a/tasks/WaitExecution/WaitExecutionV1/waitexecution.ts +++ b/tasks/WaitExecution/WaitExecutionV1/waitexecution.ts @@ -16,7 +16,7 @@ async function run() { run.waitExecution(); } - catch (err) { + catch (err: any) { tl.setResult(tl.TaskResult.Failed, err.message); } } From 8434ac6fc54c94f40255acd70837d0323fea4abd Mon Sep 17 00:00:00 2001 From: Ric Serradas Date: Tue, 20 Dec 2022 23:08:45 -0800 Subject: [PATCH 3/3] Fixing nullable strig with ?? '' --- .../ConfigureDatabricksV1/index.ts | 4 ++-- .../DeployNotebooksTaskV1/index.ts | 5 ++--- .../ExecuteNotebookV1/executeNotebook.ts | 15 ++++++++------- .../CompileInstallJarV1/compileinstalljar.ts | 18 +++++++++--------- .../RunSbtTests/RunSbtTestsV1/runsbttests.js | 7 ++++--- .../RunSbtTests/RunSbtTestsV1/runsbttests.ts | 6 +++--- .../StartClusterV1/startCluster.js | 3 ++- .../StartClusterV1/startCluster.ts | 2 +- .../uninstallcodefromcluster.js | 7 ++++--- .../uninstallcodefromcluster.ts | 6 +++--- .../waitforclusterreboot.js | 7 ++++--- .../waitforclusterreboot.ts | 6 +++--- 12 files changed, 45 insertions(+), 41 deletions(-) diff --git a/tasks/ConfigureDatabricks/ConfigureDatabricksV1/index.ts b/tasks/ConfigureDatabricks/ConfigureDatabricksV1/index.ts index b0ddcc3..c359496 100644 --- a/tasks/ConfigureDatabricks/ConfigureDatabricksV1/index.ts +++ b/tasks/ConfigureDatabricks/ConfigureDatabricksV1/index.ts @@ -9,8 +9,8 @@ import { stringify } from 'querystring'; async function run() { try { - const url: string = tl.getInput('url', true)!; - const token: string = tl.getInput('token', true)!; + const url: string = tl.getInput('url', true) ?? ''; + const token: string = tl.getInput('token', true) ?? ''; installDatabricksCli(); diff --git a/tasks/DeployNotebooksTask/DeployNotebooksTaskV1/index.ts b/tasks/DeployNotebooksTask/DeployNotebooksTaskV1/index.ts index c3f76e2..f47071e 100644 --- a/tasks/DeployNotebooksTask/DeployNotebooksTaskV1/index.ts +++ b/tasks/DeployNotebooksTask/DeployNotebooksTaskV1/index.ts @@ -1,11 +1,10 @@ import tl = require('azure-pipelines-task-lib/task'); import fs = require('fs'); -import { fstat } from 'fs'; async function run() { try { - const notebooksFolderPath: string = tl.getInput('notebooksFolderPath', true)!; - const workspaceFolder: string = tl.getInput('workspaceFolder', true)!; + const notebooksFolderPath: string = tl.getInput('notebooksFolderPath', true) ?? ''; + const workspaceFolder: string = tl.getInput('workspaceFolder', true) ?? ''; if (!isDirSync(notebooksFolderPath)){ tl.setResult(tl.TaskResult.Failed, 'The specified path for Notebooks folder is a file.') diff --git a/tasks/ExecuteNotebook/ExecuteNotebookV1/executeNotebook.ts b/tasks/ExecuteNotebook/ExecuteNotebookV1/executeNotebook.ts index ea5a8db..5426e2b 100644 --- a/tasks/ExecuteNotebook/ExecuteNotebookV1/executeNotebook.ts +++ b/tasks/ExecuteNotebook/ExecuteNotebookV1/executeNotebook.ts @@ -1,15 +1,14 @@ import tl = require('azure-pipelines-task-lib'); import path = require('path'); import fs = require('fs'); -import { utils } from 'mocha'; async function run() { tl.setResourcePath(path.join(__dirname, 'task.json')); try { - const notebookPath: string = tl.getInput('notebookPath', true)!; - const executionParams: string = tl.getInput('executionParams', false)!; - const existingClusterId: string = tl.getInput('existingClusterId', false)!; + const notebookPath: string = tl.getInput('notebookPath', true) ?? ''; + const executionParams: string = tl.getInput('executionParams', false) ?? ''; + const existingClusterId: string = tl.getInput('existingClusterId', false) ?? ''; let notebook = new Notebook(notebookPath, executionParams); @@ -55,13 +54,15 @@ class Notebook{ } isValid(){ - if (!this.folder.startsWith("/")) { + if (this.folder === '' || !this.folder.startsWith("/")) { tl.setResult(tl.TaskResult.Failed, 'The Notebook path must start with a forward slash (/).'); return false; } try { - let paramsJson = JSON.parse(this.params); + if (this.params != '') { + let paramsJson = JSON.parse(this.params); + } } catch (error: any) { tl.setResult(tl.TaskResult.Failed, error); @@ -130,7 +131,7 @@ class Notebook{ private getJobConfigurationFile(existingClusterId: string) { let jobTemplatePath: string; - if (existingClusterId === null) { + if (existingClusterId === '') { jobTemplatePath = path.join(__dirname, "job-configuration/new-cluster.json"); } else { diff --git a/tasks/Scala/CompileInstallJar/CompileInstallJarV1/compileinstalljar.ts b/tasks/Scala/CompileInstallJar/CompileInstallJarV1/compileinstalljar.ts index f3c6d11..19788c0 100644 --- a/tasks/Scala/CompileInstallJar/CompileInstallJarV1/compileinstalljar.ts +++ b/tasks/Scala/CompileInstallJar/CompileInstallJarV1/compileinstalljar.ts @@ -3,15 +3,15 @@ import tl = require('azure-pipelines-task-lib'); import shell = require('shelljs'); async function compileInstallJar(){ - const failOnStderr: boolean = tl.getBoolInput('failOnStderr', false)!; - const clusterid: string = tl.getInput('clusterid', true)!; - const workingDirectory: string = tl.getInput('workingDirectory', false)!; - const packageName: string = tl.getInput('packageName', true)!; - const packageVersion: string = tl.getInput('packageVersion', true)!; - const scalaVersion: string = tl.getInput('scalaVersion', true)!; - const sampleDataSetFilePath: string = tl.getInput('sampleDataSetFilePath', true)!; - - if(workingDirectory){ + const failOnStderr: boolean = tl.getBoolInput('failOnStderr', false); + const clusterid: string = tl.getInput('clusterid', true) ?? ''; + const workingDirectory: string = tl.getInput('workingDirectory', false) ?? ''; + const packageName: string = tl.getInput('packageName', true) ?? ''; + const packageVersion: string = tl.getInput('packageVersion', true) ?? ''; + const scalaVersion: string = tl.getInput('scalaVersion', true) ?? ''; + const sampleDataSetFilePath: string = tl.getInput('sampleDataSetFilePath', true) ?? ''; + + if(workingDirectory !== ''){ shell.cd(workingDirectory); } diff --git a/tasks/Scala/RunSbtTests/RunSbtTestsV1/runsbttests.js b/tasks/Scala/RunSbtTests/RunSbtTestsV1/runsbttests.js index b9082b7..d8fa2ae 100644 --- a/tasks/Scala/RunSbtTests/RunSbtTestsV1/runsbttests.js +++ b/tasks/Scala/RunSbtTests/RunSbtTestsV1/runsbttests.js @@ -13,13 +13,14 @@ const path = require("path"); const tl = require("azure-pipelines-task-lib"); const shell = require("shelljs"); function run() { + var _a, _b; return __awaiter(this, void 0, void 0, function* () { try { tl.setResourcePath(path.join(__dirname, 'task.json')); const failOnStderr = tl.getBoolInput('failOnStderr', false); - const workingDirectory = tl.getInput('workingDirectory', false); - const additionalParameters = tl.getInput('additionalParameters', false); - if (workingDirectory != '') { + const workingDirectory = (_a = tl.getInput('workingDirectory', false)) !== null && _a !== void 0 ? _a : ''; + const additionalParameters = (_b = tl.getInput('additionalParameters', false)) !== null && _b !== void 0 ? _b : ''; + if (workingDirectory !== '') { shell.cd(workingDirectory); } let fileName = 'runsbttests.sh'; diff --git a/tasks/Scala/RunSbtTests/RunSbtTestsV1/runsbttests.ts b/tasks/Scala/RunSbtTests/RunSbtTestsV1/runsbttests.ts index 54e022d..b1a4c46 100644 --- a/tasks/Scala/RunSbtTests/RunSbtTestsV1/runsbttests.ts +++ b/tasks/Scala/RunSbtTests/RunSbtTestsV1/runsbttests.ts @@ -7,10 +7,10 @@ async function run() { tl.setResourcePath(path.join(__dirname, 'task.json')); const failOnStderr: boolean = tl.getBoolInput('failOnStderr', false); - const workingDirectory: string = tl.getInput('workingDirectory', false)!; - const additionalParameters: string = tl.getInput('additionalParameters', false)!; + const workingDirectory: string = tl.getInput('workingDirectory', false) ?? ''; + const additionalParameters: string = tl.getInput('additionalParameters', false) ?? ''; - if(workingDirectory != ''){ + if(workingDirectory !== ''){ shell.cd(workingDirectory); } diff --git a/tasks/Scala/StartCluster/StartClusterV1/startCluster.js b/tasks/Scala/StartCluster/StartClusterV1/startCluster.js index 64721c6..36b40f6 100644 --- a/tasks/Scala/StartCluster/StartClusterV1/startCluster.js +++ b/tasks/Scala/StartCluster/StartClusterV1/startCluster.js @@ -26,10 +26,11 @@ function startCluster(clusterid, failOnStderr) { }); } function run() { + var _a; return __awaiter(this, void 0, void 0, function* () { try { tl.setResourcePath(path.join(__dirname, 'task.json')); - const clusterid = tl.getInput('clusterid', true); + const clusterid = (_a = tl.getInput('clusterid', true)) !== null && _a !== void 0 ? _a : ''; const failOnStderr = tl.getBoolInput('failOnStderr', false); if (!shell.which('databricks')) { tl.setResult(tl.TaskResult.Failed, "databricks-cli was not found. Use the task 'Configure Databricks CLI' to install and configure it."); diff --git a/tasks/Scala/StartCluster/StartClusterV1/startCluster.ts b/tasks/Scala/StartCluster/StartClusterV1/startCluster.ts index eec417a..555a7c8 100644 --- a/tasks/Scala/StartCluster/StartClusterV1/startCluster.ts +++ b/tasks/Scala/StartCluster/StartClusterV1/startCluster.ts @@ -21,7 +21,7 @@ async function run() { try{ tl.setResourcePath(path.join(__dirname, 'task.json')); - const clusterid: string = tl.getInput('clusterid', true)!; + const clusterid: string = tl.getInput('clusterid', true) ?? ''; const failOnStderr: boolean = tl.getBoolInput('failOnStderr', false); if(!shell.which('databricks')){ diff --git a/tasks/Scala/UninstallCodeFromCluster/UninstallCodeFromClusterV1/uninstallcodefromcluster.js b/tasks/Scala/UninstallCodeFromCluster/UninstallCodeFromClusterV1/uninstallcodefromcluster.js index 42a44f5..c246463 100644 --- a/tasks/Scala/UninstallCodeFromCluster/UninstallCodeFromClusterV1/uninstallcodefromcluster.js +++ b/tasks/Scala/UninstallCodeFromCluster/UninstallCodeFromClusterV1/uninstallcodefromcluster.js @@ -13,10 +13,11 @@ const path = require("path"); const tl = require("azure-pipelines-task-lib"); const shell = require("shelljs"); function uninstallLibsFromCluster() { + var _a, _b, _c; try { - const failOnStderr = tl.getBoolInput('failOnStderr', false); - const libraryfilename = tl.getInput('libraryfilename', true); - const clusterid = tl.getInput('clusterid', true); + const failOnStderr = (_a = tl.getBoolInput('failOnStderr', false)) !== null && _a !== void 0 ? _a : ''; + const libraryfilename = (_b = tl.getInput('libraryfilename', true)) !== null && _b !== void 0 ? _b : ''; + const clusterid = (_c = tl.getInput('clusterid', true)) !== null && _c !== void 0 ? _c : ''; let fileName = 'uninstallcodefromcluster.sh'; let filePath = path.join(__dirname, fileName); let uninstallExec = shell.exec(`bash ${filePath} ${clusterid} ${libraryfilename}`); diff --git a/tasks/Scala/UninstallCodeFromCluster/UninstallCodeFromClusterV1/uninstallcodefromcluster.ts b/tasks/Scala/UninstallCodeFromCluster/UninstallCodeFromClusterV1/uninstallcodefromcluster.ts index 7f852e4..fc5ac34 100644 --- a/tasks/Scala/UninstallCodeFromCluster/UninstallCodeFromClusterV1/uninstallcodefromcluster.ts +++ b/tasks/Scala/UninstallCodeFromCluster/UninstallCodeFromClusterV1/uninstallcodefromcluster.ts @@ -4,9 +4,9 @@ import shell = require('shelljs'); function uninstallLibsFromCluster() { try { - const failOnStderr: boolean = tl.getBoolInput('failOnStderr', false)!; - const libraryfilename: string = tl.getInput('libraryfilename', true)!; - const clusterid: string = tl.getInput('clusterid', true)!; + const failOnStderr: boolean = tl.getBoolInput('failOnStderr', false) ?? ''; + const libraryfilename: string = tl.getInput('libraryfilename', true) ?? ''; + const clusterid: string = tl.getInput('clusterid', true) ?? ''; let fileName = 'uninstallcodefromcluster.sh' let filePath = path.join(__dirname, fileName); diff --git a/tasks/Scala/WaitForClusterReboot/WaitForClusterRebootV1/waitforclusterreboot.js b/tasks/Scala/WaitForClusterReboot/WaitForClusterRebootV1/waitforclusterreboot.js index 7587433..7d56926 100644 --- a/tasks/Scala/WaitForClusterReboot/WaitForClusterRebootV1/waitforclusterreboot.js +++ b/tasks/Scala/WaitForClusterReboot/WaitForClusterRebootV1/waitforclusterreboot.js @@ -12,14 +12,15 @@ Object.defineProperty(exports, "__esModule", { value: true }); const path = require("path"); const tl = require("azure-pipelines-task-lib"); function run() { + var _a, _b; return __awaiter(this, void 0, void 0, function* () { try { tl.setResourcePath(path.join(__dirname, 'task.json')); - const workingDirectory = tl.getInput('workingDirectory', false); - if (workingDirectory != '') { + const workingDirectory = (_a = tl.getInput('workingDirectory', false)) !== null && _a !== void 0 ? _a : ''; + if (workingDirectory !== '') { tl.cd(workingDirectory); } - const clusterid = tl.getInput('clusterid', true); + const clusterid = (_b = tl.getInput('clusterid', true)) !== null && _b !== void 0 ? _b : ''; let bashPath = tl.which('bash', true); let fileName = 'waitforclusterreboot.sh'; let filePath = path.join(__dirname, fileName); diff --git a/tasks/Scala/WaitForClusterReboot/WaitForClusterRebootV1/waitforclusterreboot.ts b/tasks/Scala/WaitForClusterReboot/WaitForClusterRebootV1/waitforclusterreboot.ts index e86bbc3..645e2c8 100644 --- a/tasks/Scala/WaitForClusterReboot/WaitForClusterRebootV1/waitforclusterreboot.ts +++ b/tasks/Scala/WaitForClusterReboot/WaitForClusterRebootV1/waitforclusterreboot.ts @@ -6,13 +6,13 @@ async function run() { try { tl.setResourcePath(path.join(__dirname, 'task.json')); - const workingDirectory: string = tl.getInput('workingDirectory', false)!; + const workingDirectory: string = tl.getInput('workingDirectory', false) ?? ''; - if(workingDirectory != ''){ + if(workingDirectory !== ''){ tl.cd(workingDirectory); } - const clusterid: string = tl.getInput('clusterid', true)!; + const clusterid: string = tl.getInput('clusterid', true) ?? ''; let bashPath: string = tl.which('bash', true); let fileName = 'waitforclusterreboot.sh'