From 8360490bee5ea5851247b06c9a2e9aa6c2f3552e Mon Sep 17 00:00:00 2001 From: mirnawong1 Date: Fri, 24 Jan 2025 10:37:10 +0000 Subject: [PATCH 01/29] update lifecycle component --- website/docs/docs/introduction.md | 10 +++ website/src/components/expandable/index.js | 59 +++++++++-------- website/src/components/lifeCycle/index.js | 64 ++++++++++++++++--- .../components/lifeCycle/styles.module.css | 17 ++++- 4 files changed, 111 insertions(+), 39 deletions(-) diff --git a/website/docs/docs/introduction.md b/website/docs/docs/introduction.md index 5301dae396d..e160d83fdbc 100644 --- a/website/docs/docs/introduction.md +++ b/website/docs/docs/introduction.md @@ -5,9 +5,19 @@ pagination_next: null pagination_prev: null --- +# Test + dbt compiles and runs your analytics code against your data platform, enabling you and your team to collaborate on a single source of truth for metrics, insights, and business definitions. This single source of truth, combined with the ability to define tests for your data, reduces errors when logic changes, and alerts you when issues arise. +- Test text here blah blah blah +- Test text here blah blah blah + + + + test + + diff --git a/website/src/components/expandable/index.js b/website/src/components/expandable/index.js index 3cf87b3cd34..6abc84cf0fd 100644 --- a/website/src/components/expandable/index.js +++ b/website/src/components/expandable/index.js @@ -10,7 +10,7 @@ function slugify(text) { .replace(/[\u0300-\u036f]/g, '') // remove diacritics .replace(/\s+/g, '-') // replace spaces with - .replace(/[^\w\-]+/g, '') // remove all non-word chars - .replace(/\-\-+/g, '-') // replace multipl - with a single - + .replace(/\-\-+/g, '-') // replace multiple - with a single - .replace(/^-+/, '') // trim - from the start .replace(/-+$/, ''); // trim - from the end } @@ -39,43 +39,46 @@ function Expandable({ children, alt_header = null, lifecycle }) { popup.classList.add('copy-popup'); popup.innerText = 'Link copied!'; - // Add close button ('x') - const closeButton = document.createElement('span'); - closeButton.classList.add('close-button'); - closeButton.innerHTML = ' ×'; // '×' symbol for 'x' - closeButton.addEventListener('click', () => { - if (document.body.contains(popup)) { - document.body.removeChild(popup); - } - }); - popup.appendChild(closeButton); + // Add close button ('x') + const closeButton = document.createElement('span'); + closeButton.classList.add('close-button'); + closeButton.innerHTML = ' ×'; // '×' symbol for 'x' + closeButton.addEventListener('click', () => { + if (document.body.contains(popup)) { + document.body.removeChild(popup); + } + }); + popup.appendChild(closeButton); - document.body.appendChild(popup); + document.body.appendChild(popup); - setTimeout(() => { - if (document.body.contains(popup)) { - document.body.removeChild(popup); - } - }, 3000); -}; + setTimeout(() => { + if (document.body.contains(popup)) { + document.body.removeChild(popup); + } + }, 3000); + }; -useEffect(() => { - if (window.location.hash === `#${anchorId}`) { - setOn(true); - const element = document.getElementById(anchorId); - if (element) { - element.scrollIntoView({ behavior: 'smooth' }); + useEffect(() => { + if (window.location.hash === `#${anchorId}`) { + setOn(true); + const element = document.getElementById(anchorId); + if (element) { + element.scrollIntoView({ behavior: 'smooth' }); + } } - } -}, [anchorId]); + }, [anchorId]); return ( -
+
  - {alt_header} + {alt_header} + e.stopPropagation()}> + +
