Functions/Publish-DatabricksJobsFromConfigToWorkspace.ps1
<#
.SYNOPSIS Deploys DataBricks job(s) from configuration json file(s) to a workspace .DESCRIPTION Deploys DataBricks job(s) from configuration json file(s) to a workspace .PARAMETER config Configuration json file from the environment used to workout whether to deploy a job from a folder or file(s) .PARAMETER localOutputPath The name path of the job configuration files. .EXAMPLE Publish-DatabricksJobsFromConfigToWorkspace -config $config -bearerToken 'dapi1234567890' .NOTES Author: Sabin IO #> Function Publish-DatabricksJobsFromConfigToWorkspace { [cmdletbinding()] Param( [parameter(Mandatory = $true)]$config, [parameter(Mandatory = $true)][string]$localOutputPath ) $localOutputPath = Resolve-Path $localOutputPath try { if (($config.deployJobsByFolder.deploy -eq $true) -and ($config.deployJobsByFileNames.Length -ge 1)) { Write-Error "deployJobsByFolder in config set and deployJobsByFileNames has values. Options are mutually exclusive!" Throw } if (($config.deployJobsByFolder.deploy -eq $true) -and ($config.deployJobsByFileNames.Length -eq 0)) { Write-Verbose "[Deploy] job(s) by folder, Ignoring deployJobsByFileNames" $jobConfigFiles = Get-ChildItem -LiteralPath $localOutputPath foreach ($jobConfig in $jobConfigFiles) { if ($jobConfig.FullName.ToLower().EndsWith(".job.config.json")) { Write-Host "Publishing Job from $($jobConfig.FullName)" Publish-DatabricksJobToWorkspaceByName -jobConfig $jobConfig.FullName ` -removeSchedule $config.deployJobsByFolder.remove_schedule } else { Write-Warning "$($jobConfig.FullName) does not end in `"job.config.json`" and will not be published." } } } if (($config.deployJobsByFolder.deploy -eq $false) -and ($config.deployJobsByFileNames.Length -ge 1)) { Write-Verbose "[Deploy] job(s) by file(s), Ignoring deployJobsByFolder" foreach ($jobConfig in $config.deployJobsByFileNames) { $jobPath = Join-Path $localOutputPath $jobConfig.job_file_name if (Test-Path $jobPath) { Write-Verbose "Publishing Job from $($jobPath)" Publish-DatabricksJobToWorkspaceByName -jobConfig $jobPath ` -removeSchedule $jobConfig.remove_schedule } else { Write-Error "Path $($jobPath) does not exist. Check file names are correct." } } } } catch { throw $_.Exception } } |