Skip to main content
cancel
Showing results for 
Search instead for 
Did you mean: 

Microsoft is giving away 50,000 FREE Microsoft Certification exam vouchers. Get Fabric certified for FREE! Learn more

Reply
-Blair-
Helper I
Helper I

DevOps with Fabric items not in Github

I am in the process of building out a DevOps solution for Microsoft Fabric. It needs to have an IaC component and a CI/CD component. The workspaces are all synced with GitHub to a branch for each environment.

With most of the items, I can create them manually and get the definitions from the repo for the IaC deployment, and then use the updates in the repo for the CI/CD, however there is a few items, such as Event Stream which do not sync back to the repo. What's the best aproach to get the definitions for these?

 

I started going down the aproach of building a python script to call POST https://api.fabric.microsoft.com/v1/workspaces/{workspace_id}/items/{item_id}/getDefinition, and using the service principal for authentication, but aparantly that's not supported. I tried executing it under a local acount and hit permissions issues.

1 ACCEPTED SOLUTION
datacoffee
Most Valuable Professional
Most Valuable Professional

As of this moment in time, there is a lack of CI/CD capabilities in Real-Time Intelligence.

 

Frank Geisler has a PowerShell plugin which can do all the things that are available for deployment and configuration. He is building this with help from the product group in Microsoft. So when APIs and features become available, the module will be updated.

Frank-Geisler/powerrti: This is a PowerShell Module that can help automate tasks with Fabric Real-Ti...

Until more news are coming, this is what we have to work with


If you find this reply to help with your problem, please consider hitting the accept button...
----------------
Blog: https://dcode.bi
KQL ref guide: https://aka.bi/kql
LinkedIn: https://aka.bi/follow

View solution in original post

6 REPLIES 6
datacoffee
Most Valuable Professional
Most Valuable Professional

Hello again

 

This is just announced from Microsoft - Eventstream in CI/CD

Link

 

enjoy 😊

 

cheers


If you find this reply to help with your problem, please consider hitting the accept button...
----------------
Blog: https://dcode.bi
KQL ref guide: https://aka.bi/kql
LinkedIn: https://aka.bi/follow
-Blair-
Helper I
Helper I

If you can't get the definition out, how do you deploy the items which are not in GitHub across the environments?

 

Also, how would you perform a pull request to merge from a feature branch into developement and deploy the updates to these items across the environments if you can't get out the code base.

 

I really hope the answer is not 'recreate them manually or deploy code manually in each environment'

 

Below are the items I am using which are either 'unsuported' or '-' with Github.

  • Eventhouse
  • Eventhouse - KQL database
  • Eventstream
  • Lakehouse - Semantic Model
  • Lakehouse - SQL Analytics Endpoint
  • Reflex

 

datacoffee
Most Valuable Professional
Most Valuable Professional

As of this moment in time, there is a lack of CI/CD capabilities in Real-Time Intelligence.

 

Frank Geisler has a PowerShell plugin which can do all the things that are available for deployment and configuration. He is building this with help from the product group in Microsoft. So when APIs and features become available, the module will be updated.

Frank-Geisler/powerrti: This is a PowerShell Module that can help automate tasks with Fabric Real-Ti...

Until more news are coming, this is what we have to work with


If you find this reply to help with your problem, please consider hitting the accept button...
----------------
Blog: https://dcode.bi
KQL ref guide: https://aka.bi/kql
LinkedIn: https://aka.bi/follow

Thanks, I'll check that out.

 

Well that's interesting. This morning my reflex item asked to be commited. I don't see anything around Data Activator and GitHub in the release schedule, so hope it's here to stay.

 

The Eventhouse is sycned as well now.

It looks to be just the Event Stream which isn't working with Github.

 

Blair_0-1731882578266.png

Blair_1-1731882654991.png

 

 

 

-Blair-
Helper I
Helper I

I am in the process of building out a DevOps solution for Microsoft Fabric. It needs to have an IaC component and a CI/CD component. The workspaces are all synced with GitHub to a branch for each environment.