diff --git a/website/src/components/lifeCycle/index.js b/website/src/components/lifeCycle/index.js index 200c948109c..a157c1ed6ec 100644 --- a/website/src/components/lifeCycle/index.js +++ b/website/src/components/lifeCycle/index.js @@ -1,4 +1,6 @@ -import React from 'react' +/* eslint-disable */ + +import React from 'react'; import styles from './styles.module.css'; const statusColors = { @@ -12,14 +14,26 @@ const statusColors = { }; const fontColors = { - enterprise: '#262A38', - team: '#262A38', - developer: '#262A38', - // lifecycle statuses use the css determined font color (white) - }; + enterprise: '#262A38', + team: '#262A38', + developer: '#262A38', + preview: '#ffff', + beta: '#ffff', + ga: '#ffff', +}; + +// URL mapping for predefined lifecycle statuses +const statusUrls = { + enterprise: 'https://www.getdbt.com/pricing', + team: 'https://www.getdbt.com/pricing', + developer: 'https://www.getdbt.com/signup', + beta: 'https://docs.getdbt.com/docs/dbt-versions/product-lifecycles', + preview: 'https://docs.getdbt.com/docs/dbt-versions/product-lifecycles', + ga: 'https://docs.getdbt.com/docs/dbt-versions/product-lifecycles', +}; export default function Lifecycle(props) { - const statuses = props.status?.split(',') + const statuses = props.status?.split(','); if (!props.status || !statuses?.length) { return null; } @@ -27,13 +41,43 @@ export default function Lifecycle(props) { return ( <> {statuses.map((status, index) => { + const isKnownStatus = Object.prototype.hasOwnProperty.call(statusColors, status); + const url = isKnownStatus ? statusUrls[status] || props.customUrl || null : null; + const style = { - backgroundColor: props.backgroundColor || statusColors[status] || '#047377', // default to teal if no match - color: fontColors[status] || '#fff' // default font color if no matc + backgroundColor: props.backgroundColor || statusColors[status] || '#d3d3d3', // Default gray for unknown status + color: fontColors[status] || '#000', // Default black for unknown status + cursor: url ? 'pointer' : 'default', // Non-clickable for unknown status + transition: 'background-color 0.2s ease, transform 0.2s ease, text-decoration 0.2s ease', + padding: '5px 10px', + borderRadius: '16px', + textDecoration: url ? 'underline' : 'none', // Underline for clickable pills only }; + // Render a clickable pill for known statuses with a URL + if (url) { + return ( + + {status} + + ); + } + + // Render a static pill for unknown or unlinked statuses return ( - + {status} ); diff --git a/website/src/components/lifeCycle/styles.module.css b/website/src/components/lifeCycle/styles.module.css index d7c0661d932..fdd016dff67 100644 --- a/website/src/components/lifeCycle/styles.module.css +++ b/website/src/components/lifeCycle/styles.module.css @@ -5,11 +5,26 @@ font-weight: 600; /* Normal font weight */ padding: 1px 8px; /* Adjust padding for a more pill-like shape */ border-radius: 16px; /* Larger border-radius for rounded edges */ - margin-left: 8px; /* Margin to separate from the header text */ + margin-left: 16px; /* Margin to separate from the header text */ vertical-align: middle; /* Align with the title */ display: inline-block; /* Use inline-block for better control */ text-transform: capitalize; /* Uppercase text */ line-height: 1.6; /* Adjust line height for vertical alignment */ + text-decoration: none; /* No underline by default */ + transition: background-color 0.2s ease, transform 0.2s ease, text-decoration 0.2s ease; + cursor: pointer; } +.lifecycle:hover { + background-color: #EBEDF0; + color: #e3f2fd; + text-decoration: underline; + box-shadow: 0px 4px 6px rgba(0, 0, 0, 0.2); + transform: scale(1.09); /* Slightly enlarge the pill */ +} + +.lifecycle:focus { + outline: 2px solid #EBEDF0; /* Focus outline for accessibility */ + outline-offset: 2px; +} From 77ca2ac891a149a77f068664a4f0bf93cd980db4 Mon Sep 17 00:00:00 2001 From: AndyHunt66 Date: Tue, 28 Jan 2025 13:16:19 +0000 Subject: [PATCH 02/29] Update dremio-setup.md The sentence "See Support Keys in the Dremio documentation for the steps." makes no sense in this context. There is nothing on this page that requires the setting of a support key, apart from if you're using a PAT and haven't yet set up your Dremio system to use PATs, and even then, the wrong page is linked to. --- website/docs/docs/core/connect-data-platform/dremio-setup.md | 1 - 1 file changed, 1 deletion(-) diff --git a/website/docs/docs/core/connect-data-platform/dremio-setup.md b/website/docs/docs/core/connect-data-platform/dremio-setup.md index 7ac304bba2b..9c1f609e246 100644 --- a/website/docs/docs/core/connect-data-platform/dremio-setup.md +++ b/website/docs/docs/core/connect-data-platform/dremio-setup.md @@ -37,7 +37,6 @@ Before connecting from project to Dremio Cloud, follow these prerequisite steps: * Ensure that you are using version 22.0 or later. * Ensure that Python 3.9.x or later is installed on the system that you are running dbt on. - See Support Keys in the Dremio documentation for the steps. * If you want to use TLS to secure the connection between dbt and Dremio Software, configure full wire encryption in your Dremio cluster. For instructions, see Configuring Wire Encryption. From 3ee1148208e660e83d80aaeb3f5fb5099eb0c3d2 Mon Sep 17 00:00:00 2001 From: Mirna Wong <89008547+mirnawong1@users.noreply.github.com> Date: Tue, 28 Jan 2025 16:23:56 +0000 Subject: [PATCH 03/29] clarify gitlab token refresh behavior this pr clarifies gitlab token refresh behavior Resolves #6830 --- website/docs/docs/cloud/git/connect-gitlab.md | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/website/docs/docs/cloud/git/connect-gitlab.md b/website/docs/docs/cloud/git/connect-gitlab.md index d16cdb15b8e..adcba09aa9c 100644 --- a/website/docs/docs/cloud/git/connect-gitlab.md +++ b/website/docs/docs/cloud/git/connect-gitlab.md @@ -10,7 +10,14 @@ Connecting your GitLab account to dbt Cloud provides convenience and another lay - Clone repos using HTTPS rather than SSH. - Carry GitLab user permissions through to dbt Cloud or dbt Cloud CLI's git actions. - Trigger [Continuous integration](/docs/deploy/continuous-integration) builds when merge requests are opened in GitLab. - - GitLab automatically registers a webhook in your GitLab repository to enable seamless integration with dbt Cloud. + +:::info +When configuring the repository in dbt Cloud, GitLab automatically: +- Registers a webhook, which triggers pipeline jobs in dbt Cloud. +- Creates a [project access token](https://docs.gitlab.com/ee/user/project/settings/project_access_tokens.html) in your GitLab repository, which is used to send the job run status back to Gitlab using the dbt Cloud API for CI Jobs. dbt Cloud automatically refereshes this project access token for you, meaning you never have to manually rotate the token and cause pipeline disruptions. + +If you experience any token refresh errors, please try disconnecting and reconnecting the repository in dbt Cloud to refresh the token. +::: The steps to integrate GitLab in dbt Cloud depend on your plan. If you are on: - the Developer or Team plan, read these [instructions](#for-dbt-cloud-developer-and-team-tiers). From 30aa8759ec27f690f4d2e0be15c7cead8a54ced8 Mon Sep 17 00:00:00 2001 From: Mirna Wong <89008547+mirnawong1@users.noreply.github.com> Date: Tue, 28 Jan 2025 16:56:32 +0000 Subject: [PATCH 04/29] Update connect-gitlab.md simplify and add faq --- website/docs/docs/cloud/git/connect-gitlab.md | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/website/docs/docs/cloud/git/connect-gitlab.md b/website/docs/docs/cloud/git/connect-gitlab.md index adcba09aa9c..efd961141f6 100644 --- a/website/docs/docs/cloud/git/connect-gitlab.md +++ b/website/docs/docs/cloud/git/connect-gitlab.md @@ -14,9 +14,9 @@ Connecting your GitLab account to dbt Cloud provides convenience and another lay :::info When configuring the repository in dbt Cloud, GitLab automatically: - Registers a webhook, which triggers pipeline jobs in dbt Cloud. -- Creates a [project access token](https://docs.gitlab.com/ee/user/project/settings/project_access_tokens.html) in your GitLab repository, which is used to send the job run status back to Gitlab using the dbt Cloud API for CI Jobs. dbt Cloud automatically refereshes this project access token for you, meaning you never have to manually rotate the token and cause pipeline disruptions. +- Creates a [project access token](https://docs.gitlab.com/ee/user/project/settings/project_access_tokens.html) in your GitLab repository, which sends the job run status back to Gitlab using the dbt Cloud API for CI jobs. dbt Cloud automatically refereshes this project access token for you, which means you never have to manually rotate the token. + -If you experience any token refresh errors, please try disconnecting and reconnecting the repository in dbt Cloud to refresh the token. ::: The steps to integrate GitLab in dbt Cloud depend on your plan. If you are on: @@ -130,3 +130,14 @@ Once you approve authorization, you will be redirected to dbt Cloud, and you sho + + +When you connect dbt Cloud to a GitLab repository, GitLab automatically creates a [project access token](https://docs.gitlab.com/ee/user/project/settings/project_access_tokens.html) in your GitLab repository in the background. This sends the job run status back to Gitlab using the dbt Cloud API for CI jobs. + +If you're recieving a "Refresh token" message, don't worry — dbt Cloud automatically refereshes this project access token for you, which means you never have to manually rotate the token. + +If you still experience any token refresh errors, please try disconnecting and reconnecting the repository in dbt Cloud to refresh the token. + +For any issues, pleasereach out to the Support team at support@getdbt.com and we'll be happy to help! + + From 77b4edd47845f48b4bb6ae75d1f497cff13e20a2 Mon Sep 17 00:00:00 2001 From: Matt Shaver <60105315+matthewshaver@users.noreply.github.com> Date: Tue, 28 Jan 2025 12:06:03 -0500 Subject: [PATCH 05/29] Updating SSO migration (#6838) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ## What are you changing in this pull request and why? Updating the migration guide based on customer feedback ## Checklist - [ ] I have reviewed the [Content style guide](https://github.com/dbt-labs/docs.getdbt.com/blob/current/contributing/content-style-guide.md) so my content adheres to these guidelines. - [ ] The topic I'm writing about is for specific dbt version(s) and I have versioned it according to the [version a whole page](https://github.com/dbt-labs/docs.getdbt.com/blob/current/contributing/single-sourcing-content.md#adding-a-new-version) and/or [version a block of content](https://github.com/dbt-labs/docs.getdbt.com/blob/current/contributing/single-sourcing-content.md#versioning-blocks-of-content) guidelines. - [ ] I have added checklist item(s) to this list for anything anything that needs to happen before this PR is merged, such as "needs technical review" or "change base branch." - [ ] The content in this PR requires a dbt release note, so I added one to the [release notes page](https://docs.getdbt.com/docs/dbt-versions/dbt-cloud-release-notes). --- 🚀 Deployment available! Here are the direct links to the updated files: - https://docs-getdbt-com-git-sso-update-dbt-labs.vercel.app/docs/cloud/manage-access/auth0-migration --------- Co-authored-by: nataliefiann <120089939+nataliefiann@users.noreply.github.com> --- .../cloud/manage-access/auth0-migration.md | 14 +++++++++++--- .../access-control/entra-id-saml.png | Bin 102365 -> 101717 bytes .../dbt-cloud/access-control/sso-uris.png | Bin 0 -> 192165 bytes 3 files changed, 11 insertions(+), 3 deletions(-) create mode 100644 website/static/img/docs/dbt-cloud/access-control/sso-uris.png diff --git a/website/docs/docs/cloud/manage-access/auth0-migration.md b/website/docs/docs/cloud/manage-access/auth0-migration.md index f961201e153..859e47cd017 100644 --- a/website/docs/docs/cloud/manage-access/auth0-migration.md +++ b/website/docs/docs/cloud/manage-access/auth0-migration.md @@ -19,19 +19,27 @@ Alternatively, you can start the process from the **Settings** page in the **Sin -There are two fields in these settings that you will need for the migration: +:::warning vanity urls + +Don't use vanity URLs when configuring the SSO settings. You need to use the generic URL provided in the SSO settings for your environment. For example, if your vanity URL is `cloud.MY_COMPANY.getdbt.com`, configure `auth.cloud.getdbt.com` as ``. + +::: + +There are two fields in the SSO settings that you need for the migration: - **Single sign-on URL:** This will be in the format of your login URL `https:///login/callback?connection=` - **Audience URI (SP Entity ID):** This will be in the format `urn:auth0::` Replace `` with your accounts login slug. + + Once you have opted to begin the migration process, the following steps will vary depending on the configured identity provider. You can just skip to the section that's right for your environment. These steps only apply to customers going through the migration; new setups will use the existing [setup instructions](/docs/cloud/manage-access/sso-overview). :::warning Login \{slug\} Slugs should contain only letters, numbers, and dashes. Make sure to remove underscores (if they exist) from login slugs: -* before migrating on the **Account Settings** page, or -* while migrating (before enabling), as shown in the Migrate authentication screenshots for your respective setup. +* Before migrating on the **Account Settings** page, or +* While migrating (before enabling), as shown in the migrate authentication screenshots for your respective setup. After changing the slug, admins must share the new login URL with their dbt Cloud users. ::: diff --git a/website/static/img/docs/dbt-cloud/access-control/entra-id-saml.png b/website/static/img/docs/dbt-cloud/access-control/entra-id-saml.png index 01ab65cef2745e0a0714c33d9e62f2bb1e0313a0..50e21fb1ac2142770a1143180edc62d1d64411dc 100644 GIT binary patch delta 66629 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%0Dp30!`j8T#zyAbLF@Xh# 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 delta 67234 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

Ga1w-xkW5N{(%0{qC199ZXyuNrE2r9Tk9}FoB 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%0AT_sHT&eH8_eBu(LH^}9nj_owyA*Qa|-&F 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 diff --git a/website/static/img/docs/dbt-cloud/access-control/sso-uris.png b/website/static/img/docs/dbt-cloud/access-control/sso-uris.png new file mode 100644 index 0000000000000000000000000000000000000000..2df6d3e42101f238644293c69f99d5e281271d19 GIT binary patch literal 192165 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

_Vcyx>~wgVc0BxKXdrg`Gh;2-btZ!_CC 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 literal 0 HcmV?d00001 From 24ce3f53a62070ef575321d2d5847645f5cd7630 Mon Sep 17 00:00:00 2001 From: Mirna Wong <89008547+mirnawong1@users.noreply.github.com> Date: Tue, 28 Jan 2025 17:45:55 +0000 Subject: [PATCH 06/29] Update website/docs/docs/cloud/git/connect-gitlab.md --- website/docs/docs/cloud/git/connect-gitlab.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/website/docs/docs/cloud/git/connect-gitlab.md b/website/docs/docs/cloud/git/connect-gitlab.md index efd961141f6..67fe83b537c 100644 --- a/website/docs/docs/cloud/git/connect-gitlab.md +++ b/website/docs/docs/cloud/git/connect-gitlab.md @@ -14,7 +14,7 @@ Connecting your GitLab account to dbt Cloud provides convenience and another lay :::info When configuring the repository in dbt Cloud, GitLab automatically: - Registers a webhook, which triggers pipeline jobs in dbt Cloud. -- Creates a [project access token](https://docs.gitlab.com/ee/user/project/settings/project_access_tokens.html) in your GitLab repository, which sends the job run status back to Gitlab using the dbt Cloud API for CI jobs. dbt Cloud automatically refereshes this project access token for you, which means you never have to manually rotate the token. +- Creates a [project access token](https://docs.gitlab.com/ee/user/project/settings/project_access_tokens.html) in your GitLab repository, which sends the job run status back to Gitlab using the dbt Cloud API for CI jobs. dbt Cloud automatically refreshes this project access token for you, which means you never have to manually rotate the token. Check out the [FAQs](#faqs) for more info. ::: From 701238a833b82f227c6b4c4296548ba7c86e13b5 Mon Sep 17 00:00:00 2001 From: faithebear <149540831+faithebear@users.noreply.github.com> Date: Tue, 28 Jan 2025 11:15:27 -0700 Subject: [PATCH 07/29] Update snapshots.md snapshots don't have to go in the snapshots folder now --- website/docs/docs/build/snapshots.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/website/docs/docs/build/snapshots.md b/website/docs/docs/build/snapshots.md index b754639c01b..b7ba30b9c7e 100644 --- a/website/docs/docs/build/snapshots.md +++ b/website/docs/docs/build/snapshots.md @@ -46,7 +46,7 @@ This order is now in the "shipped" state, but we've lost the information about w -Configure your snapshots in YAML files to tell dbt how to detect record changes. Define snapshots configurations in YAML files, alongside your models, for a cleaner, faster, and more consistent set up. +Configure your snapshots in YAML files to tell dbt how to detect record changes. Define snapshots configurations in YAML files, alongside your models, for a cleaner, faster, and more consistent set up. Snapshot YAML files may be placed in the models directory or in a snapshots directory. From 4c0b00c795d72ff1e5043a572ccb7e31d1291fef Mon Sep 17 00:00:00 2001 From: john-rock Date: Tue, 28 Jan 2025 13:24:05 -0500 Subject: [PATCH 08/29] update biweekly to monthly --- website/docs/docs/get-started-dbt.md | 2 +- website/docusaurus.config.js | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/website/docs/docs/get-started-dbt.md b/website/docs/docs/get-started-dbt.md index 1920a9b3da2..32d96e9d3c4 100644 --- a/website/docs/docs/get-started-dbt.md +++ b/website/docs/docs/get-started-dbt.md @@ -95,7 +95,7 @@ Learn more about [dbt Cloud features](/docs/cloud/about-cloud/dbt-cloud-feature Expand your dbt knowledge and expertise with these additional resources: -- [Join the bi-weekly demos](https://www.getdbt.com/resources/webinars/dbt-cloud-demos-with-experts) to see dbt Cloud in action and ask questions. +- [Join the monthly demos](https://www.getdbt.com/resources/webinars/dbt-cloud-demos-with-experts) to see dbt Cloud in action and ask questions. - [dbt Cloud AWS marketplace](https://aws.amazon.com/marketplace/pp/prodview-tjpcf42nbnhko) contains information on how to deploy dbt Cloud on AWS, user reviews, and more. - [Best practices](https://docs.getdbt.com/best-practices) contains information on how dbt Labs approaches building projects through our current viewpoints on structure, style, and setup. - [dbt Learn](https://learn.getdbt.com) offers free online courses that cover dbt fundamentals, advanced topics, and more. diff --git a/website/docusaurus.config.js b/website/docusaurus.config.js index 29ce2022e20..628cde9f63a 100644 --- a/website/docusaurus.config.js +++ b/website/docusaurus.config.js @@ -71,8 +71,8 @@ var siteSettings = { //debug: true, }, announcementBar: { - id: "biweekly-demos", - content: "Join our biweekly demos and see dbt Cloud in action!", + id: "monthly-demos", + content: "Join our monthly demos and see dbt Cloud in action!", backgroundColor: "#047377", textColor: "#fff", isCloseable: true, From 60c42a75aa46e58eef8477bbfb10e4b11a4575e1 Mon Sep 17 00:00:00 2001 From: Mirna Wong <89008547+mirnawong1@users.noreply.github.com> Date: Tue, 28 Jan 2025 18:25:08 +0000 Subject: [PATCH 09/29] Update website/docs/docs/build/snapshots.md --- website/docs/docs/build/snapshots.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/website/docs/docs/build/snapshots.md b/website/docs/docs/build/snapshots.md index b7ba30b9c7e..f2a9e967cf3 100644 --- a/website/docs/docs/build/snapshots.md +++ b/website/docs/docs/build/snapshots.md @@ -46,7 +46,7 @@ This order is now in the "shipped" state, but we've lost the information about w -Configure your snapshots in YAML files to tell dbt how to detect record changes. Define snapshots configurations in YAML files, alongside your models, for a cleaner, faster, and more consistent set up. Snapshot YAML files may be placed in the models directory or in a snapshots directory. +Configure your snapshots in YAML files to tell dbt how to detect record changes. Define snapshots configurations in YAML files, alongside your models, for a cleaner, faster, and more consistent set up. Place snapshot YAML files in the models directory or in a snapshots directory. From 3709fb2de908fe6dd2333d847171cce4ed70bedd Mon Sep 17 00:00:00 2001 From: Matt Shaver <60105315+matthewshaver@users.noreply.github.com> Date: Tue, 28 Jan 2025 13:34:16 -0500 Subject: [PATCH 10/29] Rearranging ADO page (#6826) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ## What are you changing in this pull request and why? ~This moves around some sections and brings the full Service User instructions back. This is a bandaid for some clients between worlds and utilizes two H1 headers. I know this is a little outside our style requirements, but this would be helpful.~ Splits the ADO setup into two docs - one for service principal one for service user Updates the intro page to link to the appropriate files There is a banner up top that is new language in need of review ## Checklist - [ ] I have reviewed the [Content style guide](https://github.com/dbt-labs/docs.getdbt.com/blob/current/contributing/content-style-guide.md) so my content adheres to these guidelines. - [ ] The topic I'm writing about is for specific dbt version(s) and I have versioned it according to the [version a whole page](https://github.com/dbt-labs/docs.getdbt.com/blob/current/contributing/single-sourcing-content.md#adding-a-new-version) and/or [version a block of content](https://github.com/dbt-labs/docs.getdbt.com/blob/current/contributing/single-sourcing-content.md#versioning-blocks-of-content) guidelines. - [ ] I have added checklist item(s) to this list for anything anything that needs to happen before this PR is merged, such as "needs technical review" or "change base branch." - [ ] The content in this PR requires a dbt release note, so I added one to the [release notes page](https://docs.getdbt.com/docs/dbt-versions/dbt-cloud-release-notes). --- 🚀 Deployment available! Here are the direct links to the updated files: - https://docs-getdbt-com-git-ado-updates-dbt-labs.vercel.app/docs/cloud/git/connect-azure-devops - https://docs-getdbt-com-git-ado-updates-dbt-labs.vercel.app/docs/cloud/git/setup-azure-service-principal - https://docs-getdbt-com-git-ado-updates-dbt-labs.vercel.app/docs/cloud/git/setup-azure-service-user --------- Co-authored-by: Leona B. Campbell <3880403+runleonarun@users.noreply.github.com> --- .../docs/cloud/git/connect-azure-devops.md | 14 +- .../git/setup-azure-service-principal.md | 184 ++++++++++++++++++ ...p-azure.md => setup-azure-service-user.md} | 181 +++++++---------- website/sidebars.js | 3 +- .../snippets/_git-providers-supporting-ci.md | 2 +- website/vercel.json | 5 + 6 files changed, 268 insertions(+), 121 deletions(-) create mode 100644 website/docs/docs/cloud/git/setup-azure-service-principal.md rename website/docs/docs/cloud/git/{setup-azure.md => setup-azure-service-user.md} (66%) diff --git a/website/docs/docs/cloud/git/connect-azure-devops.md b/website/docs/docs/cloud/git/connect-azure-devops.md index f3bb07a12d0..49920cc90e1 100644 --- a/website/docs/docs/cloud/git/connect-azure-devops.md +++ b/website/docs/docs/cloud/git/connect-azure-devops.md @@ -1,7 +1,7 @@ --- title: "Connect to Azure DevOps" id: "connect-azure-devops" -pagination_next: "docs/cloud/git/setup-azure" +pagination_next: "docs/cloud/git/setup-service-principal" --- # Connect to Azure DevOps @@ -20,12 +20,10 @@ Connect your Azure DevOps cloud account in dbt Cloud to unlock new product exper - Trigger Continuous integration (CI) builds when pull requests are opened in Azure DevOps. -To connect Azure DevOps in dbt Cloud: +Currently, there are multiple methods for integrating Azure DevOps with dbt Cloud: -1. An Entra ID admin role (or role with proper permissions) needs to [set up an Active Directory application](/docs/cloud/git/setup-azure#register-an-azure-ad-app). -2. An Azure DevOps admin needs to [connect the accounts](/docs/cloud/git/setup-azure#connect-azure-devops-to-your-new-app). -3. A dbt Cloud account admin needs to [add the app to dbt Cloud](/docs/cloud/git/setup-azure#add-your-azure-ad-app-to-dbt-cloud). -4. dbt Cloud developers need to [personally authenticate with Azure DevOps](/docs/cloud/git/authenticate-azure) from dbt Cloud. +- [**Service principal (recommended)**](/docs/cloud/git/setup-service-principal): Currently, this feature is in a phased rollout and not widely available to all accounts. +- [**Service user (legacy)**](/docs/cloud/git/setup-service-user): Available to all accounts. +- [**Service user to service principal migration**](/docs/cloud/git/setup-service-principal#migrate-to-service-principal): Once the **Service principal** option is available, you can migrate to the new service. - -If you're a Business Critical customer using [IP restrictions](/docs/cloud/secure/ip-restrictions), ensure you've added the appropriate Azure DevOps CIDRs to your IP restriction rules, or else the Azure DevOps connection will fail. +No matter which approach you take, you will need admins for dbt Cloud, Azure Entra ID, and Azure DevOps to complete the integration. For more information, follow the setup guide that's right for you. diff --git a/website/docs/docs/cloud/git/setup-azure-service-principal.md b/website/docs/docs/cloud/git/setup-azure-service-principal.md new file mode 100644 index 00000000000..55147bb66b1 --- /dev/null +++ b/website/docs/docs/cloud/git/setup-azure-service-principal.md @@ -0,0 +1,184 @@ +--- +title: "Set up Azure DevOps" +id: "setup-service-principal" +description: "You can set up your Azure DevOps by creating a Microsoft Entra ID app and adding it to dbt Cloud." +sidebar_label: "Set up service principal" +--- + +# Set up Azure DevOps + +## Service principal overview + +:::note + +You can use these instructions to create a service principal app. The service principal feature is being gradually rolled out to dbt Cloud accounts, so it may not be available in all accounts. + +If you need to configure dbt Cloud and Azure DevOps but don't see the **Service principal** option in your account settings, use the [**Service user**](/docs/cloud/git/setup-service-user) configuration for now. You can easily [migrate to a service principal](#migrate-to-service-principal) when available for your account. + +::: + +To use dbt Cloud's native integration with Azure DevOps, an account admin needs to set up a Microsoft Entra ID app as a service principal. We recommend setting up a separate [Entra ID application than used for SSO](/docs/cloud/manage-access/set-up-sso-microsoft-entra-id). + +The application's service principal represents the Entra ID application object. While a "service user" represents a real user in Azure with an Entra ID (and an applicable license), the "service principal" is a secure identity used by an application to access Azure resources unattended. The service principal authenticates with a client ID and secret rather than a username and password (or any other form of user auth). Service principals are the [Microsoft recommended method](https://learn.microsoft.com/en-us/entra/architecture/secure-service-accounts#types-of-microsoft-entra-service-accounts) for authenticating apps. + + +1. [Register an Entra ID app](#register-a-microsoft-entra-id-app). +2. [Connect Azure DevOps to your new app](#connect-azure-devops-to-your-new-app). +3. [Add your Entra ID app to dbt Cloud](#add-your-azure-ad-app-to-dbt-cloud). + +Once the Microsoft Entra ID app is added to dbt Cloud, it will act as a [service principal](https://learn.microsoft.com/en-us/entra/identity-platform/app-objects-and-service-principals?tabs=browser), which will be used to power headless actions in dbt Cloud such as deployment runs and CI. The dbt Cloud developers can then personally authenticate in dbt Cloud from Azure DevOps. For more, see [Authenticate with Azure DevOps](/docs/cloud/git/authenticate-azure). + +The following personas are required to complete the steps on this page: +- Microsoft Entra ID admin +- Azure DevOps admin +- dbt Cloud account admin +- Azure admin (if your Entra ID and Azure DevOps environments are not connected) + +## Register a Microsoft Entra ID app + +A Microsoft Entra ID admin needs to perform the following steps: + +1. Sign into your Azure portal and click **Microsoft Entra ID**. +2. Select **App registrations** in the left panel. +3. Select **New registration**. The form for creating a new Entra ID app opens. +4. Provide a name for your app. We recommend using, "dbt Labs Azure DevOps app". +5. Select **Accounts in any organizational directory (Any Entra ID directory - Multitenant)** as the Supported Account Types. +Many customers ask why they need to select Multitenant instead of Single Tenant, and they frequently get this step wrong. Microsoft considers Azure DevOps (formerly called Visual Studio) and Microsoft Entra ID separate tenants, and for the Entra ID application to work properly, you must select Multitenant. +6. Click **Register**. + +Here's what your app should look like before registering it: + + + +## Create a client secret + +A Microsoft Entra ID admin needs to complete the following steps: + +1. Navigate to **Microsoft Entra ID**, click **App registrations**, and click on your app. +2. Select **Certificates and Secrets** from the left navigation panel. +3. Select **Client secrets** and click **New client secret** +4. Give the secret a description and select the expiration time. Click **Add**. +5. Copy the **Value** field and securely share it with the dbt Cloud account admin, who will complete the setup. + +## Create the app's service principal + +After you've created the app, you need to verify whether it has a service principal. In many cases, if this has been configured before, new apps will get one assigned upon creation. + +1. Navigate to **Microsoft Entra ID**. +2. Under **Manage** on the left-side menu, click **App registrations**. +3. Click the app for the dbt Cloud and Azure DevOps integration. +4. Locate the **Managed application in local directory** field and, if it has the option, click **Create Service Principal**. If the field is already populated, a service principal has already been assigned. + + + +## Add permissions to your service principal + +An Entra ID admin needs to provide your new app access to Azure DevOps: + +1. Select **API permissions** in the left navigation panel. +2. Remove the **Microsoft Graph / User Read** permission. +3. Click **Add a permission**. +4. Select **Azure DevOps**. +5. Select the **user_impersonation** permission. This is the only permission available for Azure DevOps. + +## Add a role to service principal + +This section will require an Azure admin to complete. + +To add a role to your service principal: +1. In your Azure account, navigate to **Subscriptions** and select an existing subscription. +2. From the left-side menu, click **Access Control (IAM)** -> **Add** -> **Add role assignment**. +3. From the **Role** tab, select a role with appropriate permissions to assign the service principal. +4. Continue to the **Members** tab and assign access to **User, group, or service principal**. +5. Click ***Select members** and find your app in the search bar. +6. Once your app has been selected, click **Review and Assign**. + +## Connect Azure DevOps to your new app + +An Azure admin will need one of the following permissions in both the Microsoft Entra ID and Azure DevOps environments: +- Azure Service Administrator +- Azure Co-administrator + +:::note + +You can only add a managed identity or service principal for the tenant to which your organization is connected. You need to add a directory to your organization so that it can access all the service principals and other identities. +Navigate to **Organization settings** --> **Microsoft Entra** --> **Connect Directory** to connect. + +::: + +1. From your Azure DevOps account organization screen, click **Organization settings** in the bottom left. +2. Under **General** settings, click **Users**. +3. Click **Add users**, and in the resulting panel, enter the service principal's name in the first field. Then, click the name when it appears below the field. +4. In the **Add to projects** field, click the boxes for any projects you want to include (or select all). +5. Set the **Azure DevOps Groups** to **Project Administrator**. + + + +## Connect your Microsoft Entra ID app to dbt Cloud + +A dbt Cloud account admin must take the following actions. + +Once you connect your Microsoft Entra ID app and Azure DevOps, you must provide dbt Cloud information about the app. If this is a first-time setup, you will create a new configuration. If you are [migrating from a service user](#migrate-to-service-principal), you can edit an existing configuration and change it to **Service principal**. + + +To create the configuration: +1. Navigate to your account settings in dbt Cloud. +2. Select **Integrations**. +3. Scroll to the Azure DevOps section and click the **Edit icon**. +4. Select the **Service principal** option (service user configurations will auto-complete the fields, if applicable). +5. Complete/edit the form (if you are migrating, the existing configurations carry over): + - **Azure DevOps Organization:** Must match the name of your Azure DevOps organization exactly. Do not include the `dev.azure.com/` prefix in this field. ✅ Use `my-DevOps-org` ❌ Avoid `dev.azure.com/my-DevOps-org` + - **Application (client) ID:** Found in the Microsoft Entra ID app. + Client Secrets: Copy the **Value** field in the Microsoft Entra ID app client secrets and paste it into the **Client Secret** field in dbt Cloud. Entra ID admins are responsible for the expiration of the app secret, and dbt Admins should note the expiration date for rotation. + - **Directory(tenant) ID:** Found in the Microsoft Entra ID app. + + +Your Microsoft Entra ID app should now be added to your dbt Cloud Account. People on your team who want to develop in the dbt Cloud IDE or dbt Cloud CLI can now personally [authorize Azure DevOps from their profiles](/docs/cloud/git/authenticate-azure). + + +## Migrate to service principal + +Migrate from a service user to a service principal using the existing app. It will only take a few steps, and you won't experience any service disruptions. + +- Verify whether or not your app has a service principal + - If not, create the app service principal +- Update the application's configuration +- Update the configuration in dbt Cloud + +### Verify the service principal + +You will need an Entra ID admin to complete these steps. + +To confirm whether your existing app already has a service principal: + +1. In the Azure account, navigate to **Microsoft Entra ID** -> **Manage** -> **App registrations**. +2. Click on the application for the service user integration with dbt Cloud. +3. Verify whether a name populates the **Managed application in local directory** field. + - If a name exists, continue to the next step from the [add a role to your service principal](#add-a-role-to-service-principal) and follow the remaining instructions. + - If no name exists, go to the next section, [Create the service principal](#create-the-service-principal). +4. Follow the instructions to [add permissions](#add-permissions-to-your-service-principal) to your service principal. +5. Follow the instructions to [connect DevOps to your app](#connect-azure-devops-to-your-new-app). +6. In your dbt Cloud account: + 1. Navigate to **Account settings** and click **Integrations** + 2. Click the **edit icon** to the right of the **Azure DevOps** settings. + 3. Change **Service user** to **Service principal** and click **Save**. You do not need to edit any existing fields. + +### Create the service principal + +If there is no name populating that field, a Service Principal does not exist. To configure a Service Principal, please review the instructions here. + +If your dbt Cloud app does not have a service principal, take the following actions in your Azure account: + +1. Navigate to **Microsoft Entra ID**. +2. Under **Manage** on the left-side menu, click **App registrations**. +3. Click the app for the dbt Cloud and Azure DevOps integration. +4. Locate the **Managed application in local directory** field and click **Create Service Principal**. + + + +5. Follow the instructions to [add permissions](#add-permissions-to-your-service-principal) to your service principal. +6. Follow the instructions to [connect DevOps to your app](#connect-azure-devops-to-your-new-app). +7. In your dbt Cloud account: + 1. Navigate to **Account settings** and click **Integrations** + 2. Click the **edit icon** to the right of the **Azure DevOps** settings. + 3. Change **Service user** to **Service principal** and click **Save**. You do not need to edit any existing fields. diff --git a/website/docs/docs/cloud/git/setup-azure.md b/website/docs/docs/cloud/git/setup-azure-service-user.md similarity index 66% rename from website/docs/docs/cloud/git/setup-azure.md rename to website/docs/docs/cloud/git/setup-azure-service-user.md index f54bb752937..4a35042cc67 100644 --- a/website/docs/docs/cloud/git/setup-azure.md +++ b/website/docs/docs/cloud/git/setup-azure-service-user.md @@ -1,24 +1,31 @@ --- -title: "Set up Azure DevOps" -id: "setup-azure" +title: "Set up Azure DevOps with Service User" +id: "setup-service-user" description: "You can set up your Azure DevOps by creating a Microsoft Entra ID app and adding it to dbt Cloud." -sidebar_label: "Set up Azure DevOps" +sidebar_label: "Set up service user" --- - +## Service user overview + +:::important + +Service users are no longer a recommended method for authentication and dbt Cloud is rolling out a new [Entra ID service principal](https://learn.microsoft.com/en-us/entra/identity-platform/app-objects-and-service-principals) option. Once the option is available in your account settings, you should plan to [migrate from service user to service principal](/docs/cloud/git/setup-service-principal#migrate-to-service-principal). Service prinicpals are the [Microsoft recommended service account type](https://learn.microsoft.com/en-us/entra/architecture/secure-service-accounts#types-of-microsoft-entra-service-accounts) for app authentication. + +::: -## Overview To use our native integration with Azure DevOps in dbt Cloud, an account admin needs to set up an Microsoft Entra ID app. We recommend setting up a separate [Entra ID application than used for SSO](/docs/cloud/manage-access/set-up-sso-microsoft-entra-id). 1. [Register an Entra ID app](#register-a-microsoft-entra-id-app). -2. [Connect Azure DevOps to your new app](#connect-azure-devops-to-your-new-app). -3. [Add your Entra ID app to dbt Cloud](#add-your-azure-ad-app-to-dbt-cloud). +2. [Add permissions to your new app](#add-permissions-to-your-new-app). +3. [Add another redirect URI](#add-another-redirect-uri). +4. [Connect Azure DevOps to your new app](#connect-azure-devops-to-your-new-app). +5. [Add your Entra ID app to dbt Cloud](#add-your-azure-ad-app-to-dbt-cloud). -Once the Microsoft Entra ID app is added to dbt Cloud, an account admin must also connect a [service principal](https://learn.microsoft.com/en-us/entra/identity-platform/app-objects-and-service-principals?tabs=browser), which will be used to power headless actions in dbt Cloud such as deployment runs and CI. +Once the Microsoft Entra ID app is added to dbt Cloud, an account admin must also [connect a service user](#connecting-a-service-user) via OAuth, which will be used to power headless actions in dbt Cloud such as deployment runs and CI. -Once the Microsoft Entra ID app is added to dbt Cloud and the service principal is connected, then dbt Cloud developers can personally authenticate in dbt Cloud from Azure DevOps. For more on this, see [Authenticate with Azure DevOps](/docs/cloud/git/authenticate-azure). +Once the Microsoft Entra ID app is added to dbt Cloud and the service user is connected, then dbt Cloud developers can personally authenticate in dbt Cloud from Azure DevOps. For more on this, see [Authenticate with Azure DevOps](/docs/cloud/git/authenticate-azure). The following personas are required to complete the steps on this page: - Microsoft Entra ID admin @@ -36,106 +43,90 @@ A Microsoft Entra ID admin needs to perform the following steps: 4. Provide a name for your app. We recommend using, "dbt Labs Azure DevOps app". 5. Select **Accounts in any organizational directory (Any Entra ID directory - Multitenant)** as the Supported Account Types. Many customers ask why they need to select Multitenant instead of Single tenant, and they frequently get this step wrong. Microsoft considers Azure DevOps (formerly called Visual Studio) and Microsoft Entra ID as separate tenants, and in order for this Entra ID application to work properly, you must select Multitenant. -6. Click **Register**. +6. Add a redirect URI by selecting **Web** and, in the field, entering `https://YOUR_ACCESS_URL/complete/azure_active_directory`, replacing `YOUR_ACCESS_URL` with the [appropriate Access URL](/docs/cloud/about-cloud/access-regions-ip-addresses) for your region and plan. +7. Click **Register**. + + Here's what your app should look like before registering it: -## Create a client secret - -A Microsoft Entra ID admin needs to complete the following steps: - -1. Navigate to **Microsoft Entra ID**, click **App registrations**, and click on your app. -2. Select **Certificates and Secrets** from the left navigation panel. -3. Select **Client secrets** and click **New client secret** -4. Give the secret a description and select the expiration time. Click **Add**. -5. Copy the **Value** field and securely share it with the dbt Cloud account admin who will complete the setup. - -## Connect Azure DevOps to your new app - -An Azure admin will need one of the following permissions in both the Microsoft Entra ID and Azure DevOps environments: -- Azure Service Administrator -- Azure Co-administrator - -:::note - -You can only add a managed identity or service principal for the tenant to which your organization is connected. You need to add a directory to your organization so that it can access all the service principals and other identities. -Navigate to **Organization settings** --> **Microsoft Entra** --> **Connect Directory** to connect. - -::: - -1. From your Azure DevOps account organization screen, click **Organization settings** in the bottom left. -2. Under **General** settings, click **Users**. -3. Click **Add users**, and in the resulting panel, enter the service principal's name in the first field. Then, click the name when it appears below the field. -4. In the **Add to projects** field, click the boxes for any projects you want to include (or select all). -5. Set the **Azure DevOps Groups** to **Project Administrator**. - - -## Configure the Entra ID connection +## Add permissions to your new app -There are two connection methods currently available for dbt Cloud and Azure DevOps: -- **Service principal** (recommended): Create an application connection via client ID and secret for unattended authentication. -- **Service user** (legacy): Create a user that will authenticate the connection with username and password. This configuration should be avoided. +An Entra ID admin needs to provide your new app access to Azure DevOps: - +1. Select **API permissions** in the left navigation panel. +2. Remove the **Microsoft Graph / User Read** permission. +3. Click **Add a permission**. +4. Select **Azure DevOps**. +5. Select the **user_impersonation** permission. This is the only permission available for Azure DevOps. - + -## Create a service principal +## Add another redirect URI -The application's service principal represents the Entra ID application object. Whereas a service user represents a real user in Azure with an Entra ID (and an applicable license), the service principal is a secure identity used by an application to access Azure resources unattended. The service principal authenticates with a client ID and secret rather than a username and password (or any other form of user auth). Service principals are the [Microsoft recommended method](https://learn.microsoft.com/en-us/entra/architecture/secure-service-accounts#types-of-microsoft-entra-service-accounts) for authenticating apps. +A Microsoft Entra ID admin needs to add another redirect URI to your Entra ID application. This redirect URI will be used to authenticate the service user for headless actions in deployment environments. -### Add a role to the Service Principal +1. Navigate to your Microsoft Entra ID application. -In your Azure account: +2. Select the link next to **Redirect URIs** +3. Click **Add URI** and add the URI, replacing `YOUR_ACCESS_URL` with the [appropriate Access URL](/docs/cloud/about-cloud/access-regions-ip-addresses) for your region and plan: +`https://YOUR_ACCESS_URL/complete/azure_active_directory_service_user` +4. Click **Save**. -1. Navigate to **Subscriptions** and click on the appropriate subscription name for the application environment. -2. From the left-side menu of the subscription window, click **Access control (IAM)**. -3. From the top menu, click **Add** and select **Add role assignment** from the dropdown. + - - -4. In the **Role** tab, select a role with appropriate permissions to assign the service principal. -5. Click the **Members** tab. You must set **Assign access to** to **User, group, or service principal**. -6. Click **Select members** and search for your app name in the window. Once it appears, click your app, which will appear in the **Selected members** section. Click **Select** at the bottom to save your selection. +## Create a client secret - +A Microsoft Entra ID admin needs to complete the following steps: -5. Confirm the correct details and click **Review + assign**. +1. Navigate to your Microsoft Entra ID application. +2. Select **Certificates and Secrets** from the left navigation panel. +3. Select **Client secrets** and click **New client secret** +4. Give the secret a description and select the expiration time. Click **Add**. +5. Copy the **Value** field and securely share it with the dbt Cloud account admin who will complete the setup. - +## Connect Azure DevOps to your new app -Navigate back to the **App registrations** screen and click the app. On the left menu, click **Roles and administrators**, and you will see the app role assignment. +An Azure admin will need one of the following permissions in both the Microsoft Entra ID and Azure DevOps environments: +- Azure Service Administrator +- Azure Co-administrator -### Migrate to service principal +If your Azure DevOps account is connected to Entra ID, then you can proceed to [Connecting a service user](#connecting-a-service-user). However, if you're just getting set up, connect Azure DevOps to the Microsoft Entra ID app you just created: -If your dbt Cloud app does not have a service principal, take the following actions in your Azure account: +1. From your Azure DevOps account, select **Organization settings** in the bottom left. +2. Navigate to Microsoft Entra ID. +3. Click **Connect directory**. +4. Select the directory you want to connect. +5. Click **Connect**. -1. Navigate to **Microsoft Entra ID**. -2. Under **Manage** on the left-side menu, click **App registrations**. -3. Click the app for the dbt Cloud and Azure DevOps integration. -4. Locate the **Managed application in local directory** field and click **Create Service Principal**. + - +## Add your Microsoft Entra ID app to dbt Cloud -5. Follow the instructions in [Add role to service principal](#add-a-role-to-the-service-principal) if the app doesn't already have them assigned. -6. In dbt Cloud, navigate to **Account settings** --> **Integrations** and edit the **Azure DevOps** integration. -7. Click the **Service principal** option, fill out the fields, and click **Save**. The services will continue to function uninterrupted. +A dbt Cloud account admin needs to perform the following steps. +Once you connect your Microsoft Entra ID app and Azure DevOps, you need to provide dbt Cloud information about the app: - - +1. Navigate to your account settings in dbt Cloud. +2. Select **Integrations**. +3. Scroll to the Azure DevOps section. +4. Complete the form: + - **Azure DevOps Organization:** Must match the name of your Azure DevOps organization exactly. Do not include the `dev.azure.com/` prefix in this field. ✅ Use `my-devops-org` ❌ Avoid `dev.azure.com/my-devops-org` + - **Application (client) ID:** Found in the Microsoft Entra ID app. + - **Client Secrets:** Copy the **Value** field in the Microsoft Entra ID app client secrets and paste it in the **Client Secret** field in dbt Cloud. Entra ID admins are responsible for the Entra ID app secret expiration and dbt Admins should note the expiration date for rotation. + - **Directory(tenant) ID:** Found in the Microsoft Entra ID app. + -:::important +Your Microsoft Entra ID app should now be added to your dbt Cloud Account. People on your team who want to develop in the dbt Cloud IDE or dbt Cloud CLI can now personally [authorize Azure DevOps from their profiles](/docs/cloud/git/authenticate-azure). -Service users are no longer a recommended method for authentication and accounts using them should [migrate](#migrate-to-service-principal) to Entra ID [service principals](https://learn.microsoft.com/en-us/entra/identity-platform/app-objects-and-service-principals) in the future. Service prinicpals are the [Microsoft recommended service account type](https://learn.microsoft.com/en-us/entra/architecture/secure-service-accounts#types-of-microsoft-entra-service-accounts) for app authentication. -::: +## Connect a service user -An Azure DevOps admin can create a "service user (not recommended)" in Azure DevOps whose permissions will be used to power headless actions in dbt Cloud such as dbt Cloud project repo selection, deployment runs, and CI. A service user is a pseudo user set up in the same way an admin would set up a real user, but it's given permissions specifically scoped for service to service interactions. You should avoid linking authentication to a real Azure DevOps user because if this person leaves your organization, dbt Cloud will lose privileges to the dbt Azure DevOps repositories, causing production runs to fail. +A service user is a pseudo user set up in the same way an admin would set up a real user, but it's given permissions specifically scoped for service to service interactions. You should avoid linking authentication to a real Azure DevOps user because if this person leaves your organization, dbt Cloud will lose privileges to the dbt Azure DevOps repositories, causing production runs to fail. :::info Service user authentication expiration dbt Cloud will refresh the authentication for the service user on each run triggered by the scheduler, API, or CI. If your account does not have any active runs for over 90 days, an admin will need to manually refresh the authentication of the service user by disconnecting and reconnecting the service user's profile via the OAuth flow described above in order to resume headless interactions like project set up, deployment runs, and CI. @@ -169,7 +160,7 @@ The service user's permissions will also power which repositories a team can sel While it's common to enforce multi-factor authentication (MFA) for normal user accounts, service user authentication must not need an extra factor. If you enable a second factor for the service user, this can interrupt production runs and cause a failure to clone the repository. In order for the OAuth access token to work, the best practice is to remove any more burden of proof of identity for service users. -As a result, MFA must be explicitly disabled in the Office 365 or Microsoft Entra ID administration panel for the service user. Just having it "un-connected" will not be sufficient, as dbt Cloud will be prompted to set up MFA instead of allowing the credentials to be used as intended. +As a result, MFA must be explicity disabled in the Office 365 or Microsoft Entra ID administration panel for the service user. Just having it "un-connected" will not be sufficient, as dbt Cloud will be prompted to set up MFA instead of allowing the credentials to be used as intended. **To disable MFA for a single user using the Office 365 Administration console:** @@ -387,16 +378,6 @@ A dbt Cloud account admin with access to the service user's Azure DevOps account Once connected, dbt Cloud displays the email address of the service user so you know which user's permissions are enabling headless actions in deployment environments. To change which account is connected, disconnect the profile in dbt Cloud, sign into the alternative Azure DevOps service account, and re-link the account in dbt Cloud. -### Using Azure AD for SSO with dbt Cloud and Microsoft tools - -If you're using Azure AD for SSO with dbt Cloud and Microsoft tools, the SSO flow may sometimes direct your account admin to their personal user account instead of the service user. If this happens, follow these steps to resolve it: - -1. Sign in to the service user's Azure DevOps account (ensure they are also connected to dbt Cloud through SSO). -2. When connected to dbt Cloud, sign out of Azure AD through the [Azure portal](https://portal.azure.com/). -3. Disconnect the service user in dbt Cloud, and follow the steps to set it up again. -4. You should then be prompted to enter service user credentials. - - :::info Personal Access Tokens (PATs) dbt Cloud leverages the service user to generate temporary access tokens called [PATs](https://learn.microsoft.com/en-us/azure/devops/organizations/accounts/use-personal-access-tokens-to-authenticate?toc=%2Fazure%2Fdevops%2Fmarketplace-extensibility%2Ftoc.json&view=azure-devops&tabs=Windows). @@ -407,25 +388,3 @@ These tokens are limited to the following [scopes](https://learn.microsoft.com/e - `vso.project`: Grants the ability to read projects and teams. - `vso.build_execute`: Grants the ability to access build artifacts, including build results, definitions, and requests, and the ability to queue a build, update build properties, and the ability to receive notifications about build events with service hooks. ::: - - - - -## Add your Microsoft Entra ID app to dbt Cloud - -A dbt Cloud account admin must take the following actions. - -Once you connect your Microsoft Entra ID app and Azure DevOps, you need to provide dbt Cloud information about the app: - -1. Navigate to your account settings in dbt Cloud. -2. Select **Integrations**. -3. Scroll to the Azure DevOps section. -4. Complete the form: - - **Azure DevOps Organization:** Must match the name of your Azure DevOps organization exactly. Do not include the `dev.azure.com/` prefix in this field. ✅ Use `my-devops-org` ❌ Avoid `dev.azure.com/my-devops-org` - - **Application (client) ID:** Found in the Microsoft Entra ID app. - - **Client Secrets:** Copy the **Value** field in the Microsoft Entra ID app client secrets and paste it in the **Client Secret** field in dbt Cloud. Entra ID admins are responsible for the Entra ID app secret expiration and dbt Admins should note the expiration date for rotation. - - **Directory(tenant) ID:** Found in the Microsoft Entra ID app. - - - **Redirect URI (Service users only)**: Copy this field to **Redirect URIs** field in your Entra ID app. - -Your Microsoft Entra ID app should now be added to your dbt Cloud Account. People on your team who want to develop in the dbt Cloud IDE or dbt Cloud CLI can now personally [authorize Azure DevOps from their profiles](/docs/cloud/git/authenticate-azure). diff --git a/website/sidebars.js b/website/sidebars.js index a69bec01e49..c6ed6126662 100644 --- a/website/sidebars.js +++ b/website/sidebars.js @@ -156,7 +156,8 @@ const sidebarSettings = { }, items: [ "docs/cloud/git/connect-azure-devops", - "docs/cloud/git/setup-azure", + "docs/cloud/git/setup-service-principal", + "docs/cloud/git/setup-service-user", "docs/cloud/git/authenticate-azure", ], }, diff --git a/website/snippets/_git-providers-supporting-ci.md b/website/snippets/_git-providers-supporting-ci.md index 34bd87db2fc..5e3956d013d 100644 --- a/website/snippets/_git-providers-supporting-ci.md +++ b/website/snippets/_git-providers-supporting-ci.md @@ -8,7 +8,7 @@ The following table outlines the available integration options and their corresp | **Git provider** | **Native dbt Cloud integration** | **Automated CI job**|**Git clone**| **Information**| | -----------------| ---------------------------------| -------------------------------------------|-----------------------|---------| -|[Azure DevOps](/docs/cloud/git/setup-azure)
| ✅| ✅ | ✅ | Organizations on the Team and Developer plans can connect to Azure DeveOps using a deploy key. Note, you won’t be able to configure automated CI jobs but you can still develop.| +|[Azure DevOps](/docs/cloud/git/connect-azure-devops)
| ✅| ✅ | ✅ | Organizations on the Team and Developer plans can connect to Azure DeveOps using a deploy key. Note, you won’t be able to configure automated CI jobs but you can still develop.| |[GitHub](/docs/cloud/git/connect-github)
| ✅ | ✅ | ✅ | |[GitLab](/docs/cloud/git/connect-gitlab)
| ✅ | ✅ | ✅ | |All other git providers using [Git clone](/docs/cloud/git/import-a-project-by-git-url) ([BitBucket](/docs/cloud/git/import-a-project-by-git-url#bitbucket), [AWS CodeCommit](/docs/cloud/git/import-a-project-by-git-url#aws-codecommit), and others)| ❌ | ❌ | ✅ | Refer to the [Customizing CI/CD with custom pipelines](/guides/custom-cicd-pipelines?step=1) guide to set up continuous integration and continuous deployment (CI/CD).| diff --git a/website/vercel.json b/website/vercel.json index 927b7ec6b2f..849fe5174aa 100644 --- a/website/vercel.json +++ b/website/vercel.json @@ -2,6 +2,11 @@ "cleanUrls": true, "trailingSlash": false, "redirects": [ + { + "source": "/docs/cloud/git/setup-azure", + "destination": "/docs/cloud/git/connect-azure-devops", + "permanent": true + }, { "source": "/docs/cloud/about-cloud/dark-mode", "destination": "/docs/cloud/about-cloud/change-your-dbt-cloud-theme", From ff4c7ed0a5eac43c5bb142ba7a51f2c5997c2759 Mon Sep 17 00:00:00 2001 From: Matt Shaver <60105315+matthewshaver@users.noreply.github.com> Date: Tue, 28 Jan 2025 13:54:45 -0500 Subject: [PATCH 11/29] Core v1.10 upgrade framework (#6842) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ## What are you changing in this pull request and why? Adds the upgrade guide for v1.10 Resolves #6827 ## Checklist - [ ] I have reviewed the [Content style guide](https://github.com/dbt-labs/docs.getdbt.com/blob/current/contributing/content-style-guide.md) so my content adheres to these guidelines. - [ ] The topic I'm writing about is for specific dbt version(s) and I have versioned it according to the [version a whole page](https://github.com/dbt-labs/docs.getdbt.com/blob/current/contributing/single-sourcing-content.md#adding-a-new-version) and/or [version a block of content](https://github.com/dbt-labs/docs.getdbt.com/blob/current/contributing/single-sourcing-content.md#versioning-blocks-of-content) guidelines. - [ ] I have added checklist item(s) to this list for anything anything that needs to happen before this PR is merged, such as "needs technical review" or "change base branch." - [ ] The content in this PR requires a dbt release note, so I added one to the [release notes page](https://docs.getdbt.com/docs/dbt-versions/dbt-cloud-release-notes). --- 🚀 Deployment available! Here are the direct links to the updated files: - https://docs-getdbt-com-git-migration-110-dbt-labs.vercel.app/docs/dbt-versions/core-upgrade/05-upgrading-to-v1.10 --- .../core-upgrade/05-upgrading-to-v1.10.md | 32 +++++++++++++++++++ 1 file changed, 32 insertions(+) create mode 100644 website/docs/docs/dbt-versions/core-upgrade/05-upgrading-to-v1.10.md diff --git a/website/docs/docs/dbt-versions/core-upgrade/05-upgrading-to-v1.10.md b/website/docs/docs/dbt-versions/core-upgrade/05-upgrading-to-v1.10.md new file mode 100644 index 00000000000..98a8fafbb9b --- /dev/null +++ b/website/docs/docs/dbt-versions/core-upgrade/05-upgrading-to-v1.10.md @@ -0,0 +1,32 @@ +--- +title: "Upgrading to v1.10" +id: upgrading-to-v1.10 +description: New features and changes in dbt Core v1.10 +displayed_sidebar: "docs" +--- + +## Resources + +- dbt Core v1.10 changelog (coming soon) +- [dbt Core CLI Installation guide](/docs/core/installation-overview) +- [Cloud upgrade guide](/docs/dbt-versions/upgrade-dbt-version-in-cloud#release-tracks) + +## What to know before upgrading + +dbt Labs is committed to providing backward compatibility for all versions 1.x. Any behavior changes will be accompanied by a [behavior change flag](/reference/global-configs/behavior-changes#behavior-change-flags) to provide a migration window for existing projects. If you encounter an error upon upgrading, please let us know by [opening an issue](https://github.com/dbt-labs/dbt-core/issues/new). + +Starting in 2024, dbt Cloud provides the functionality from new versions of dbt Core via [release tracks](/docs/dbt-versions/cloud-release-tracks) with automatic upgrades. If you have selected the "Latest" release track in dbt Cloud, you already have access to all the features, fixes, and other functionality that is included in dbt Core v1.10! If you have selected the "Compatible" release track, you will have access in the next monthly "Compatible" release after the dbt Core v1.10 final release. + +For users of dbt Core, since v1.8, we recommend explicitly installing both `dbt-core` and `dbt-`. This may become required for a future version of dbt. For example: + +```sql +python3 -m pip install dbt-core dbt-snowflake +``` + +## New and changed features and functionality + +**Coming soon** + +## Quick hits + +**Coming soon** \ No newline at end of file From 787fe7dbfe3ae7718d49c8c98a5074308b448685 Mon Sep 17 00:00:00 2001 From: Amy Chen <46451573+amychen1776@users.noreply.github.com> Date: Tue, 28 Jan 2025 16:40:01 -0500 Subject: [PATCH 12/29] Update snowflake-configs.md (#6844) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ## What are you changing in this pull request and why? ## Checklist - [ ] I have reviewed the [Content style guide](https://github.com/dbt-labs/docs.getdbt.com/blob/current/contributing/content-style-guide.md) so my content adheres to these guidelines. - [ ] The topic I'm writing about is for specific dbt version(s) and I have versioned it according to the [version a whole page](https://github.com/dbt-labs/docs.getdbt.com/blob/current/contributing/single-sourcing-content.md#adding-a-new-version) and/or [version a block of content](https://github.com/dbt-labs/docs.getdbt.com/blob/current/contributing/single-sourcing-content.md#versioning-blocks-of-content) guidelines. - [ ] I have added checklist item(s) to this list for anything anything that needs to happen before this PR is merged, such as "needs technical review" or "change base branch." - [ ] The content in this PR requires a dbt release note, so I added one to the [release notes page](https://docs.getdbt.com/docs/dbt-versions/dbt-cloud-release-notes). --- 🚀 Deployment available! Here are the direct links to the updated files: - https://docs-getdbt-com-git-amychen1776-patch-1-dbt-labs.vercel.app/reference/resource-configs/snowflake-configs --- website/docs/reference/resource-configs/snowflake-configs.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/website/docs/reference/resource-configs/snowflake-configs.md b/website/docs/reference/resource-configs/snowflake-configs.md index 30275450793..a71c21b40b1 100644 --- a/website/docs/reference/resource-configs/snowflake-configs.md +++ b/website/docs/reference/resource-configs/snowflake-configs.md @@ -17,7 +17,7 @@ The dbt-snowflake adapter supports the Iceberg table format. It is available for - [Table](/docs/build/materializations#table) - [Incremental](/docs/build/materializations#incremental) -- [Dynamic](#dynamic-tables) +- [Dynamic Table](#dynamic-tables) For now, to create Iceberg tables, you must implement a [behavior flag](/reference/global-configs/behavior-changes) due to performance impact related to using Iceberg tables. Snowflake does not support `is_iceberg` on the `Show Objects` query, which dbt depends on for metadata. From 1986b4ec1516ff331efcb5434e77495e82edf519 Mon Sep 17 00:00:00 2001 From: mirnawong1 Date: Wed, 29 Jan 2025 10:11:05 +0000 Subject: [PATCH 13/29] update faq and add naming pattern --- website/docs/docs/cloud/git/connect-gitlab.md | 15 ++------------- website/docs/faqs/Git/gitlab-token-refresh.md | 16 ++++++++++++++++ 2 files changed, 18 insertions(+), 13 deletions(-) create mode 100644 website/docs/faqs/Git/gitlab-token-refresh.md diff --git a/website/docs/docs/cloud/git/connect-gitlab.md b/website/docs/docs/cloud/git/connect-gitlab.md index 67fe83b537c..a5d80f03c74 100644 --- a/website/docs/docs/cloud/git/connect-gitlab.md +++ b/website/docs/docs/cloud/git/connect-gitlab.md @@ -14,8 +14,7 @@ Connecting your GitLab account to dbt Cloud provides convenience and another lay :::info When configuring the repository in dbt Cloud, GitLab automatically: - Registers a webhook, which triggers pipeline jobs in dbt Cloud. -- Creates a [project access token](https://docs.gitlab.com/ee/user/project/settings/project_access_tokens.html) in your GitLab repository, which sends the job run status back to Gitlab using the dbt Cloud API for CI jobs. dbt Cloud automatically refreshes this project access token for you, which means you never have to manually rotate the token. Check out the [FAQs](#faqs) for more info. - +- Creates a [project access token](https://docs.gitlab.com/ee/user/project/settings/project_access_tokens.html) in your GitLab repository, which sends the job run status back to GitLab using the dbt Cloud API for CI jobs. dbt Cloud automatically refreshes this token for you, which means you never have to manually rotate it. Check out the [troubleshooting](#troubleshooting) section for more info. ::: @@ -130,14 +129,4 @@ Once you approve authorization, you will be redirected to dbt Cloud, and you sho - - -When you connect dbt Cloud to a GitLab repository, GitLab automatically creates a [project access token](https://docs.gitlab.com/ee/user/project/settings/project_access_tokens.html) in your GitLab repository in the background. This sends the job run status back to Gitlab using the dbt Cloud API for CI jobs. - -If you're recieving a "Refresh token" message, don't worry — dbt Cloud automatically refereshes this project access token for you, which means you never have to manually rotate the token. - -If you still experience any token refresh errors, please try disconnecting and reconnecting the repository in dbt Cloud to refresh the token. - -For any issues, pleasereach out to the Support team at support@getdbt.com and we'll be happy to help! - - + diff --git a/website/docs/faqs/Git/gitlab-token-refresh.md b/website/docs/faqs/Git/gitlab-token-refresh.md new file mode 100644 index 00000000000..60ac0b0bc35 --- /dev/null +++ b/website/docs/faqs/Git/gitlab-token-refresh.md @@ -0,0 +1,16 @@ +--- +title: GitLab token refresh message +description: "Learn how to resolve GitLab token refresh messages during your CI jobs" +sidebar_label: 'GitLab token refresh message' +id: gitlab-token-refresh +--- + +When you connect dbt Cloud to a GitLab repository, GitLab automatically creates a [project access token](https://docs.gitlab.com/ee/user/project/settings/project_access_tokens.html) in your GitLab repository in the background. This sends the job run status back to Gitlab using the dbt Cloud API for CI jobs. + +By default, the project access token follows a naming pattern: `dbt Cloud token for GitLab project: `. If you have multiple tokens in your repository, look for one that follows this pattern to identify the correct token used by dbt Cloud. + +If you're receiving a "Refresh token" message, don't worry — dbt Cloud automatically refreshes this project access token for you, which means you never have to manually rotate it. + +If you still experience any token refresh errors, please try disconnecting and reconnecting the repository in dbt Cloud to refresh the token. + +For any issues, please reach out to the Support team at support@getdbt.com and we'll be happy to help! From 51e1ee57f28285b4d28f52d4c8b52c8171ea2189 Mon Sep 17 00:00:00 2001 From: mirnawong1 Date: Wed, 29 Jan 2025 10:25:18 +0000 Subject: [PATCH 14/29] centralize links --- website/src/components/lifeCycle/index.js | 12 +++--------- website/src/components/lifeCycle/lifecycle-urls.js | 11 +++++++++++ 2 files changed, 14 insertions(+), 9 deletions(-) create mode 100644 website/src/components/lifeCycle/lifecycle-urls.js diff --git a/website/src/components/lifeCycle/index.js b/website/src/components/lifeCycle/index.js index a157c1ed6ec..c27906f6c48 100644 --- a/website/src/components/lifeCycle/index.js +++ b/website/src/components/lifeCycle/index.js @@ -2,6 +2,7 @@ import React from 'react'; import styles from './styles.module.css'; +import { STATUS_URLS } from './lifecycle-urls.js'; const statusColors = { enterprise: '#EBEDF0', @@ -22,15 +23,8 @@ const fontColors = { ga: '#ffff', }; -// URL mapping for predefined lifecycle statuses -const statusUrls = { - enterprise: 'https://www.getdbt.com/pricing', - team: 'https://www.getdbt.com/pricing', - developer: 'https://www.getdbt.com/signup', - beta: 'https://docs.getdbt.com/docs/dbt-versions/product-lifecycles', - preview: 'https://docs.getdbt.com/docs/dbt-versions/product-lifecycles', - ga: 'https://docs.getdbt.com/docs/dbt-versions/product-lifecycles', -}; +// URL mapping for predefined lifecycle statuses. urls defined in ../lifeCycle/lifecycle-urls.js file so we can update them in one place +const statusUrls = STATUS_URLS; export default function Lifecycle(props) { const statuses = props.status?.split(','); diff --git a/website/src/components/lifeCycle/lifecycle-urls.js b/website/src/components/lifeCycle/lifecycle-urls.js new file mode 100644 index 00000000000..ddc731eef8f --- /dev/null +++ b/website/src/components/lifeCycle/lifecycle-urls.js @@ -0,0 +1,11 @@ +const PRODUCT_LIFECYCLE_URL = 'https://docs.getdbt.com/docs/dbt-versions/product-lifecycles'; +const PLAN_URL = 'https://www.getdbt.com/pricing'; + +export const STATUS_URLS = { + enterprise: PLAN_URL, + team: PLAN_URL, + developer: 'https://www.getdbt.com/signup', + beta: PRODUCT_LIFECYCLE_URL, + preview: PRODUCT_LIFECYCLE_URL, + ga: PRODUCT_LIFECYCLE_URL, +}; From f60e4f156846d0c4ebee6d63ded916c0202e8897 Mon Sep 17 00:00:00 2001 From: Mirna Wong <89008547+mirnawong1@users.noreply.github.com> Date: Wed, 29 Jan 2025 10:48:07 +0000 Subject: [PATCH 15/29] add dbt build adn dbt docs generate to view all metadata this pr incorporates Roxi's feedback to make it extra clear that dbt build + dbt docs generate will generate all metadata. added a bullet and extra row to the table --- website/docs/docs/collaborate/explore-projects.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/website/docs/docs/collaborate/explore-projects.md b/website/docs/docs/collaborate/explore-projects.md index e21bd507e51..e0477ecde56 100644 --- a/website/docs/docs/collaborate/explore-projects.md +++ b/website/docs/docs/collaborate/explore-projects.md @@ -39,13 +39,15 @@ Navigate the dbt Explorer overview page to access your project's resources and m dbt Explorer uses the metadata provided by the [Discovery API](/docs/dbt-cloud-apis/discovery-api) to display the details about [the state of your project](/docs/dbt-cloud-apis/project-state). The metadata that's available depends on the [deployment environment](/docs/deploy/deploy-environments) you've designated as _production_ or _staging_ in your dbt Cloud project. +- To ensure all metadata is available in dbt Explorer, run `dbt build` and `dbt docs generate` as part of your job in your production or staging environment. Running those two commands ensure all relevant metadata (like lineage, test results, documentation, and more) is available in dbt Explorer. - dbt Explorer automatically retrieves the metadata updates after each job run in the production or staging deployment environment so it always has the latest results for your project. This includes deploy and merge jobs. -- Note that CI jobs do not update dbt Explorer. This is because they don't reflect the production state and don't provide the necessary metadata updates. + - Note that CI jobs don't update dbt Explorer. This is because they don't reflect the production state and don't provide the necessary metadata updates. - To view a resource and its metadata, you must define the resource in your project and run a job in the production or staging environment. - The resulting metadata depends on the [commands](/docs/deploy/job-commands) executed by the jobs. | To view in Explorer | You must successfully run | |---------------------|---------------------------| +| All metadata | [dbt build](/reference/commands/build) and [dbt docs generate](/reference/commands/cmd-docs) as part of a job in the environment | Model lineage, details, or results | [dbt run](/reference/commands/run) or [dbt build](/reference/commands/build) on a given model within a job in the environment | | Columns and statistics for models, sources, and snapshots| [dbt docs generate](/reference/commands/cmd-docs) within [a job](/docs/collaborate/build-and-view-your-docs) in the environment | | Test results | [dbt test](/reference/commands/test) or [dbt build](/reference/commands/build) within a job in the environment | From 18bfab1bed590eca585bc12409c6b1ba665704d8 Mon Sep 17 00:00:00 2001 From: Mirna Wong <89008547+mirnawong1@users.noreply.github.com> Date: Wed, 29 Jan 2025 10:48:53 +0000 Subject: [PATCH 16/29] Update website/docs/docs/collaborate/explore-projects.md --- website/docs/docs/collaborate/explore-projects.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/website/docs/docs/collaborate/explore-projects.md b/website/docs/docs/collaborate/explore-projects.md index e0477ecde56..5e96f6afc23 100644 --- a/website/docs/docs/collaborate/explore-projects.md +++ b/website/docs/docs/collaborate/explore-projects.md @@ -47,7 +47,7 @@ dbt Explorer uses the metadata provided by the [Discovery API](/docs/dbt-cloud-a | To view in Explorer | You must successfully run | |---------------------|---------------------------| -| All metadata | [dbt build](/reference/commands/build) and [dbt docs generate](/reference/commands/cmd-docs) as part of a job in the environment +| All metadata | [dbt build](/reference/commands/build) and [dbt docs generate](/reference/commands/cmd-docs) together as part of a job in the environment | Model lineage, details, or results | [dbt run](/reference/commands/run) or [dbt build](/reference/commands/build) on a given model within a job in the environment | | Columns and statistics for models, sources, and snapshots| [dbt docs generate](/reference/commands/cmd-docs) within [a job](/docs/collaborate/build-and-view-your-docs) in the environment | | Test results | [dbt test](/reference/commands/test) or [dbt build](/reference/commands/build) within a job in the environment | From 758580a7db31246bb664e0a6c27633b6d6900ae4 Mon Sep 17 00:00:00 2001 From: Mirna Wong <89008547+mirnawong1@users.noreply.github.com> Date: Wed, 29 Jan 2025 10:50:04 +0000 Subject: [PATCH 17/29] Update website/docs/docs/collaborate/explore-projects.md --- website/docs/docs/collaborate/explore-projects.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/website/docs/docs/collaborate/explore-projects.md b/website/docs/docs/collaborate/explore-projects.md index 5e96f6afc23..5ad5962be83 100644 --- a/website/docs/docs/collaborate/explore-projects.md +++ b/website/docs/docs/collaborate/explore-projects.md @@ -47,7 +47,7 @@ dbt Explorer uses the metadata provided by the [Discovery API](/docs/dbt-cloud-a | To view in Explorer | You must successfully run | |---------------------|---------------------------| -| All metadata | [dbt build](/reference/commands/build) and [dbt docs generate](/reference/commands/cmd-docs) together as part of a job in the environment +| All metadata | [dbt build](/reference/commands/build) and [dbt docs generate](/reference/commands/cmd-docs) together as part of the same job in the environment | Model lineage, details, or results | [dbt run](/reference/commands/run) or [dbt build](/reference/commands/build) on a given model within a job in the environment | | Columns and statistics for models, sources, and snapshots| [dbt docs generate](/reference/commands/cmd-docs) within [a job](/docs/collaborate/build-and-view-your-docs) in the environment | | Test results | [dbt test](/reference/commands/test) or [dbt build](/reference/commands/build) within a job in the environment | From f762240060edec67d22853e70b3802e75a19cf2a Mon Sep 17 00:00:00 2001 From: Mirna Wong <89008547+mirnawong1@users.noreply.github.com> Date: Wed, 29 Jan 2025 11:06:40 +0000 Subject: [PATCH 18/29] Update website/docs/docs/cloud/git/connect-gitlab.md Co-authored-by: nataliefiann <120089939+nataliefiann@users.noreply.github.com> --- website/docs/docs/cloud/git/connect-gitlab.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/website/docs/docs/cloud/git/connect-gitlab.md b/website/docs/docs/cloud/git/connect-gitlab.md index a5d80f03c74..006895bf334 100644 --- a/website/docs/docs/cloud/git/connect-gitlab.md +++ b/website/docs/docs/cloud/git/connect-gitlab.md @@ -14,7 +14,7 @@ Connecting your GitLab account to dbt Cloud provides convenience and another lay :::info When configuring the repository in dbt Cloud, GitLab automatically: - Registers a webhook, which triggers pipeline jobs in dbt Cloud. -- Creates a [project access token](https://docs.gitlab.com/ee/user/project/settings/project_access_tokens.html) in your GitLab repository, which sends the job run status back to GitLab using the dbt Cloud API for CI jobs. dbt Cloud automatically refreshes this token for you, which means you never have to manually rotate it. Check out the [troubleshooting](#troubleshooting) section for more info. +- Creates a [project access token](https://docs.gitlab.com/ee/user/project/settings/project_access_tokens.html) in your GitLab repository, which sends the job run status back to GitLab using the dbt Cloud API for CI jobs. dbt Cloud automatically refreshes this token for you, which means you never have to manually rotate it. Check out the [troubleshooting](#troubleshooting) section for more information. ::: From 8960bd4d193a560dc5113f8e3d2d8a4acca4dcae Mon Sep 17 00:00:00 2001 From: Mirna Wong <89008547+mirnawong1@users.noreply.github.com> Date: Wed, 29 Jan 2025 11:33:59 +0000 Subject: [PATCH 19/29] Update column-level-lineage.md add enterprise lifecycle pill so it's easier to identify --- website/docs/docs/collaborate/column-level-lineage.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/website/docs/docs/collaborate/column-level-lineage.md b/website/docs/docs/collaborate/column-level-lineage.md index 8c7116f2a18..3c149e7bdcf 100644 --- a/website/docs/docs/collaborate/column-level-lineage.md +++ b/website/docs/docs/collaborate/column-level-lineage.md @@ -3,6 +3,8 @@ title: "Column-level lineage" description: "Use dbt Explorer's column-level lineage to gain insights about your data at a granular level." --- +# Column-level lineage + dbt Explorer now offers column-level lineage (CLL) for the resources in your dbt project. Analytics engineers can quickly and easily gain insight into the provenance of their data products at a more granular level. For each column in a resource (model, source, or snapshot) in a dbt project, Explorer provides end-to-end lineage for the data in that column given how it's used. CLL is available to dbt Cloud Enterprise accounts that can use Explorer. From 3efc2bf6484ce9727a08c0d395eddd11a9e1de73 Mon Sep 17 00:00:00 2001 From: Mirna Wong <89008547+mirnawong1@users.noreply.github.com> Date: Wed, 29 Jan 2025 15:13:36 +0000 Subject: [PATCH 20/29] Update introduction.md --- website/docs/docs/introduction.md | 17 ----------------- 1 file changed, 17 deletions(-) diff --git a/website/docs/docs/introduction.md b/website/docs/docs/introduction.md index e160d83fdbc..2254738a8e5 100644 --- a/website/docs/docs/introduction.md +++ b/website/docs/docs/introduction.md @@ -5,19 +5,9 @@ pagination_next: null pagination_prev: null --- -# Test - dbt compiles and runs your analytics code against your data platform, enabling you and your team to collaborate on a single source of truth for metrics, insights, and business definitions. This single source of truth, combined with the ability to define tests for your data, reduces errors when logic changes, and alerts you when issues arise. -- Test text here blah blah blah -- Test text here blah blah blah - - - - test - - @@ -27,13 +17,6 @@ Read more about why we want to enable analysts to work more like software engine Use dbt to quickly and collaboratively transform data and deploy analytics code following software engineering best practices like version control, modularity, portability, CI/CD, and documentation. This means anyone on the data team comfortable with SQL can safely contribute to production-grade data pipelines. - - ### dbt Cloud dbt Cloud offers the fastest, most reliable, and scalable way to deploy dbt. Allowing data teams to optimize their data transformation by developing, testing, scheduling, and investigating data models using a single, fully managed service through a web-based user interface (UI). From 05c91b287ff1a6b771090e3777ee125a57ff3884 Mon Sep 17 00:00:00 2001 From: Matt Shaver <60105315+matthewshaver@users.noreply.github.com> Date: Wed, 29 Jan 2025 11:08:54 -0500 Subject: [PATCH 21/29] Adding redirect URI to ADO (#6843) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ## What are you changing in this pull request and why? Adds instructions for redirect URI ## Checklist - [ ] I have reviewed the [Content style guide](https://github.com/dbt-labs/docs.getdbt.com/blob/current/contributing/content-style-guide.md) so my content adheres to these guidelines. - [ ] The topic I'm writing about is for specific dbt version(s) and I have versioned it according to the [version a whole page](https://github.com/dbt-labs/docs.getdbt.com/blob/current/contributing/single-sourcing-content.md#adding-a-new-version) and/or [version a block of content](https://github.com/dbt-labs/docs.getdbt.com/blob/current/contributing/single-sourcing-content.md#versioning-blocks-of-content) guidelines. - [ ] I have added checklist item(s) to this list for anything anything that needs to happen before this PR is merged, such as "needs technical review" or "change base branch." - [ ] The content in this PR requires a dbt release note, so I added one to the [release notes page](https://docs.getdbt.com/docs/dbt-versions/dbt-cloud-release-notes). --- 🚀 Deployment available! Here are the direct links to the updated files: - https://docs-getdbt-com-git-ado-update-dbt-labs.vercel.app/docs/cloud/git/setup-azure-service-principal - https://docs-getdbt-com-git-ado-update-dbt-labs.vercel.app/reference/resource-configs/snowflake-configs --------- Co-authored-by: Leona B. Campbell <3880403+runleonarun@users.noreply.github.com> --- .../docs/docs/cloud/git/setup-azure-service-principal.md | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/website/docs/docs/cloud/git/setup-azure-service-principal.md b/website/docs/docs/cloud/git/setup-azure-service-principal.md index 55147bb66b1..8c2d539bffb 100644 --- a/website/docs/docs/cloud/git/setup-azure-service-principal.md +++ b/website/docs/docs/cloud/git/setup-azure-service-principal.md @@ -44,7 +44,11 @@ A Microsoft Entra ID admin needs to perform the following steps: 4. Provide a name for your app. We recommend using, "dbt Labs Azure DevOps app". 5. Select **Accounts in any organizational directory (Any Entra ID directory - Multitenant)** as the Supported Account Types. Many customers ask why they need to select Multitenant instead of Single Tenant, and they frequently get this step wrong. Microsoft considers Azure DevOps (formerly called Visual Studio) and Microsoft Entra ID separate tenants, and for the Entra ID application to work properly, you must select Multitenant. -6. Click **Register**. +6. Set **Redirect URI (optional)** to **Web**. Copy and paste the Redirect URI from dbt Cloud into the next field. To find the Redirect URI in dbt Cloud: + 1. In dbt Cloud, navigate to **Account Settings** -> **Integrations**. + 2. Click the **edit icon** next to **Azure DevOps**. + 3. Copy the first **Redirect URIs** value which looks like `https:///complete/azure_active_directory` and does NOT end with `service_user`. +7. Click **Register**. Here's what your app should look like before registering it: From 7070e5077aa18282ed25ab18771e386bf0158649 Mon Sep 17 00:00:00 2001 From: "Leona B. Campbell" <3880403+runleonarun@users.noreply.github.com> Date: Wed, 29 Jan 2025 12:41:10 -0500 Subject: [PATCH 22/29] Cloud typo (#6850) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ## What are you changing in this pull request and why? Very small cloud typos. ## Checklist - [ ] I have reviewed the [Content style guide](https://github.com/dbt-labs/docs.getdbt.com/blob/current/contributing/content-style-guide.md) so my content adheres to these guidelines. - [ ] The topic I'm writing about is for specific dbt version(s) and I have versioned it according to the [version a whole page](https://github.com/dbt-labs/docs.getdbt.com/blob/current/contributing/single-sourcing-content.md#adding-a-new-version) and/or [version a block of content](https://github.com/dbt-labs/docs.getdbt.com/blob/current/contributing/single-sourcing-content.md#versioning-blocks-of-content) guidelines. - [ ] I have added checklist item(s) to this list for anything anything that needs to happen before this PR is merged, such as "needs technical review" or "change base branch." - [ ] The content in this PR requires a dbt release note, so I added one to the [release notes page](https://docs.getdbt.com/docs/dbt-versions/dbt-cloud-release-notes). --- 🚀 Deployment available! Here are the direct links to the updated files: - https://docs-getdbt-com-git-capitalization-dbt-labs.vercel.app/faqs/Troubleshooting/auth-expired-error - https://docs-getdbt-com-git-capitalization-dbt-labs.vercel.app/guides/sl-migration --- website/docs/faqs/Troubleshooting/auth-expired-error.md | 2 +- website/docs/guides/sl-migration.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/website/docs/faqs/Troubleshooting/auth-expired-error.md b/website/docs/faqs/Troubleshooting/auth-expired-error.md index 267407a8c70..b2d6dea9dd3 100644 --- a/website/docs/faqs/Troubleshooting/auth-expired-error.md +++ b/website/docs/faqs/Troubleshooting/auth-expired-error.md @@ -4,7 +4,7 @@ description: "Reauthenticate warehouse when seeing `authentication has expired` sidebar_label: 'Receiving `authentication has expired` error in the IDE' --- -If you see a `authentication has expired` error when you try to run queries in the dbt CLoud IDE, this means your [OAuth](/docs/cloud/manage-access/set-up-snowflake-oauth) connection between Snowflake and dbt Cloud has expired. +If you see a `authentication has expired` error when you try to run queries in the dbt Cloud IDE, this means your [OAuth](/docs/cloud/manage-access/set-up-snowflake-oauth) connection between Snowflake and dbt Cloud has expired. To fix this, you must reconnect the two tools. diff --git a/website/docs/guides/sl-migration.md b/website/docs/guides/sl-migration.md index 8a0f6199fae..dc13f52e74b 100644 --- a/website/docs/guides/sl-migration.md +++ b/website/docs/guides/sl-migration.md @@ -33,7 +33,7 @@ dbt Labs recommends completing these steps in a local dev environment (such as t ```bash python -m pip install "dbt-metricflow[snowflake]" ``` - **Note** - MetricFlow commands aren't yet supported in the dbt CLoud IDE at this time. + **Note** - MetricFlow commands aren't yet supported in the dbt Cloud IDE at this time. 2. Run `dbt parse`. This parses your project and creates a `semantic_manifest.json` file in your target directory. MetricFlow needs this file to query metrics. If you make changes to your configs, you will need to parse your project again. 3. Run `mf list metrics` to view the metrics in your project. From 3354f26aef0c8c64a6cb8ea35276bdbe7337d4e9 Mon Sep 17 00:00:00 2001 From: "Leona B. Campbell" <3880403+runleonarun@users.noreply.github.com> Date: Wed, 29 Jan 2025 23:50:43 -0500 Subject: [PATCH 23/29] Establishing a single source for apis (#6825) ## What are you changing in this pull request and why? We need to establish a single source for APIs ## Checklist - [ ] I have reviewed the [Content style guide](https://github.com/dbt-labs/docs.getdbt.com/blob/current/contributing/content-style-guide.md) so my content adheres to these guidelines. - [ ] The topic I'm writing about is for specific dbt version(s) and I have versioned it according to the [version a whole page](https://github.com/dbt-labs/docs.getdbt.com/blob/current/contributing/single-sourcing-content.md#adding-a-new-version) and/or [version a block of content](https://github.com/dbt-labs/docs.getdbt.com/blob/current/contributing/single-sourcing-content.md#versioning-blocks-of-content) guidelines. - [ ] I have added checklist item(s) to this list for anything anything that needs to happen before this PR is merged, such as "needs technical review" or "change base branch." - [ ] The content in this PR requires a dbt release note, so I added one to the [release notes page](https://docs.getdbt.com/docs/dbt-versions/dbt-cloud-release-notes). --- ...dbt-cloud-api-calls-using-dbt-cloud-cli.md | 331 ------------------ website/vercel.json | 5 + 2 files changed, 5 insertions(+), 331 deletions(-) delete mode 100644 website/blog/2022-05-03-making-dbt-cloud-api-calls-using-dbt-cloud-cli.md diff --git a/website/blog/2022-05-03-making-dbt-cloud-api-calls-using-dbt-cloud-cli.md b/website/blog/2022-05-03-making-dbt-cloud-api-calls-using-dbt-cloud-cli.md deleted file mode 100644 index f75675ba7ee..00000000000 --- a/website/blog/2022-05-03-making-dbt-cloud-api-calls-using-dbt-cloud-cli.md +++ /dev/null @@ -1,331 +0,0 @@ ---- -title: "Making dbt Cloud API calls using dbt-cloud-cli" -description: "Simo Tumelius shares how to use his dbt-cloud-cli to make more readable and streamlined dbt Cloud API calls." -slug: making-dbt-cloud-api-calls-using-dbt-cloud-cli - -authors: [simo_tumelius] - -tags: [data ecosystem] -hide_table_of_contents: false - -date: 2022-05-03 -is_featured: true ---- - -:::info Different from dbt Cloud CLI -This blog explains how to use the `dbt-cloud-cli` Python library to create a data catalog app with dbt Cloud artifacts. This is different from the [dbt Cloud CLI](/docs/cloud/cloud-cli-installation), a tool that allows you to run dbt commands against your dbt Cloud development environment from your local command line. -::: - -dbt Cloud is a hosted service that many organizations use for their dbt deployments. Among other things, it provides an interface for creating and managing deployment jobs. When triggered (e.g., cron schedule, API trigger), the jobs generate various artifacts that contain valuable metadata related to the dbt project and the run results. - -dbt Cloud provides a REST API for managing jobs, run artifacts and other dbt Cloud resources. Data/analytics engineers would often write custom scripts for issuing automated calls to the API using tools [cURL](https://curl.se/) or [Python Requests](https://requests.readthedocs.io/en/latest/). In some cases, the engineers would go on and copy/rewrite them between projects that need to interact with the API. Now, they have a bunch of scripts on their hands that they need to maintain and develop further if business requirements change. If only there was a dedicated tool for interacting with the dbt Cloud API that abstracts away the complexities of the API calls behind an easy-to-use interface… Oh wait, there is: [the dbt-cloud-cli](https://github.com/data-mie/dbt-cloud-cli)! - - - -In this blog post I’ll shine some light on how the dbt-cloud-cli project came to be and how it can make a data/analytics engineer’s work easier. I’ll also walk you through an example use case where we download a dbt Cloud job run catalog.json artifact and implement a simple data catalog app using the same tools that were used in creating dbt-cloud-cli. - -## What is dbt-cloud-cli and why should you use it? - -What kicked off this project came from the fact that there is currently no easy-to-use interface for the dbt Cloud API. In order to make calls to the API you’d need to write custom scripts that use tools like cURL or Python Requests. There’s nothing inherently wrong with custom scripts but there is an overhead in writing and maintaining those scripts. - -Readability is also a factor the importance of which cannot be overstated. With most programming languages, [the ratio of time reading vs writing code is well over 10:1](https://app.works/the-importance-of-code-readability/#:~:text=What%20is%20code%20readability%3F,or%20add%20a%20new%20feature.). Good code is easily readable and understandable by ourselves and other developers and it minimizes the cognitive load of deciphering what was the original intention of the author. - -dbt-cloud-cli is a command line interface (CLI) that abstracts dbt Cloud API calls behind a user-friendly and elegant interface. The CLI is written in Python using [pydantic](https://pydantic-docs.helpmanual.io/) and [click](https://click.palletsprojects.com/en/8.0.x/). Let me demonstrate the difference in complexity and readability between cURL vs dbt-cloud-cli for triggering a dbt Cloud job run: - - - - -```bash -curl -H "Authorization:Token $DBT_CLOUD_API_TOKEN" -H "Content-Type:application/json" -d '{"cause":"Triggered using cURL"}' https://cloud.getdbt.com/api/v2/accounts/$DBT_CLOUD_ACCOUNT_ID/jobs/43167/run/ -``` - - - - -``` -dbt-cloud job run --job-id 43167 -``` - - - - -You probably agree that the latter example is definitely more elegant and easier to read. `dbt-cloud` handles the request boilerplate (e.g., api token in the header, endpoint URL) so that you don’t need to worry about authentication or remember which endpoint to use. Also, the CLI implements additional functionality (e.g., `--wait`) for some endpoints; for example, `dbt cloud job run --wait` will issue the job trigger, wait until the job finishes, fails or is cancelled and then prints out the job status response. - -In addition to CLI commands that interact with a single dbt Cloud API endpoint there are composite helper commands that call one or more API endpoints and perform more complex operations. One example of composite commands are `dbt-cloud job export` and `dbt-cloud job import` where, under the hood, the export command performs a `dbt-cloud job get` and writes the job metadata to a file and the import command reads job parameters from a JSON file and calls `dbt-cloud job create`. The export and import commands can be used in tandem to move dbt Cloud jobs between projects. Another example is the `dbt-cloud job delete-all` which fetches a list of all jobs using `dbt-cloud job list` and then iterates over the list prompting the user if they want to delete the job. For each job that the user agrees to delete a `dbt-cloud job delete` is performed. - -To install the CLI in your Python environment run `python -m pip install dbt-cloud-cli` and you’re all set. You can use it locally in your development environment or e.g. in a GitHub actions workflow. - -## How the project came to be - -I’m a freelance data and analytics engineer and almost all of the projects I work with involve dbt Cloud one way or another. In a typical project, we’d set up a simple “run and test” job in dbt Cloud that is scheduled to run once or twice a day. Often there’d also be a [continuous integration job](https://docs.getdbt.com/docs/dbt-cloud/using-dbt-cloud/cloud-enabling-continuous-integration) that runs on Pull Requests in GitHub. - -These two job triggering methods (i.e., cron and PR trigger) are sufficient in most projects, but there are some cases where additional control over when a job is run or what else is executed in the job’s context is needed. For example, you may need to load data to your database before a job is run or download artifacts after the run is finished. - -In my case, we didn’t yet have an EL pipeline for an external data source. So, we hacked together a simple Python script for loading the data and ran the script as part of our CI workflow in GitHub Actions before triggering a dbt Cloud job. This would ensure that the data in our database was up-to-date before the job ran. - -Initially, we issued the dbt Cloud API requests to trigger job runs using cURL and it worked perfectly fine until we needed to implement a waiting loop that periodically checked the job status and returned when the job was finished. Luckily I found a Python script by Sean McIntyre ([see the dbt Discourse post](https://discourse.getdbt.com/t/triggering-a-dbt-cloud-job-in-your-automated-workflow-with-python/2573)) that does exactly this. - -I modified the script according to our needs and wrapped it in a `dbt-cloud job run` CLI command using click (actually the entry point wasn’t `dbt-cloud` at that time but you get the idea). Click (“Command Line Interface Creation Kit”) is a Python library for creating CLIs with as little code as necessary. Implementing a simple CLI using click only requires adding a few decorators (e.g., `group`, `command` and `option`) to the functions in your code and you’re good to go. - -Now we had exactly what we wanted and our CI workflow in GitHub actions looked slick: - -``` -- name: Trigger dbt Cloud job run - run: | - ./cool_script_bro.sh - dbt-cloud job run --job-id $DBT_CLOUD_JOB_ID -``` - -Fast forward a month or two and there was another client that needed something similar. I felt that this was an opportunity to open source the project not just to benefit me and my clients but also [the broader dbt community](https://www.getdbt.com/community/) (❤️). So, I moved the project to a public github repository with a goal of eventually covering all of the dbt Cloud API endpoints. - -While working with the initial 0.1.0 release that included only the `dbt-cloud job run` command I decided to have some fun and try how well pydantic (Python dataclasses on steroids!) and `click` worked together. I’m a big fan of `pydantic`, and I’ve used it in a wide variety of projects including machine learning models and automated testing software for a medical device. Even though Python has had built-in dataclasses since version 3.7, they fall short when it comes to data validation and general developer ergonomics (IMO) and that’s where `pydantic` comes in; among other things, `pydantic` implements a validator decorator that is used to define custom validations for model fields (e.g., CLI arguments). - -I refactored the `dbt-cloud-cli` code so that the CLI commands were now implemented as pydantic models where the model fields are the dbt Cloud API endpoint arguments. The `pydantic` model fields could now be translated to `click` arguments which resulted in the following CLI command implementation pattern: - -```python -import click -from dbt_cloud.command import DbtCloudJobGetCommand - -@click.group() -def dbt_cloud(): - pass - -@dbt_cloud.group() -def job(): - pass - -@job.command(help=DbtCloudJobGetCommand.get_description()) -@DbtCloudJobGetCommand.click_options -def get(**kwargs): - command = DbtCloudJobGetCommand.from_click_options(**kwargs) - execute_and_print(command) -``` - -After the initial release I started to expand to cover the rest of the dbt Cloud API endpoints. For a list of all the covered API endpoints and implemented CLI commands, see https://github.com/data-mie/dbt-cloud-cli. - -## Creating a data catalog app using dbt Cloud artifacts - -In this example we’ll download a `catalog.json` artifact from the latest run of a dbt Cloud job using `dbt-cloud run list` and `dbt-cloud get-artifact` and then write a simple Data Catalog CLI application using the same tools that are used in `dbt-cloud-cli` (i.e., `click` and `pydantic`). Let’s dive right in! - -The first command we need is the `dbt-cloud run list` which uses an [API endpoint](https://docs.getdbt.com/dbt-cloud/api-v2#/operations/List%20Runs) that returns runs sorted by creation date, with the most recent run appearing first. The command returns a JSON response that has one top-level attribute `data` that contains a list of runs. We’ll need to extract the `id` attribute of the first one and to do that we use [jq](https://stedolan.github.io/jq/): - -``` -latest_run_id=$(dbt-cloud run list --job-id $DBT_CLOUD_JOB_ID | jq .data[0].id -r) -``` - -Next, we use the `dbt-cloud get-artifact` command to download the `catalog.json` artifact: - -``` -dbt-cloud run get-artifact --run-id $latest_run_id --path catalog.json -f catalog.json -``` - -To explore the downloaded catalog file we’ll write a simple CLI application. The [catalog.json](https://schemas.getdbt.com/dbt/catalog/v1.json) has four top level properties: metadata, nodes, sources and errors. In this example we explore the nodes and sources only and leave the metadata and errors out. - -First, we need a `Catalog` abstraction that reflects the catalog JSON schema: - -```py -from typing import Optional, Dict, Any -from pydantic import BaseModel, Field - -class Stats(BaseModel): - """Represent node stats in the Catalog.""" - - id: str - label: str - value: Any - include: bool - description: str - - def __str__(self): - return f"{self.label}: {self.value}" - - -class Column(BaseModel): - """Represents a column in the Catalog.""" - - type: str - index: int - name: str - comment: Optional[str] - - def __str__(self): - return f"{self.name} (type: {self.type}, index: {self.index}, comment: {self.comment})" - - -class Node(BaseModel): - """Represents a node in the Catalog.""" - - unique_id: str - metadata: Dict[str, Optional[str]] - columns: Dict[str, Column] - stats: Dict[str, Stats] - - @property - def name(self): - return self.metadata["name"] - - @property - def database(self): - return self.metadata["database"] - - @property - def schema(self): - return self.metadata["schema"] - - @property - def type(self): - return self.metadata["type"] - - def __gt__(self, other): - return self.name > other.name - - def __lt__(self, other): - return self.name < other.name - - def __str__(self): - return f"{self.name} (type: {self.type}, schema: {self.schema}, database: {self.database})" - - -class Catalog(BaseModel): - """Represents a dbt catalog.json artifact.""" - - metadata: Dict - nodes: Dict[str, Node] - sources: Dict[str, Node] - errors: Optional[Dict] -``` - -The four abstractions (`Stats`,`Column`, `Node `and `Catalog`) all inherit [the pydantic BaseModel](https://pydantic-docs.helpmanual.io/usage/models/) which implements various methods for parsing files and other python objects into model instances. We’ll leave the parsing to pydantic (i.e., `BaseModel.parse_file` classmethod) so that we can focus solely on the app logic. - -The `CatalogExploreCommand` abstraction implements the CLI app which is then wrapped in a `click.command` that implements the CLI entry point. The `CatalogExploreCommand` class inherits `ClickBaseModel` that implements a `click_options` classmethod which we’ll use to decorate the entry point. This method is where the pydantic to click translation magic happens (i.e., pydantic model fields are translated [into click options](https://click.palletsprojects.com/en/8.0.x/options/)). Note that the app [uses inquirer](https://github.com/magmax/python-inquirer) in addition to `click` to create interactive “select option from a list” CLI prompts. - -```py -import click -from enum import Enum -from pathlib import Path -from pydantic import Field -from dbt_cloud.command.command import ClickBaseModel - -class NodeType(Enum): - SOURCE = "source" - NODE = "node" - - -class CatalogExploreCommand(ClickBaseModel): - """An inteactive application for exploring catalog artifacts.""" - - file: Path = Field(default="catalog.json", description="Catalog file path.") - title: str = Field( - default="Data Catalog", description="ASCII art title for the app." - ) - title_font: str = Field( - default="rand-large", - description="ASCII art title font (see https://github.com/sepandhaghighi/art#try-art-in-your-browser for a list of available fonts)", - ) - - def get_catalog(self) -> Catalog: - return Catalog.parse_file(self.file) - - def print_title(self): - from art import tprint - - tprint(self.title, font=self.title_font) - - def execute(self): - import inquirer - - self.print_title() - - while True: - node_type_options = [ - inquirer.List( - "node_type", - message="Select node type to explore", - choices=[node_type.value for node_type in NodeType], - ) - ] - node_type = NodeType(inquirer.prompt(node_type_options)["node_type"]) - self.explore(node_type=node_type) - if not click.confirm("Explore another node type?"): - break - - def explore(self, node_type: NodeType): - """Interactive exploration of nodes to explore and display their metadata""" - import inquirer - - catalog = self.get_catalog() - if node_type == NodeType.SOURCE: - nodes = list(catalog.sources.values()) - else: - nodes = list(catalog.nodes.values()) - - while True: - databases = sorted(set(map(lambda x: x.database, nodes))) - database_options = [ - inquirer.List("database", message="Select database", choices=databases) - ] - database = inquirer.prompt(database_options)["database"] - nodes_filtered = list(filter(lambda x: x.database == database, nodes)) - - schemas = sorted(set(map(lambda x: x.schema, nodes_filtered))) - schema_options = [ - inquirer.List("schema", message="Select schema", choices=schemas) - ] - schema = inquirer.prompt(schema_options)["schema"] - nodes_filtered = list(filter(lambda x: x.schema == schema, nodes_filtered)) - - node_options = [ - inquirer.List( - "node", message="Select node", choices=sorted(nodes_filtered) - ) - ] - node = inquirer.prompt(node_options)["node"] - click.echo(f"{node.name} columns:") - for column in node.columns.values(): - click.echo(f"- {column}") - click.echo("") - for stats in node.stats.values(): - if stats.id == "has_stats": - continue - click.echo(stats) - if not click.confirm(f"Explore another {node_type.value}?"): - break - - -@click.command(help=CatalogExploreCommand.get_description()) -@CatalogExploreCommand.click_options -def data_catalog(**kwargs): - command = CatalogExploreCommand.from_click_options(**kwargs) - command.execute() -``` - -The `CatalogExploreCommand.execute` method implements the interactive exploration logic. First the app prompts to select a node type to explore (`source` or `node`) and then it asks the user to select a database, a schema in the selected database and finally a model in the selected schema. The app then prints out the model columns and stats (if there are any). All this is wrapped in a loop with “Explore another node? [y/N]” and “Explore another node type? [y/N]” prompts for either continuing the loop or breaking out of it. - -I’ve included the app in the latest version of dbt-cloud-cli so you can test it out yourself! To use the app you need install dbt-cloud-cli with extra dependencies: - -```bash -python -m pip install dbt-cloud-cli[demo] -``` - -Now you can the run app: - -```bash -dbt-cloud demo data-catalog --file catalog.json -``` - -## Parting thoughts - -To summarize, the `dbt-cloud-cli`I implements an easy-to-use command line interface for the dbt Cloud API which abstracts away the complexities of the API calls. The CLI has interfaces to many of the API endpoints and covering all of the endpoints is on the project’s roadmap. For a list of all the covered API endpoints and implemented CLI commands, see https://github.com/data-mie/dbt-cloud-cli. - -In addition to commands that interact with a single dbt Cloud API endpoint there are composite helper commands that call one or more API endpoints and perform more complex operations (e.g., `dbt-cloud job export` and `dbt-cloud job import`). - -The `dbt-cloud-cli` makes interacting with the dbt Cloud API a breeze compared to using and maintaining custom cURL/ Python Requests scripts. Furthermore, `dbt-cloud-cli` commands handle all the API call boilerplate under the hood so that you don’t need to google or memorize how to interact with the API. And when in doubt, just add a `--help` flag to a `dbt-cloud-cli` command and you’ll get a list of all the available commands or arguments. - - -PS. There are still API endpoints that haven’t been implemented in the CLI. If there’s an endpoint you’d like a CLI command for you can open an issue in the GitHub repository. All contributions to the project (be it documentation in README or new CLI commands) are welcome! If you have any questions on the project or how to contribute, feel free to drop me a DM in dbt Slack. diff --git a/website/vercel.json b/website/vercel.json index 849fe5174aa..61679ea4276 100644 --- a/website/vercel.json +++ b/website/vercel.json @@ -2,6 +2,11 @@ "cleanUrls": true, "trailingSlash": false, "redirects": [ + { + "source": "/blog/making-dbt-cloud-api-calls-using-dbt-cloud-cli", + "destination": "/docs/dbt-cloud-apis/overview", + "permanent": true + }, { "source": "/docs/cloud/git/setup-azure", "destination": "/docs/cloud/git/connect-azure-devops", From 535f2a54547166ea108e0de997bb2ede2f56d921 Mon Sep 17 00:00:00 2001 From: Mirna Wong <89008547+mirnawong1@users.noreply.github.com> Date: Thu, 30 Jan 2025 09:04:56 +0000 Subject: [PATCH 24/29] Update gitlab-token-refresh.md --- website/docs/faqs/Git/gitlab-token-refresh.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/website/docs/faqs/Git/gitlab-token-refresh.md b/website/docs/faqs/Git/gitlab-token-refresh.md index 60ac0b0bc35..9a7f75f0266 100644 --- a/website/docs/faqs/Git/gitlab-token-refresh.md +++ b/website/docs/faqs/Git/gitlab-token-refresh.md @@ -11,6 +11,6 @@ By default, the project access token follows a naming pattern: `dbt Cloud token If you're receiving a "Refresh token" message, don't worry — dbt Cloud automatically refreshes this project access token for you, which means you never have to manually rotate it. -If you still experience any token refresh errors, please try disconnecting and reconnecting the repository in dbt Cloud to refresh the token. +If you still experience any token refresh errors, please try disconnecting and reconnecting the repository in your dbt Cloud project to refresh the token. For any issues, please reach out to the Support team at support@getdbt.com and we'll be happy to help! From a170783232659380b4adc1b4beefba61876a61d0 Mon Sep 17 00:00:00 2001 From: Mirna Wong <89008547+mirnawong1@users.noreply.github.com> Date: Thu, 30 Jan 2025 10:41:42 +0000 Subject: [PATCH 25/29] Update website/docs/docs/collaborate/explore-projects.md --- website/docs/docs/collaborate/explore-projects.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/website/docs/docs/collaborate/explore-projects.md b/website/docs/docs/collaborate/explore-projects.md index 5ad5962be83..cbf70af6158 100644 --- a/website/docs/docs/collaborate/explore-projects.md +++ b/website/docs/docs/collaborate/explore-projects.md @@ -47,7 +47,7 @@ dbt Explorer uses the metadata provided by the [Discovery API](/docs/dbt-cloud-a | To view in Explorer | You must successfully run | |---------------------|---------------------------| -| All metadata | [dbt build](/reference/commands/build) and [dbt docs generate](/reference/commands/cmd-docs) together as part of the same job in the environment +| All metadata | [dbt build](/reference/commands/build), [dbt docs generate](/reference/commands/cmd-docs), and [dbt source freshness](/reference/commands/source#dbt-source-freshness) together as part of the same job in the environment | Model lineage, details, or results | [dbt run](/reference/commands/run) or [dbt build](/reference/commands/build) on a given model within a job in the environment | | Columns and statistics for models, sources, and snapshots| [dbt docs generate](/reference/commands/cmd-docs) within [a job](/docs/collaborate/build-and-view-your-docs) in the environment | | Test results | [dbt test](/reference/commands/test) or [dbt build](/reference/commands/build) within a job in the environment | From 41627c46f0254fe40d175d289f9b3ba92c930b3c Mon Sep 17 00:00:00 2001 From: Mirna Wong <89008547+mirnawong1@users.noreply.github.com> Date: Thu, 30 Jan 2025 15:50:31 +0000 Subject: [PATCH 26/29] Update dbt_valid_to_current.md fix wrong example --- .../reference/resource-configs/dbt_valid_to_current.md | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/website/docs/reference/resource-configs/dbt_valid_to_current.md b/website/docs/reference/resource-configs/dbt_valid_to_current.md index 9cf2ca0860e..66188e9fb88 100644 --- a/website/docs/reference/resource-configs/dbt_valid_to_current.md +++ b/website/docs/reference/resource-configs/dbt_valid_to_current.md @@ -12,8 +12,9 @@ id: "dbt_valid_to_current" ```yaml snapshots: - my_project: - +dbt_valid_to_current: "to_date('9999-12-31')" + - name: my_snapshot + config: + dbt_valid_to_current: "string" ``` @@ -27,7 +28,7 @@ snapshots: unique_key='id', strategy='timestamp', updated_at='updated_at', - dbt_valid_to_current='to_date('9999-12-31')' + dbt_valid_to_current='string' ) }} ``` @@ -39,7 +40,7 @@ snapshots: ```yml snapshots: [](/reference/resource-configs/resource-path): - +dbt_valid_to_current: "to_date('9999-12-31')" + +dbt_valid_to_current: "string" ```
From bcdf78c223207a96a5b9a8ca1915048621475dd1 Mon Sep 17 00:00:00 2001 From: "Leona B. Campbell" <3880403+runleonarun@users.noreply.github.com> Date: Fri, 31 Jan 2025 10:35:54 -0800 Subject: [PATCH 27/29] Update CODEOWNERS --- .github/CODEOWNERS | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index 1983b0201d9..80712bd2847 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -7,7 +7,7 @@ /website/docs/docs/supported-data-platforms.md @dbt-labs/product-docs @amychen1776 /website/docs/reference/warehouse-setups @dbt-labs/product-docs @amychen1776 # `resource-configs` contains more than just warehouse setups -/website/docs/reference/resource-configs/*-configs.md @dbt-labs/product-docs @amychen1776 +/website/docs/reference/resource-configs/*-configs.md @dbt-labs/product-docs /website/docs/guides/advanced/adapter-development @dbt-labs/product-docs @amychen1776 /website/docs/guides/building-packages @dbt-labs/product-docs @amychen1776 From 96f64a84239386014867d87a75a7883c1b75f7dc Mon Sep 17 00:00:00 2001 From: Louis Auneau Date: Fri, 31 Jan 2025 16:20:41 -0500 Subject: [PATCH 28/29] Python models Dataproc Serverless setup with packages (#5920) Add description on how to setup python models with Dataproc Serverless using a custom image in order to use third-party packages. ## What are you changing in this pull request and why? In the context of running Python models in Spark using Dataproc, the documentation ([python-models.md](https://github.com/dbt-labs/docs.getdbt.com/blob/current/website/docs/docs/build/python-models.md)) says: > Installing packages: If you are using a Dataproc Cluster (as opposed to Dataproc Serverless), you can add third-party packages while creating the cluster. I dug and found it is possible to run python models using third-party packages in dataproc serverless. It requires to use a custom docker image. This is very well documented on GCP's end. We currently run this in prod without any issue. I added this in the documentation. Let me know if you need more details on how to set this up. ## Checklist - [x] Review the [Content style guide](https://github.com/dbt-labs/docs.getdbt.com/blob/current/contributing/content-style-guide.md) so my content adheres to these guidelines. - [x] For [docs versioning](https://github.com/dbt-labs/docs.getdbt.com/blob/current/contributing/single-sourcing-content.md#about-versioning), review how to [version a whole page](https://github.com/dbt-labs/docs.getdbt.com/blob/current/contributing/single-sourcing-content.md#adding-a-new-version) and [version a block of content](https://github.com/dbt-labs/docs.getdbt.com/blob/current/contributing/single-sourcing-content.md#versioning-blocks-of-content). - [x] Add a checklist item for anything that needs to happen before this PR is merged, such as "needs technical review" or "change base branch." Adding or removing pages (delete if not applicable): N/A --------- Co-authored-by: Matt Shaver <60105315+matthewshaver@users.noreply.github.com> Co-authored-by: Leona B. Campbell <3880403+runleonarun@users.noreply.github.com> Co-authored-by: Mirna Wong <89008547+mirnawong1@users.noreply.github.com> --- website/docs/docs/build/python-models.md | 37 ++++++++++++++++++++---- 1 file changed, 32 insertions(+), 5 deletions(-) diff --git a/website/docs/docs/build/python-models.md b/website/docs/docs/build/python-models.md index eac477b03fd..c016ebc3c47 100644 --- a/website/docs/docs/build/python-models.md +++ b/website/docs/docs/build/python-models.md @@ -815,13 +815,40 @@ storage.objects.create storage.objects.delete ``` -**Installing packages:** If you are using a Dataproc Cluster (as opposed to Dataproc Serverless), you can add third-party packages while creating the cluster. +**Installing packages:** -Google recommends installing Python packages on Dataproc clusters via initialization actions: -- [How initialization actions are used](https://github.com/GoogleCloudDataproc/initialization-actions/blob/master/README.md#how-initialization-actions-are-used) -- [Actions for installing via `pip` or `conda`](https://github.com/GoogleCloudDataproc/initialization-actions/tree/master/python) +Installation of third-party packages on Dataproc varies depending on whether it's a [cluster](https://cloud.google.com/dataproc/docs/guides/create-cluster) or [serverless](https://cloud.google.com/dataproc-serverless/docs). -You can also install packages at cluster creation time by [defining cluster properties](https://cloud.google.com/dataproc/docs/tutorials/python-configuration#image_version_20): `dataproc:pip.packages` or `dataproc:conda.packages`. +- **Dataproc Cluster** — Google recommends installing Python packages while creating the cluster via initialization actions: + - [How initialization actions are used](https://github.com/GoogleCloudDataproc/initialization-actions/blob/master/README.md#how-initialization-actions-are-used) + - [Actions for installing via `pip` or `conda`](https://github.com/GoogleCloudDataproc/initialization-actions/tree/master/python) + + You can also install packages at cluster creation time by [defining cluster properties](https://cloud.google.com/dataproc/docs/tutorials/python-configuration#image_version_20): `dataproc:pip.packages` or `dataproc:conda.packages`. + +- **Dataproc Serverless** — Google recommends using a [custom docker image](https://cloud.google.com/dataproc-serverless/docs/guides/custom-containers) to install thrid-party packages. The image needs to be hosted in [Google Artifact Registry](https://cloud.google.com/artifact-registry/docs). It can then be used by providing the image path in dbt profiles: + + + ```yml + my-profile: + target: dev + outputs: + dev: + type: bigquery + method: oauth + project: abc-123 + dataset: my_dataset + + # for dbt Python models to be run on Dataproc Serverless + gcs_bucket: dbt-python + dataproc_region: us-central1 + submission_method: serverless + dataproc_batch: + runtime_config: + container_image: {HOSTNAME}/{PROJECT_ID}/{IMAGE}:{TAG} + ``` + + + From fd7f092498dee41b630eadedb345150a254adce0 Mon Sep 17 00:00:00 2001 From: mirnawong1 Date: Mon, 3 Feb 2025 09:53:32 +0000 Subject: [PATCH 29/29] remove typo --- website/snippets/_cloud-environments-info.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/website/snippets/_cloud-environments-info.md b/website/snippets/_cloud-environments-info.md index cc153cf38a8..8b06cc92b5a 100644 --- a/website/snippets/_cloud-environments-info.md +++ b/website/snippets/_cloud-environments-info.md @@ -49,7 +49,7 @@ For more info, check out this [FAQ page on this topic](/faqs/Environments/custom ### Extended attributes :::note -Extended attributes are are currently _not_ supported for SSH tunneling +Extended attributes are currently _not_ supported for SSH tunneling ::: Extended attributes allows users to set a flexible [profiles.yml](/docs/core/connect-data-platform/profiles.yml) snippet in their dbt Cloud Environment settings. It provides users with more control over environments (both deployment and development) and extends how dbt Cloud connects to the data platform within a given environment.