@pulumi/dbtcloud 0.1.0-alpha.1715944408
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/LICENSE +177 -0
- package/README.md +70 -0
- package/bigQueryConnection.d.ts +399 -0
- package/bigQueryConnection.js +196 -0
- package/bigQueryConnection.js.map +1 -0
- package/bigQueryCredential.d.ts +117 -0
- package/bigQueryCredential.js +91 -0
- package/bigQueryCredential.js.map +1 -0
- package/config/index.d.ts +1 -0
- package/config/index.js +21 -0
- package/config/index.js.map +1 -0
- package/config/vars.d.ts +14 -0
- package/config/vars.js +29 -0
- package/config/vars.js.map +1 -0
- package/connection.d.ts +321 -0
- package/connection.js +149 -0
- package/connection.js.map +1 -0
- package/databricksCredential.d.ts +168 -0
- package/databricksCredential.js +120 -0
- package/databricksCredential.js.map +1 -0
- package/environment.d.ts +209 -0
- package/environment.js +123 -0
- package/environment.js.map +1 -0
- package/environmentVariable.d.ts +120 -0
- package/environmentVariable.js +101 -0
- package/environmentVariable.js.map +1 -0
- package/environmentVariableJobOverride.d.ts +119 -0
- package/environmentVariableJobOverride.js +93 -0
- package/environmentVariableJobOverride.js.map +1 -0
- package/extendedAttributes.d.ts +135 -0
- package/extendedAttributes.js +107 -0
- package/extendedAttributes.js.map +1 -0
- package/fabricConnection.d.ts +177 -0
- package/fabricConnection.js +108 -0
- package/fabricConnection.js.map +1 -0
- package/fabricCredential.d.ts +167 -0
- package/fabricCredential.js +93 -0
- package/fabricCredential.js.map +1 -0
- package/getAzureDevOpsProject.d.ts +72 -0
- package/getAzureDevOpsProject.js +53 -0
- package/getAzureDevOpsProject.js.map +1 -0
- package/getAzureDevOpsRepository.d.ts +98 -0
- package/getAzureDevOpsRepository.js +56 -0
- package/getAzureDevOpsRepository.js.map +1 -0
- package/getBigQueryConnection.d.ts +134 -0
- package/getBigQueryConnection.js +20 -0
- package/getBigQueryConnection.js.map +1 -0
- package/getBigQueryCredential.d.ts +58 -0
- package/getBigQueryCredential.js +20 -0
- package/getBigQueryCredential.js.map +1 -0
- package/getConnection.d.ts +86 -0
- package/getConnection.js +20 -0
- package/getConnection.js.map +1 -0
- package/getDatabricksCredential.d.ts +66 -0
- package/getDatabricksCredential.js +20 -0
- package/getDatabricksCredential.js.map +1 -0
- package/getEnvironment.d.ts +82 -0
- package/getEnvironment.js +20 -0
- package/getEnvironment.js.map +1 -0
- package/getEnvironmentVariable.d.ts +52 -0
- package/getEnvironmentVariable.js +20 -0
- package/getEnvironmentVariable.js.map +1 -0
- package/getExtendedAttributes.d.ts +80 -0
- package/getExtendedAttributes.js +46 -0
- package/getExtendedAttributes.js.map +1 -0
- package/getGroup.d.ts +50 -0
- package/getGroup.js +19 -0
- package/getGroup.js.map +1 -0
- package/getGroupUsers.d.ts +67 -0
- package/getGroupUsers.js +47 -0
- package/getGroupUsers.js.map +1 -0
- package/getJob.d.ts +89 -0
- package/getJob.js +20 -0
- package/getJob.js.map +1 -0
- package/getNotification.d.ts +82 -0
- package/getNotification.js +43 -0
- package/getNotification.js.map +1 -0
- package/getPostgresCredential.d.ts +62 -0
- package/getPostgresCredential.js +20 -0
- package/getPostgresCredential.js.map +1 -0
- package/getPrivatelinkEndpoint.d.ts +98 -0
- package/getPrivatelinkEndpoint.js +61 -0
- package/getPrivatelinkEndpoint.js.map +1 -0
- package/getProject.d.ts +102 -0
- package/getProject.js +57 -0
- package/getProject.js.map +1 -0
- package/getRepository.d.ts +86 -0
- package/getRepository.js +21 -0
- package/getRepository.js.map +1 -0
- package/getServiceToken.d.ts +47 -0
- package/getServiceToken.js +19 -0
- package/getServiceToken.js.map +1 -0
- package/getSnowflakeCredential.d.ts +66 -0
- package/getSnowflakeCredential.js +20 -0
- package/getSnowflakeCredential.js.map +1 -0
- package/getUser.d.ts +58 -0
- package/getUser.js +43 -0
- package/getUser.js.map +1 -0
- package/getUserGroups.d.ts +62 -0
- package/getUserGroups.js +43 -0
- package/getUserGroups.js.map +1 -0
- package/getWebhook.d.ts +66 -0
- package/getWebhook.js +19 -0
- package/getWebhook.js.map +1 -0
- package/group.d.ts +127 -0
- package/group.js +95 -0
- package/group.js.map +1 -0
- package/index.d.ts +144 -0
- package/index.js +220 -0
- package/index.js.map +1 -0
- package/job.d.ts +443 -0
- package/job.js +228 -0
- package/job.js.map +1 -0
- package/licenseMap.d.ts +96 -0
- package/licenseMap.js +90 -0
- package/licenseMap.js.map +1 -0
- package/notification.d.ts +202 -0
- package/notification.js +126 -0
- package/notification.js.map +1 -0
- package/package.json +31 -0
- package/package.json.bak +31 -0
- package/postgresCredential.d.ts +171 -0
- package/postgresCredential.js +110 -0
- package/postgresCredential.js.map +1 -0
- package/project.d.ts +87 -0
- package/project.js +78 -0
- package/project.js.map +1 -0
- package/projectArtefacts.d.ts +99 -0
- package/projectArtefacts.js +83 -0
- package/projectArtefacts.js.map +1 -0
- package/projectConnection.d.ts +86 -0
- package/projectConnection.js +83 -0
- package/projectConnection.js.map +1 -0
- package/projectRepository.d.ts +86 -0
- package/projectRepository.js +83 -0
- package/projectRepository.js.map +1 -0
- package/provider.d.ts +50 -0
- package/provider.js +48 -0
- package/provider.js.map +1 -0
- package/repository.d.ts +204 -0
- package/repository.js +103 -0
- package/repository.js.map +1 -0
- package/serviceToken.d.ts +126 -0
- package/serviceToken.js +95 -0
- package/serviceToken.js.map +1 -0
- package/snowflakeCredential.d.ts +218 -0
- package/snowflakeCredential.js +120 -0
- package/snowflakeCredential.js.map +1 -0
- package/types/index.d.ts +3 -0
- package/types/index.js +11 -0
- package/types/index.js.map +1 -0
- package/types/input.d.ts +43 -0
- package/types/input.js +5 -0
- package/types/input.js.map +1 -0
- package/types/output.d.ts +74 -0
- package/types/output.js +5 -0
- package/types/output.js.map +1 -0
- package/userGroups.d.ts +105 -0
- package/userGroups.js +102 -0
- package/userGroups.js.map +1 -0
- package/utilities.d.ts +8 -0
- package/utilities.js +101 -0
- package/utilities.js.map +1 -0
- package/webhook.d.ts +175 -0
- package/webhook.js +110 -0
- package/webhook.js.map +1 -0
package/job.d.ts
ADDED
|
@@ -0,0 +1,443 @@
|
|
|
1
|
+
import * as pulumi from "@pulumi/pulumi";
|
|
2
|
+
import * as inputs from "./types/input";
|
|
3
|
+
import * as outputs from "./types/output";
|
|
4
|
+
/**
|
|
5
|
+
* > As of October 2023, CI improvements have been rolled out to dbt Cloud with minor impacts to some jobs: [more info](https://docs.getdbt.com/docs/dbt-versions/release-notes/june-2023/ci-updates-phase1-rn).
|
|
6
|
+
* <br/>
|
|
7
|
+
* <br/>
|
|
8
|
+
* Those improvements include modifications to deferral which was historically set at the job level and will now be set at the environment level.
|
|
9
|
+
* Deferral can still be set to "self" by setting `selfDeferring` to `true` but with the new approach, deferral to other runs need to be done with `deferringEnvironmentId` instead of `deferringJobId`.
|
|
10
|
+
*
|
|
11
|
+
* > As of beginning of February 2024, job chaining with `jobCompletionTriggerCondition` is in private beta and not available to all users.
|
|
12
|
+
* <br/>
|
|
13
|
+
* <br/>
|
|
14
|
+
* This notice will be removed once the feature is generally available.
|
|
15
|
+
*
|
|
16
|
+
* ## Example Usage
|
|
17
|
+
*
|
|
18
|
+
* ```typescript
|
|
19
|
+
* import * as pulumi from "@pulumi/pulumi";
|
|
20
|
+
* import * as dbtcloud from "@pulumi/dbtcloud";
|
|
21
|
+
*
|
|
22
|
+
* // NOTE for customers using the LEGACY dbt_cloud provider:
|
|
23
|
+
* // a job that has github_webhook and git_provider_webhook
|
|
24
|
+
* // set to false will be categorized as a "Deploy Job"
|
|
25
|
+
* const dailyJob = new dbtcloud.Job("daily_job", {
|
|
26
|
+
* environmentId: prodEnvironment.environmentId,
|
|
27
|
+
* executeSteps: ["dbt build"],
|
|
28
|
+
* generateDocs: true,
|
|
29
|
+
* isActive: true,
|
|
30
|
+
* name: "Daily job",
|
|
31
|
+
* numThreads: 64,
|
|
32
|
+
* projectId: dbtProject.id,
|
|
33
|
+
* runGenerateSources: true,
|
|
34
|
+
* targetName: "default",
|
|
35
|
+
* triggers: {
|
|
36
|
+
* custom_branch_only: false,
|
|
37
|
+
* github_webhook: false,
|
|
38
|
+
* git_provider_webhook: false,
|
|
39
|
+
* schedule: true,
|
|
40
|
+
* },
|
|
41
|
+
* scheduleDays: [
|
|
42
|
+
* 0,
|
|
43
|
+
* 1,
|
|
44
|
+
* 2,
|
|
45
|
+
* 3,
|
|
46
|
+
* 4,
|
|
47
|
+
* 5,
|
|
48
|
+
* 6,
|
|
49
|
+
* ],
|
|
50
|
+
* scheduleType: "days_of_week",
|
|
51
|
+
* scheduleHours: [0],
|
|
52
|
+
* });
|
|
53
|
+
* // a job that has github_webhook and git_provider_webhook set
|
|
54
|
+
* // to true will be categorized as a "Continuous Integration Job"
|
|
55
|
+
* const ciJob = new dbtcloud.Job("ci_job", {
|
|
56
|
+
* environmentId: ciEnvironment.environmentId,
|
|
57
|
+
* executeSteps: ["dbt build -s state:modified+ --fail-fast"],
|
|
58
|
+
* generateDocs: false,
|
|
59
|
+
* deferringEnvironmentId: prodEnvironment.environmentId,
|
|
60
|
+
* name: "CI Job",
|
|
61
|
+
* numThreads: 32,
|
|
62
|
+
* projectId: dbtProject.id,
|
|
63
|
+
* runGenerateSources: false,
|
|
64
|
+
* triggers: {
|
|
65
|
+
* custom_branch_only: true,
|
|
66
|
+
* github_webhook: true,
|
|
67
|
+
* git_provider_webhook: true,
|
|
68
|
+
* schedule: false,
|
|
69
|
+
* },
|
|
70
|
+
* scheduleDays: [
|
|
71
|
+
* 0,
|
|
72
|
+
* 1,
|
|
73
|
+
* 2,
|
|
74
|
+
* 3,
|
|
75
|
+
* 4,
|
|
76
|
+
* 5,
|
|
77
|
+
* 6,
|
|
78
|
+
* ],
|
|
79
|
+
* scheduleType: "days_of_week",
|
|
80
|
+
* });
|
|
81
|
+
* // a job that is set to be triggered after another job finishes
|
|
82
|
+
* // this is sometimes referred as 'job chaining'
|
|
83
|
+
* const downstreamJob = new dbtcloud.Job("downstream_job", {
|
|
84
|
+
* environmentId: project2ProdEnvironment.environmentId,
|
|
85
|
+
* executeSteps: ["dbt build -s +my_model"],
|
|
86
|
+
* generateDocs: true,
|
|
87
|
+
* name: "Downstream job in project 2",
|
|
88
|
+
* numThreads: 32,
|
|
89
|
+
* projectId: dbtProject2.id,
|
|
90
|
+
* runGenerateSources: true,
|
|
91
|
+
* triggers: {
|
|
92
|
+
* custom_branch_only: false,
|
|
93
|
+
* github_webhook: false,
|
|
94
|
+
* git_provider_webhook: false,
|
|
95
|
+
* schedule: false,
|
|
96
|
+
* },
|
|
97
|
+
* scheduleDays: [
|
|
98
|
+
* 0,
|
|
99
|
+
* 1,
|
|
100
|
+
* 2,
|
|
101
|
+
* 3,
|
|
102
|
+
* 4,
|
|
103
|
+
* 5,
|
|
104
|
+
* 6,
|
|
105
|
+
* ],
|
|
106
|
+
* scheduleType: "days_of_week",
|
|
107
|
+
* jobCompletionTriggerCondition: {
|
|
108
|
+
* jobId: dailyJob.id,
|
|
109
|
+
* projectId: dbtProject.id,
|
|
110
|
+
* statuses: ["success"],
|
|
111
|
+
* },
|
|
112
|
+
* });
|
|
113
|
+
* ```
|
|
114
|
+
*
|
|
115
|
+
* ## Import
|
|
116
|
+
*
|
|
117
|
+
* Import using a job ID found in the URL or via the API.
|
|
118
|
+
*
|
|
119
|
+
* ```sh
|
|
120
|
+
* $ pulumi import dbtcloud:index/job:Job test_job "job_id"
|
|
121
|
+
* ```
|
|
122
|
+
*
|
|
123
|
+
* ```sh
|
|
124
|
+
* $ pulumi import dbtcloud:index/job:Job test_job 12345
|
|
125
|
+
* ```
|
|
126
|
+
*/
|
|
127
|
+
export declare class Job extends pulumi.CustomResource {
|
|
128
|
+
/**
|
|
129
|
+
* Get an existing Job resource's state with the given name, ID, and optional extra
|
|
130
|
+
* properties used to qualify the lookup.
|
|
131
|
+
*
|
|
132
|
+
* @param name The _unique_ name of the resulting resource.
|
|
133
|
+
* @param id The _unique_ provider ID of the resource to lookup.
|
|
134
|
+
* @param state Any extra arguments used during the lookup.
|
|
135
|
+
* @param opts Optional settings to control the behavior of the CustomResource.
|
|
136
|
+
*/
|
|
137
|
+
static get(name: string, id: pulumi.Input<pulumi.ID>, state?: JobState, opts?: pulumi.CustomResourceOptions): Job;
|
|
138
|
+
/**
|
|
139
|
+
* Returns true if the given object is an instance of Job. This is designed to work even
|
|
140
|
+
* when multiple copies of the Pulumi SDK have been loaded into the same process.
|
|
141
|
+
*/
|
|
142
|
+
static isInstance(obj: any): obj is Job;
|
|
143
|
+
/**
|
|
144
|
+
* Version number of dbt to use in this job, usually in the format 1.2.0-latest rather than core versions
|
|
145
|
+
*/
|
|
146
|
+
readonly dbtVersion: pulumi.Output<string | undefined>;
|
|
147
|
+
/**
|
|
148
|
+
* Environment identifier that this job defers to (new deferring approach)
|
|
149
|
+
*/
|
|
150
|
+
readonly deferringEnvironmentId: pulumi.Output<number | undefined>;
|
|
151
|
+
/**
|
|
152
|
+
* Job identifier that this job defers to (legacy deferring approach)
|
|
153
|
+
*/
|
|
154
|
+
readonly deferringJobId: pulumi.Output<number | undefined>;
|
|
155
|
+
/**
|
|
156
|
+
* Description for the job
|
|
157
|
+
*/
|
|
158
|
+
readonly description: pulumi.Output<string | undefined>;
|
|
159
|
+
/**
|
|
160
|
+
* Environment ID to create the job in
|
|
161
|
+
*/
|
|
162
|
+
readonly environmentId: pulumi.Output<number>;
|
|
163
|
+
/**
|
|
164
|
+
* List of commands to execute for the job
|
|
165
|
+
*/
|
|
166
|
+
readonly executeSteps: pulumi.Output<string[]>;
|
|
167
|
+
/**
|
|
168
|
+
* Flag for whether the job should generate documentation
|
|
169
|
+
*/
|
|
170
|
+
readonly generateDocs: pulumi.Output<boolean | undefined>;
|
|
171
|
+
/**
|
|
172
|
+
* Flag for whether the job is marked active or deleted. To create/keep a job in a 'deactivated' state, check the `triggers` config.
|
|
173
|
+
*/
|
|
174
|
+
readonly isActive: pulumi.Output<boolean | undefined>;
|
|
175
|
+
/**
|
|
176
|
+
* Which other job should trigger this job when it finishes, and on which conditions (sometimes referred as 'job chaining').
|
|
177
|
+
*/
|
|
178
|
+
readonly jobCompletionTriggerCondition: pulumi.Output<outputs.JobJobCompletionTriggerCondition | undefined>;
|
|
179
|
+
/**
|
|
180
|
+
* Job name
|
|
181
|
+
*/
|
|
182
|
+
readonly name: pulumi.Output<string>;
|
|
183
|
+
/**
|
|
184
|
+
* Number of threads to use in the job
|
|
185
|
+
*/
|
|
186
|
+
readonly numThreads: pulumi.Output<number | undefined>;
|
|
187
|
+
/**
|
|
188
|
+
* Project ID to create the job in
|
|
189
|
+
*/
|
|
190
|
+
readonly projectId: pulumi.Output<number>;
|
|
191
|
+
/**
|
|
192
|
+
* Flag for whether the job should add a `dbt source freshness` step to the job. The difference between manually adding a step with `dbt source freshness` in the job steps or using this flag is that with this flag, a failed freshness will still allow the following steps to run.
|
|
193
|
+
*/
|
|
194
|
+
readonly runGenerateSources: pulumi.Output<boolean | undefined>;
|
|
195
|
+
/**
|
|
196
|
+
* Custom cron expression for schedule
|
|
197
|
+
*/
|
|
198
|
+
readonly scheduleCron: pulumi.Output<string | undefined>;
|
|
199
|
+
/**
|
|
200
|
+
* List of days of week as numbers (0 = Sunday, 7 = Saturday) to execute the job at if running on a schedule
|
|
201
|
+
*/
|
|
202
|
+
readonly scheduleDays: pulumi.Output<number[] | undefined>;
|
|
203
|
+
/**
|
|
204
|
+
* List of hours to execute the job at if running on a schedule
|
|
205
|
+
*/
|
|
206
|
+
readonly scheduleHours: pulumi.Output<number[] | undefined>;
|
|
207
|
+
/**
|
|
208
|
+
* Number of hours between job executions if running on a schedule
|
|
209
|
+
*/
|
|
210
|
+
readonly scheduleInterval: pulumi.Output<number | undefined>;
|
|
211
|
+
/**
|
|
212
|
+
* Type of schedule to use, one of every*day/ days*of*week/ custom*cron
|
|
213
|
+
*/
|
|
214
|
+
readonly scheduleType: pulumi.Output<string | undefined>;
|
|
215
|
+
/**
|
|
216
|
+
* Whether this job defers on a previous run of itself
|
|
217
|
+
*/
|
|
218
|
+
readonly selfDeferring: pulumi.Output<boolean | undefined>;
|
|
219
|
+
/**
|
|
220
|
+
* Target name for the dbt profile
|
|
221
|
+
*/
|
|
222
|
+
readonly targetName: pulumi.Output<string | undefined>;
|
|
223
|
+
/**
|
|
224
|
+
* Number of seconds to allow the job to run before timing out
|
|
225
|
+
*/
|
|
226
|
+
readonly timeoutSeconds: pulumi.Output<number | undefined>;
|
|
227
|
+
/**
|
|
228
|
+
* Flags for which types of triggers to use, possible values are `githubWebhook`, `gitProviderWebhook`, `schedule` and `customBranchOnly`. \n\n`customBranchOnly` is only relevant for CI jobs triggered automatically on PR creation to only trigger a job on a PR to the custom branch of the environment. To create a job in a 'deactivated' state, set all to `false`.
|
|
229
|
+
*/
|
|
230
|
+
readonly triggers: pulumi.Output<{
|
|
231
|
+
[key: string]: boolean;
|
|
232
|
+
}>;
|
|
233
|
+
/**
|
|
234
|
+
* Whether the CI job should be automatically triggered on draft PRs
|
|
235
|
+
*/
|
|
236
|
+
readonly triggersOnDraftPr: pulumi.Output<boolean | undefined>;
|
|
237
|
+
/**
|
|
238
|
+
* Create a Job resource with the given unique name, arguments, and options.
|
|
239
|
+
*
|
|
240
|
+
* @param name The _unique_ name of the resource.
|
|
241
|
+
* @param args The arguments to use to populate this resource's properties.
|
|
242
|
+
* @param opts A bag of options that control this resource's behavior.
|
|
243
|
+
*/
|
|
244
|
+
constructor(name: string, args: JobArgs, opts?: pulumi.CustomResourceOptions);
|
|
245
|
+
}
|
|
246
|
+
/**
|
|
247
|
+
* Input properties used for looking up and filtering Job resources.
|
|
248
|
+
*/
|
|
249
|
+
export interface JobState {
|
|
250
|
+
/**
|
|
251
|
+
* Version number of dbt to use in this job, usually in the format 1.2.0-latest rather than core versions
|
|
252
|
+
*/
|
|
253
|
+
dbtVersion?: pulumi.Input<string>;
|
|
254
|
+
/**
|
|
255
|
+
* Environment identifier that this job defers to (new deferring approach)
|
|
256
|
+
*/
|
|
257
|
+
deferringEnvironmentId?: pulumi.Input<number>;
|
|
258
|
+
/**
|
|
259
|
+
* Job identifier that this job defers to (legacy deferring approach)
|
|
260
|
+
*/
|
|
261
|
+
deferringJobId?: pulumi.Input<number>;
|
|
262
|
+
/**
|
|
263
|
+
* Description for the job
|
|
264
|
+
*/
|
|
265
|
+
description?: pulumi.Input<string>;
|
|
266
|
+
/**
|
|
267
|
+
* Environment ID to create the job in
|
|
268
|
+
*/
|
|
269
|
+
environmentId?: pulumi.Input<number>;
|
|
270
|
+
/**
|
|
271
|
+
* List of commands to execute for the job
|
|
272
|
+
*/
|
|
273
|
+
executeSteps?: pulumi.Input<pulumi.Input<string>[]>;
|
|
274
|
+
/**
|
|
275
|
+
* Flag for whether the job should generate documentation
|
|
276
|
+
*/
|
|
277
|
+
generateDocs?: pulumi.Input<boolean>;
|
|
278
|
+
/**
|
|
279
|
+
* Flag for whether the job is marked active or deleted. To create/keep a job in a 'deactivated' state, check the `triggers` config.
|
|
280
|
+
*/
|
|
281
|
+
isActive?: pulumi.Input<boolean>;
|
|
282
|
+
/**
|
|
283
|
+
* Which other job should trigger this job when it finishes, and on which conditions (sometimes referred as 'job chaining').
|
|
284
|
+
*/
|
|
285
|
+
jobCompletionTriggerCondition?: pulumi.Input<inputs.JobJobCompletionTriggerCondition>;
|
|
286
|
+
/**
|
|
287
|
+
* Job name
|
|
288
|
+
*/
|
|
289
|
+
name?: pulumi.Input<string>;
|
|
290
|
+
/**
|
|
291
|
+
* Number of threads to use in the job
|
|
292
|
+
*/
|
|
293
|
+
numThreads?: pulumi.Input<number>;
|
|
294
|
+
/**
|
|
295
|
+
* Project ID to create the job in
|
|
296
|
+
*/
|
|
297
|
+
projectId?: pulumi.Input<number>;
|
|
298
|
+
/**
|
|
299
|
+
* Flag for whether the job should add a `dbt source freshness` step to the job. The difference between manually adding a step with `dbt source freshness` in the job steps or using this flag is that with this flag, a failed freshness will still allow the following steps to run.
|
|
300
|
+
*/
|
|
301
|
+
runGenerateSources?: pulumi.Input<boolean>;
|
|
302
|
+
/**
|
|
303
|
+
* Custom cron expression for schedule
|
|
304
|
+
*/
|
|
305
|
+
scheduleCron?: pulumi.Input<string>;
|
|
306
|
+
/**
|
|
307
|
+
* List of days of week as numbers (0 = Sunday, 7 = Saturday) to execute the job at if running on a schedule
|
|
308
|
+
*/
|
|
309
|
+
scheduleDays?: pulumi.Input<pulumi.Input<number>[]>;
|
|
310
|
+
/**
|
|
311
|
+
* List of hours to execute the job at if running on a schedule
|
|
312
|
+
*/
|
|
313
|
+
scheduleHours?: pulumi.Input<pulumi.Input<number>[]>;
|
|
314
|
+
/**
|
|
315
|
+
* Number of hours between job executions if running on a schedule
|
|
316
|
+
*/
|
|
317
|
+
scheduleInterval?: pulumi.Input<number>;
|
|
318
|
+
/**
|
|
319
|
+
* Type of schedule to use, one of every*day/ days*of*week/ custom*cron
|
|
320
|
+
*/
|
|
321
|
+
scheduleType?: pulumi.Input<string>;
|
|
322
|
+
/**
|
|
323
|
+
* Whether this job defers on a previous run of itself
|
|
324
|
+
*/
|
|
325
|
+
selfDeferring?: pulumi.Input<boolean>;
|
|
326
|
+
/**
|
|
327
|
+
* Target name for the dbt profile
|
|
328
|
+
*/
|
|
329
|
+
targetName?: pulumi.Input<string>;
|
|
330
|
+
/**
|
|
331
|
+
* Number of seconds to allow the job to run before timing out
|
|
332
|
+
*/
|
|
333
|
+
timeoutSeconds?: pulumi.Input<number>;
|
|
334
|
+
/**
|
|
335
|
+
* Flags for which types of triggers to use, possible values are `githubWebhook`, `gitProviderWebhook`, `schedule` and `customBranchOnly`. \n\n`customBranchOnly` is only relevant for CI jobs triggered automatically on PR creation to only trigger a job on a PR to the custom branch of the environment. To create a job in a 'deactivated' state, set all to `false`.
|
|
336
|
+
*/
|
|
337
|
+
triggers?: pulumi.Input<{
|
|
338
|
+
[key: string]: pulumi.Input<boolean>;
|
|
339
|
+
}>;
|
|
340
|
+
/**
|
|
341
|
+
* Whether the CI job should be automatically triggered on draft PRs
|
|
342
|
+
*/
|
|
343
|
+
triggersOnDraftPr?: pulumi.Input<boolean>;
|
|
344
|
+
}
|
|
345
|
+
/**
|
|
346
|
+
* The set of arguments for constructing a Job resource.
|
|
347
|
+
*/
|
|
348
|
+
export interface JobArgs {
|
|
349
|
+
/**
|
|
350
|
+
* Version number of dbt to use in this job, usually in the format 1.2.0-latest rather than core versions
|
|
351
|
+
*/
|
|
352
|
+
dbtVersion?: pulumi.Input<string>;
|
|
353
|
+
/**
|
|
354
|
+
* Environment identifier that this job defers to (new deferring approach)
|
|
355
|
+
*/
|
|
356
|
+
deferringEnvironmentId?: pulumi.Input<number>;
|
|
357
|
+
/**
|
|
358
|
+
* Job identifier that this job defers to (legacy deferring approach)
|
|
359
|
+
*/
|
|
360
|
+
deferringJobId?: pulumi.Input<number>;
|
|
361
|
+
/**
|
|
362
|
+
* Description for the job
|
|
363
|
+
*/
|
|
364
|
+
description?: pulumi.Input<string>;
|
|
365
|
+
/**
|
|
366
|
+
* Environment ID to create the job in
|
|
367
|
+
*/
|
|
368
|
+
environmentId: pulumi.Input<number>;
|
|
369
|
+
/**
|
|
370
|
+
* List of commands to execute for the job
|
|
371
|
+
*/
|
|
372
|
+
executeSteps: pulumi.Input<pulumi.Input<string>[]>;
|
|
373
|
+
/**
|
|
374
|
+
* Flag for whether the job should generate documentation
|
|
375
|
+
*/
|
|
376
|
+
generateDocs?: pulumi.Input<boolean>;
|
|
377
|
+
/**
|
|
378
|
+
* Flag for whether the job is marked active or deleted. To create/keep a job in a 'deactivated' state, check the `triggers` config.
|
|
379
|
+
*/
|
|
380
|
+
isActive?: pulumi.Input<boolean>;
|
|
381
|
+
/**
|
|
382
|
+
* Which other job should trigger this job when it finishes, and on which conditions (sometimes referred as 'job chaining').
|
|
383
|
+
*/
|
|
384
|
+
jobCompletionTriggerCondition?: pulumi.Input<inputs.JobJobCompletionTriggerCondition>;
|
|
385
|
+
/**
|
|
386
|
+
* Job name
|
|
387
|
+
*/
|
|
388
|
+
name?: pulumi.Input<string>;
|
|
389
|
+
/**
|
|
390
|
+
* Number of threads to use in the job
|
|
391
|
+
*/
|
|
392
|
+
numThreads?: pulumi.Input<number>;
|
|
393
|
+
/**
|
|
394
|
+
* Project ID to create the job in
|
|
395
|
+
*/
|
|
396
|
+
projectId: pulumi.Input<number>;
|
|
397
|
+
/**
|
|
398
|
+
* Flag for whether the job should add a `dbt source freshness` step to the job. The difference between manually adding a step with `dbt source freshness` in the job steps or using this flag is that with this flag, a failed freshness will still allow the following steps to run.
|
|
399
|
+
*/
|
|
400
|
+
runGenerateSources?: pulumi.Input<boolean>;
|
|
401
|
+
/**
|
|
402
|
+
* Custom cron expression for schedule
|
|
403
|
+
*/
|
|
404
|
+
scheduleCron?: pulumi.Input<string>;
|
|
405
|
+
/**
|
|
406
|
+
* List of days of week as numbers (0 = Sunday, 7 = Saturday) to execute the job at if running on a schedule
|
|
407
|
+
*/
|
|
408
|
+
scheduleDays?: pulumi.Input<pulumi.Input<number>[]>;
|
|
409
|
+
/**
|
|
410
|
+
* List of hours to execute the job at if running on a schedule
|
|
411
|
+
*/
|
|
412
|
+
scheduleHours?: pulumi.Input<pulumi.Input<number>[]>;
|
|
413
|
+
/**
|
|
414
|
+
* Number of hours between job executions if running on a schedule
|
|
415
|
+
*/
|
|
416
|
+
scheduleInterval?: pulumi.Input<number>;
|
|
417
|
+
/**
|
|
418
|
+
* Type of schedule to use, one of every*day/ days*of*week/ custom*cron
|
|
419
|
+
*/
|
|
420
|
+
scheduleType?: pulumi.Input<string>;
|
|
421
|
+
/**
|
|
422
|
+
* Whether this job defers on a previous run of itself
|
|
423
|
+
*/
|
|
424
|
+
selfDeferring?: pulumi.Input<boolean>;
|
|
425
|
+
/**
|
|
426
|
+
* Target name for the dbt profile
|
|
427
|
+
*/
|
|
428
|
+
targetName?: pulumi.Input<string>;
|
|
429
|
+
/**
|
|
430
|
+
* Number of seconds to allow the job to run before timing out
|
|
431
|
+
*/
|
|
432
|
+
timeoutSeconds?: pulumi.Input<number>;
|
|
433
|
+
/**
|
|
434
|
+
* Flags for which types of triggers to use, possible values are `githubWebhook`, `gitProviderWebhook`, `schedule` and `customBranchOnly`. \n\n`customBranchOnly` is only relevant for CI jobs triggered automatically on PR creation to only trigger a job on a PR to the custom branch of the environment. To create a job in a 'deactivated' state, set all to `false`.
|
|
435
|
+
*/
|
|
436
|
+
triggers: pulumi.Input<{
|
|
437
|
+
[key: string]: pulumi.Input<boolean>;
|
|
438
|
+
}>;
|
|
439
|
+
/**
|
|
440
|
+
* Whether the CI job should be automatically triggered on draft PRs
|
|
441
|
+
*/
|
|
442
|
+
triggersOnDraftPr?: pulumi.Input<boolean>;
|
|
443
|
+
}
|
package/job.js
ADDED
|
@@ -0,0 +1,228 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. ***
|
|
3
|
+
// *** Do not edit by hand unless you're certain you know what you are doing! ***
|
|
4
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
5
|
+
exports.Job = void 0;
|
|
6
|
+
const pulumi = require("@pulumi/pulumi");
|
|
7
|
+
const utilities = require("./utilities");
|
|
8
|
+
/**
|
|
9
|
+
* > As of October 2023, CI improvements have been rolled out to dbt Cloud with minor impacts to some jobs: [more info](https://docs.getdbt.com/docs/dbt-versions/release-notes/june-2023/ci-updates-phase1-rn).
|
|
10
|
+
* <br/>
|
|
11
|
+
* <br/>
|
|
12
|
+
* Those improvements include modifications to deferral which was historically set at the job level and will now be set at the environment level.
|
|
13
|
+
* Deferral can still be set to "self" by setting `selfDeferring` to `true` but with the new approach, deferral to other runs need to be done with `deferringEnvironmentId` instead of `deferringJobId`.
|
|
14
|
+
*
|
|
15
|
+
* > As of beginning of February 2024, job chaining with `jobCompletionTriggerCondition` is in private beta and not available to all users.
|
|
16
|
+
* <br/>
|
|
17
|
+
* <br/>
|
|
18
|
+
* This notice will be removed once the feature is generally available.
|
|
19
|
+
*
|
|
20
|
+
* ## Example Usage
|
|
21
|
+
*
|
|
22
|
+
* ```typescript
|
|
23
|
+
* import * as pulumi from "@pulumi/pulumi";
|
|
24
|
+
* import * as dbtcloud from "@pulumi/dbtcloud";
|
|
25
|
+
*
|
|
26
|
+
* // NOTE for customers using the LEGACY dbt_cloud provider:
|
|
27
|
+
* // a job that has github_webhook and git_provider_webhook
|
|
28
|
+
* // set to false will be categorized as a "Deploy Job"
|
|
29
|
+
* const dailyJob = new dbtcloud.Job("daily_job", {
|
|
30
|
+
* environmentId: prodEnvironment.environmentId,
|
|
31
|
+
* executeSteps: ["dbt build"],
|
|
32
|
+
* generateDocs: true,
|
|
33
|
+
* isActive: true,
|
|
34
|
+
* name: "Daily job",
|
|
35
|
+
* numThreads: 64,
|
|
36
|
+
* projectId: dbtProject.id,
|
|
37
|
+
* runGenerateSources: true,
|
|
38
|
+
* targetName: "default",
|
|
39
|
+
* triggers: {
|
|
40
|
+
* custom_branch_only: false,
|
|
41
|
+
* github_webhook: false,
|
|
42
|
+
* git_provider_webhook: false,
|
|
43
|
+
* schedule: true,
|
|
44
|
+
* },
|
|
45
|
+
* scheduleDays: [
|
|
46
|
+
* 0,
|
|
47
|
+
* 1,
|
|
48
|
+
* 2,
|
|
49
|
+
* 3,
|
|
50
|
+
* 4,
|
|
51
|
+
* 5,
|
|
52
|
+
* 6,
|
|
53
|
+
* ],
|
|
54
|
+
* scheduleType: "days_of_week",
|
|
55
|
+
* scheduleHours: [0],
|
|
56
|
+
* });
|
|
57
|
+
* // a job that has github_webhook and git_provider_webhook set
|
|
58
|
+
* // to true will be categorized as a "Continuous Integration Job"
|
|
59
|
+
* const ciJob = new dbtcloud.Job("ci_job", {
|
|
60
|
+
* environmentId: ciEnvironment.environmentId,
|
|
61
|
+
* executeSteps: ["dbt build -s state:modified+ --fail-fast"],
|
|
62
|
+
* generateDocs: false,
|
|
63
|
+
* deferringEnvironmentId: prodEnvironment.environmentId,
|
|
64
|
+
* name: "CI Job",
|
|
65
|
+
* numThreads: 32,
|
|
66
|
+
* projectId: dbtProject.id,
|
|
67
|
+
* runGenerateSources: false,
|
|
68
|
+
* triggers: {
|
|
69
|
+
* custom_branch_only: true,
|
|
70
|
+
* github_webhook: true,
|
|
71
|
+
* git_provider_webhook: true,
|
|
72
|
+
* schedule: false,
|
|
73
|
+
* },
|
|
74
|
+
* scheduleDays: [
|
|
75
|
+
* 0,
|
|
76
|
+
* 1,
|
|
77
|
+
* 2,
|
|
78
|
+
* 3,
|
|
79
|
+
* 4,
|
|
80
|
+
* 5,
|
|
81
|
+
* 6,
|
|
82
|
+
* ],
|
|
83
|
+
* scheduleType: "days_of_week",
|
|
84
|
+
* });
|
|
85
|
+
* // a job that is set to be triggered after another job finishes
|
|
86
|
+
* // this is sometimes referred as 'job chaining'
|
|
87
|
+
* const downstreamJob = new dbtcloud.Job("downstream_job", {
|
|
88
|
+
* environmentId: project2ProdEnvironment.environmentId,
|
|
89
|
+
* executeSteps: ["dbt build -s +my_model"],
|
|
90
|
+
* generateDocs: true,
|
|
91
|
+
* name: "Downstream job in project 2",
|
|
92
|
+
* numThreads: 32,
|
|
93
|
+
* projectId: dbtProject2.id,
|
|
94
|
+
* runGenerateSources: true,
|
|
95
|
+
* triggers: {
|
|
96
|
+
* custom_branch_only: false,
|
|
97
|
+
* github_webhook: false,
|
|
98
|
+
* git_provider_webhook: false,
|
|
99
|
+
* schedule: false,
|
|
100
|
+
* },
|
|
101
|
+
* scheduleDays: [
|
|
102
|
+
* 0,
|
|
103
|
+
* 1,
|
|
104
|
+
* 2,
|
|
105
|
+
* 3,
|
|
106
|
+
* 4,
|
|
107
|
+
* 5,
|
|
108
|
+
* 6,
|
|
109
|
+
* ],
|
|
110
|
+
* scheduleType: "days_of_week",
|
|
111
|
+
* jobCompletionTriggerCondition: {
|
|
112
|
+
* jobId: dailyJob.id,
|
|
113
|
+
* projectId: dbtProject.id,
|
|
114
|
+
* statuses: ["success"],
|
|
115
|
+
* },
|
|
116
|
+
* });
|
|
117
|
+
* ```
|
|
118
|
+
*
|
|
119
|
+
* ## Import
|
|
120
|
+
*
|
|
121
|
+
* Import using a job ID found in the URL or via the API.
|
|
122
|
+
*
|
|
123
|
+
* ```sh
|
|
124
|
+
* $ pulumi import dbtcloud:index/job:Job test_job "job_id"
|
|
125
|
+
* ```
|
|
126
|
+
*
|
|
127
|
+
* ```sh
|
|
128
|
+
* $ pulumi import dbtcloud:index/job:Job test_job 12345
|
|
129
|
+
* ```
|
|
130
|
+
*/
|
|
131
|
+
class Job extends pulumi.CustomResource {
|
|
132
|
+
/**
|
|
133
|
+
* Get an existing Job resource's state with the given name, ID, and optional extra
|
|
134
|
+
* properties used to qualify the lookup.
|
|
135
|
+
*
|
|
136
|
+
* @param name The _unique_ name of the resulting resource.
|
|
137
|
+
* @param id The _unique_ provider ID of the resource to lookup.
|
|
138
|
+
* @param state Any extra arguments used during the lookup.
|
|
139
|
+
* @param opts Optional settings to control the behavior of the CustomResource.
|
|
140
|
+
*/
|
|
141
|
+
static get(name, id, state, opts) {
|
|
142
|
+
return new Job(name, state, Object.assign(Object.assign({}, opts), { id: id }));
|
|
143
|
+
}
|
|
144
|
+
/**
|
|
145
|
+
* Returns true if the given object is an instance of Job. This is designed to work even
|
|
146
|
+
* when multiple copies of the Pulumi SDK have been loaded into the same process.
|
|
147
|
+
*/
|
|
148
|
+
static isInstance(obj) {
|
|
149
|
+
if (obj === undefined || obj === null) {
|
|
150
|
+
return false;
|
|
151
|
+
}
|
|
152
|
+
return obj['__pulumiType'] === Job.__pulumiType;
|
|
153
|
+
}
|
|
154
|
+
constructor(name, argsOrState, opts) {
|
|
155
|
+
let resourceInputs = {};
|
|
156
|
+
opts = opts || {};
|
|
157
|
+
if (opts.id) {
|
|
158
|
+
const state = argsOrState;
|
|
159
|
+
resourceInputs["dbtVersion"] = state ? state.dbtVersion : undefined;
|
|
160
|
+
resourceInputs["deferringEnvironmentId"] = state ? state.deferringEnvironmentId : undefined;
|
|
161
|
+
resourceInputs["deferringJobId"] = state ? state.deferringJobId : undefined;
|
|
162
|
+
resourceInputs["description"] = state ? state.description : undefined;
|
|
163
|
+
resourceInputs["environmentId"] = state ? state.environmentId : undefined;
|
|
164
|
+
resourceInputs["executeSteps"] = state ? state.executeSteps : undefined;
|
|
165
|
+
resourceInputs["generateDocs"] = state ? state.generateDocs : undefined;
|
|
166
|
+
resourceInputs["isActive"] = state ? state.isActive : undefined;
|
|
167
|
+
resourceInputs["jobCompletionTriggerCondition"] = state ? state.jobCompletionTriggerCondition : undefined;
|
|
168
|
+
resourceInputs["name"] = state ? state.name : undefined;
|
|
169
|
+
resourceInputs["numThreads"] = state ? state.numThreads : undefined;
|
|
170
|
+
resourceInputs["projectId"] = state ? state.projectId : undefined;
|
|
171
|
+
resourceInputs["runGenerateSources"] = state ? state.runGenerateSources : undefined;
|
|
172
|
+
resourceInputs["scheduleCron"] = state ? state.scheduleCron : undefined;
|
|
173
|
+
resourceInputs["scheduleDays"] = state ? state.scheduleDays : undefined;
|
|
174
|
+
resourceInputs["scheduleHours"] = state ? state.scheduleHours : undefined;
|
|
175
|
+
resourceInputs["scheduleInterval"] = state ? state.scheduleInterval : undefined;
|
|
176
|
+
resourceInputs["scheduleType"] = state ? state.scheduleType : undefined;
|
|
177
|
+
resourceInputs["selfDeferring"] = state ? state.selfDeferring : undefined;
|
|
178
|
+
resourceInputs["targetName"] = state ? state.targetName : undefined;
|
|
179
|
+
resourceInputs["timeoutSeconds"] = state ? state.timeoutSeconds : undefined;
|
|
180
|
+
resourceInputs["triggers"] = state ? state.triggers : undefined;
|
|
181
|
+
resourceInputs["triggersOnDraftPr"] = state ? state.triggersOnDraftPr : undefined;
|
|
182
|
+
}
|
|
183
|
+
else {
|
|
184
|
+
const args = argsOrState;
|
|
185
|
+
if ((!args || args.environmentId === undefined) && !opts.urn) {
|
|
186
|
+
throw new Error("Missing required property 'environmentId'");
|
|
187
|
+
}
|
|
188
|
+
if ((!args || args.executeSteps === undefined) && !opts.urn) {
|
|
189
|
+
throw new Error("Missing required property 'executeSteps'");
|
|
190
|
+
}
|
|
191
|
+
if ((!args || args.projectId === undefined) && !opts.urn) {
|
|
192
|
+
throw new Error("Missing required property 'projectId'");
|
|
193
|
+
}
|
|
194
|
+
if ((!args || args.triggers === undefined) && !opts.urn) {
|
|
195
|
+
throw new Error("Missing required property 'triggers'");
|
|
196
|
+
}
|
|
197
|
+
resourceInputs["dbtVersion"] = args ? args.dbtVersion : undefined;
|
|
198
|
+
resourceInputs["deferringEnvironmentId"] = args ? args.deferringEnvironmentId : undefined;
|
|
199
|
+
resourceInputs["deferringJobId"] = args ? args.deferringJobId : undefined;
|
|
200
|
+
resourceInputs["description"] = args ? args.description : undefined;
|
|
201
|
+
resourceInputs["environmentId"] = args ? args.environmentId : undefined;
|
|
202
|
+
resourceInputs["executeSteps"] = args ? args.executeSteps : undefined;
|
|
203
|
+
resourceInputs["generateDocs"] = args ? args.generateDocs : undefined;
|
|
204
|
+
resourceInputs["isActive"] = args ? args.isActive : undefined;
|
|
205
|
+
resourceInputs["jobCompletionTriggerCondition"] = args ? args.jobCompletionTriggerCondition : undefined;
|
|
206
|
+
resourceInputs["name"] = args ? args.name : undefined;
|
|
207
|
+
resourceInputs["numThreads"] = args ? args.numThreads : undefined;
|
|
208
|
+
resourceInputs["projectId"] = args ? args.projectId : undefined;
|
|
209
|
+
resourceInputs["runGenerateSources"] = args ? args.runGenerateSources : undefined;
|
|
210
|
+
resourceInputs["scheduleCron"] = args ? args.scheduleCron : undefined;
|
|
211
|
+
resourceInputs["scheduleDays"] = args ? args.scheduleDays : undefined;
|
|
212
|
+
resourceInputs["scheduleHours"] = args ? args.scheduleHours : undefined;
|
|
213
|
+
resourceInputs["scheduleInterval"] = args ? args.scheduleInterval : undefined;
|
|
214
|
+
resourceInputs["scheduleType"] = args ? args.scheduleType : undefined;
|
|
215
|
+
resourceInputs["selfDeferring"] = args ? args.selfDeferring : undefined;
|
|
216
|
+
resourceInputs["targetName"] = args ? args.targetName : undefined;
|
|
217
|
+
resourceInputs["timeoutSeconds"] = args ? args.timeoutSeconds : undefined;
|
|
218
|
+
resourceInputs["triggers"] = args ? args.triggers : undefined;
|
|
219
|
+
resourceInputs["triggersOnDraftPr"] = args ? args.triggersOnDraftPr : undefined;
|
|
220
|
+
}
|
|
221
|
+
opts = pulumi.mergeOptions(utilities.resourceOptsDefaults(), opts);
|
|
222
|
+
super(Job.__pulumiType, name, resourceInputs, opts);
|
|
223
|
+
}
|
|
224
|
+
}
|
|
225
|
+
exports.Job = Job;
|
|
226
|
+
/** @internal */
|
|
227
|
+
Job.__pulumiType = 'dbtcloud:index/job:Job';
|
|
228
|
+
//# sourceMappingURL=job.js.map
|
package/job.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"job.js","sourceRoot":"","sources":["../job.ts"],"names":[],"mappings":"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"}
|