With most of the items, I can create them manually and get the definitions from the repo for the IaC deployment, and then use the updates in the repo for the CI/CD, however there is a few items, such as Event Stream which do not sync back to the repo. What's the best aproach to get the definitions for these?

 

I started going down the aproach of building a python script to call POST https://api.fabric.microsoft.com/v1/workspaces/{workspace_id}/items/{item_id}/getDefinition, and using the service principal for authentication, but aparantly that's not supported. I tried executing it under a local acount and hit permissions issues.

datacoffee
Most Valuable Professional
Most Valuable Professional

Hello

 

Right now the Eventstream item in Fabric cannot be synced in a CI/CD setup. The underlying elements of the Eventstream is still in the making of being translated to a "readable" language. 

 

I hope something will happen with these items in the near future

 

Cheers, Brian


If you find this reply to help with your problem, please consider hitting the accept button...
----------------
Blog: https://dcode.bi
KQL ref guide: https://aka.bi/kql
LinkedIn: https://aka.bi/follow

Helpful resources

Announcements
MarchFBCvideo - carousel

Fabric Monthly Update - March 2025

Check out the March 2025 Fabric update to learn about new features.

Notebook Gallery Carousel1

NEW! Community Notebooks Gallery

Explore and share Fabric Notebooks to boost Power BI insights in the new community notebooks gallery.

April2025 Carousel

Fabric Community Update - April 2025

Find out what's new and trending in the Fabric community.

"); $(".slidesjs-pagination" ).prependTo(".pagination_sec"); $(".slidesjs-pagination" ).append("
"); $(".slidesjs-play.slidesjs-navigation").appendTo(".playpause_sec"); $(".slidesjs-stop.slidesjs-navigation").appendTo(".playpause_sec"); $(".slidesjs-pagination" ).append(""); $(".slidesjs-pagination" ).append(""); } catch(e){ } /* End: This code is added by iTalent as part of iTrack COMPL-455 */ $(".slidesjs-previous.slidesjs-navigation").attr('tabindex', '0'); $(".slidesjs-next.slidesjs-navigation").attr('tabindex', '0'); /* start: This code is added by iTalent as part of iTrack 1859082 */ $('.slidesjs-play.slidesjs-navigation').attr('id','playtitle'); $('.slidesjs-stop.slidesjs-navigation').attr('id','stoptitle'); $('.slidesjs-play.slidesjs-navigation').attr('role','tab'); $('.slidesjs-stop.slidesjs-navigation').attr('role','tab'); $('.slidesjs-play.slidesjs-navigation').attr('aria-describedby','tip1'); $('.slidesjs-stop.slidesjs-navigation').attr('aria-describedby','tip2'); /* End: This code is added by iTalent as part of iTrack 1859082 */ }); $(document).ready(function() { if($("#slides .item").length < 2 ) { /* Fixing Single Slide click issue (commented following code)*/ // $(".item").css("left","0px"); $(".item.slidesjs-slide").attr('style', 'left:0px !important'); $(".slidesjs-stop.slidesjs-navigation").trigger('click'); $(".slidesjs-previous").css("display", "none"); $(".slidesjs-next").css("display", "none"); } var items_length = $(".item.slidesjs-slide").length; $(".slidesjs-pagination-item > button").attr("aria-setsize",items_length); $(".slidesjs-next, .slidesjs-pagination-item button").attr("tabindex","-1"); $(".slidesjs-pagination-item button").attr("role", "tab"); $(".slidesjs-previous").attr("tabindex","-1"); $(".slidesjs-next").attr("aria-hidden","true"); $(".slidesjs-previous").attr("aria-hidden","true"); $(".slidesjs-next").attr("aria-label","Next"); $(".slidesjs-previous").attr("aria-label","Previous"); //$(".slidesjs-stop.slidesjs-navigation").attr("role","button"); //$(".slidesjs-play.slidesjs-navigation").attr("role","button"); $(".slidesjs-pagination").attr("role","tablist").attr("aria-busy","true"); $("li.slidesjs-pagination-item").attr("role","list"); $(".item.slidesjs-slide").attr("tabindex","-1"); $(".item.slidesjs-slide").attr("aria-label","item"); /*$(".slidesjs-stop.slidesjs-navigation").on('click', function() { var itemNumber = parseInt($('.slidesjs-pagination-item > a.active').attr('data-slidesjs-item')); $($('.item.slidesjs-slide')[itemNumber]).find('.c-call-to-action').attr('tabindex', '0'); });*/ $(".slidesjs-stop.slidesjs-navigation, .slidesjs-pagination-item > button").on('click keydown', function() { $.each($('.item.slidesjs-slide'),function(i,el){ $(el).find('.c-call-to-action').attr('tabindex', '-1'); }); var itemNumber = parseInt($('.slidesjs-pagination-item > button.active').attr('data-slidesjs-item')); $($('.item.slidesjs-slide')[itemNumber]).find('.c-call-to-action').attr('tabindex', '0'); }); $(".slidesjs-play.slidesjs-navigation").on('click', function() { $.each($('.item.slidesjs-slide'),function(i,el){ $(el).find('.c-call-to-action').attr('tabindex', '-1'); }); }); $(".slidesjs-pagination-item button").keyup(function(e){ var keyCode = e.keyCode || e.which; if (keyCode == 9) { e.preventDefault(); $(".slidesjs-stop.slidesjs-navigation").trigger('click').blur(); $("button.active").focus(); } }); $(".slidesjs-play").on("click",function (event) { if (event.handleObj.type === "click") { $(".slidesjs-stop").focus(); } else if(event.handleObj.type === "keydown"){ if (event.which === 13 && $(event.target).hasClass("slidesjs-play")) { $(".slidesjs-stop").focus(); } } }); $(".slidesjs-stop").on("click",function (event) { if (event.handleObj.type === "click") { $(".slidesjs-play").focus(); } else if(event.handleObj.type === "keydown"){ if (event.which === 13 && $(event.target).hasClass("slidesjs-stop")) { $(".slidesjs-play").focus(); } } }); $(".slidesjs-pagination-item").keydown(function(e){ switch (e.which){ case 37: //left arrow key $(".slidesjs-previous.slidesjs-navigation").trigger('click'); e.preventDefault(); break; case 39: //right arrow key $(".slidesjs-next.slidesjs-navigation").trigger('click'); e.preventDefault(); break; default: return; } $(".slidesjs-pagination-item button.active").focus(); }); }); // Start This code is added by iTalent as part of iTrack 1859082 $(document).ready(function(){ $("#tip1").attr("aria-hidden","true").addClass("hidden"); $("#tip2").attr("aria-hidden","true").addClass("hidden"); $(".slidesjs-stop.slidesjs-navigation, .slidesjs-play.slidesjs-navigation").attr('title', ''); $("a#playtitle").focus(function(){ $("#tip1").attr("aria-hidden","false").removeClass("hidden"); }); $("a#playtitle").mouseover(function(){ $("#tip1").attr("aria-hidden","false").removeClass("hidden"); }); $("a#playtitle").blur(function(){ $("#tip1").attr("aria-hidden","true").addClass("hidden"); }); $("a#playtitle").mouseleave(function(){ $("#tip1").attr("aria-hidden","true").addClass("hidden"); }); $("a#play").keydown(function(ev){ if (ev.which ==27) { $("#tip1").attr("aria-hidden","true").addClass("hidden"); ev.preventDefault(); return false; } }); $("a#stoptitle").focus(function(){ $("#tip2").attr("aria-hidden","false").removeClass("hidden"); }); $("a#stoptitle").mouseover(function(){ $("#tip2").attr("aria-hidden","false").removeClass("hidden"); }); $("a#stoptitle").blur(function(){ $("#tip2").attr("aria-hidden","true").addClass("hidden"); }); $("a#stoptitle").mouseleave(function(){ $("#tip2").attr("aria-hidden","true").addClass("hidden"); }); $("a#stoptitle").keydown(function(ev){ if (ev.which ==27) { $("#tip2").attr("aria-hidden","true").addClass("hidden"); ev.preventDefault(); return false; } }); }); // End This code is added by iTalent as part of iTrack 1859082
Top Solution Authors