{"id":30727,"date":"2025-03-24T05:00:00","date_gmt":"2025-03-24T04:00:00","guid":{"rendered":"https:\/\/sii.pl\/blog\/?p=30727"},"modified":"2025-03-14T13:56:26","modified_gmt":"2025-03-14T12:56:26","slug":"automatyzacja-pipeline-kluczem-do-sukcesu-projektow-w-devops-dla-d365-fo-czesc-ii-praktyka","status":"publish","type":"post","link":"https:\/\/sii.pl\/blog\/automatyzacja-pipeline-kluczem-do-sukcesu-projektow-w-devops-dla-d365-fo-czesc-ii-praktyka\/","title":{"rendered":"Automatyzacja pipeline kluczem do sukcesu projekt\u00f3w w DevOps dla D365 F&amp;O. Cz\u0119\u015b\u0107 II \u2013 praktyka"},"content":{"rendered":"\n<p><a href=\"https:\/\/sii.pl\/blog\/automatyzacja-pipeline-kluczem-do-sukcesu-projektow-w-devops-dla-d365-fo-czesc-i\/\" target=\"_blank\" rel=\"noopener\" title=\"\">M\u00f3j poprzedni artyku\u0142<\/a> wprowadzi\u0142 Was w \u015bwiat Pipeline, praktyk DevOps oraz korzy\u015bci z wykorzystywania DevOps Pipelines dla D365 F&amp;O.<\/p>\n\n\n\n<p>W drugiej cz\u0119\u015bci serii przedstawi\u0119 praktyczne informacje dotycz\u0105cych u\u017cycia automatyzacji zada\u0144 za pomoc\u0105 Pipeline DevOps (b\u0119d\u0119 u\u017cywa\u0142 polskiego s\u0142owa \u201epotok\u201d zamiast angielskiego \u201epipeline\u201d) na przyk\u0142adzie systemu ERP D365 F&amp;O wdra\u017canego przez <a href=\"https:\/\/sii.pl\/oferta\/enterprise-platforms\/microsoft\/dynamics-365-erp\/\" target=\"_blank\" rel=\"noopener\" title=\"\">moje Centrum Kompetencyjne<\/a>. Skupi\u0119 si\u0119 m.in. na sprawdzaniu wytwarzanego kodu przez naszych programist\u00f3w za pomoc\u0105 automatu potoku DevOps. W artykule opisz\u0119 <strong>spos\u00f3b wdro\u017cenia i u\u017cywania \u015brodowiska obs\u0142uguj\u0105cego ci\u0105g\u0142\u0105 weryfikacj\u0119 wytwarzanego kodu<\/strong>.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Automatyzacja potoku<\/strong><\/h2>\n\n\n\n<p>W ramach automatyzacji potoku znajduje si\u0119<strong>: automatyczny przegl\u0105d kodu, weryfikacja BP, AppChecker oraz CarReport, weryfikacja synchronizacji, weryfikacja kompilacji i wdro\u017cenia raport\u00f3w oraz inne.<\/strong><\/p>\n\n\n\n<p>W ramach prac wdro\u017ceniowych wprowadzaj\u0105cych produkt bardzo cz\u0119sto wdra\u017camy automat potoku umo\u017cliwiaj\u0105cy weryfikacj\u0119 kodu wytwarzanego przez naszych programist\u00f3w.<\/p>\n\n\n\n<p>Podstawowe wymagania umo\u017cliwiaj\u0105ce stworzenie takiego automatu zale\u017c\u0105 od do\u015bwiadczenia:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>je\u015bli masz ju\u017c do\u015bwiadczenie zwi\u0105zane z potokami DevOps, oznacza to, \u017ce znasz ju\u017c elementy konfiguracji potoku w DevOps.<\/li>\n\n\n\n<li>je\u015bli nie masz do\u015bwiadczenia, powiniene\u015b zacz\u0105\u0107 od oficjalnej dokumentacji Microsoft dotycz\u0105cej potok\u00f3w DevOps.<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Potoki kompilacji i weryfikacji kodu<\/strong><\/h2>\n\n\n\n<p>Potok kompilacji i weryfikacji kodu w DevOps to zbi\u00f3r ustawie\u0144, kt\u00f3re z jednej strony kontroluj\u0105 proces kompilacji kodu, a z drugiej proces weryfikacji kompilowanego kodu. Ustawienia obejmuj\u0105 takie elementy jak m.in.:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>ga\u0142\u0105\u017a kontroli wersji, kt\u00f3ra powinna zosta\u0107 zbudowana,<\/li>\n\n\n\n<li>niestandardowe skrypty programu PowerShell i wyzwalacze (zaplanowane kompilacje\/weryfikacje po wyst\u0105pieniu zmiany).<\/li>\n<\/ul>\n\n\n\n<p>Wykorzystujemy standardowe potoki DevOps Azure.<\/p>\n\n\n\n<p>Istniej\u0105ce potoki kompilacji w us\u0142udze DevOps mo\u017cna znale\u017a\u0107, przechodz\u0105c do sekcji Pipelines -&gt; Pipelines w lewym menu konfiguracyjnym.<\/p>\n\n\n\n<figure class=\"wp-block-image aligncenter size-full\"><img decoding=\"async\" width=\"206\" height=\"518\" src=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2025\/03\/image1.png\" alt=\"Widok Pipelines w lewym menu konfiguracyjnym\" class=\"wp-image-30728\" srcset=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2025\/03\/image1.png 206w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2025\/03\/image1-119x300.png 119w\" sizes=\"(max-width: 206px) 100vw, 206px\" \/><figcaption class=\"wp-element-caption\">Ryc. 1 Widok Pipelines w lewym menu konfiguracyjnym<\/figcaption><\/figure>\n\n\n\n<p>Domy\u015blny widok pokazuje potoki z ostatnimi kompilacjami<\/p>\n\n\n\n<figure class=\"wp-block-image aligncenter size-full\"><img decoding=\"async\" width=\"185\" height=\"338\" src=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2025\/03\/image2.png\" alt=\"Domy\u015blny widok Pipelines\" class=\"wp-image-30730\" srcset=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2025\/03\/image2.png 185w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2025\/03\/image2-164x300.png 164w\" sizes=\"(max-width: 185px) 100vw, 185px\" \/><figcaption class=\"wp-element-caption\">Ryc. 2 Domy\u015blny widok Pipelines<\/figcaption><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Tworzenie nowego potoku kompilacji\/weryfikacji DevOps<\/strong><\/h2>\n\n\n\n<p>Je\u015bli chcesz utworzy\u0107 nowy potok kompilacji\/weryfikacji DevOps, dobrym rozwi\u0105zaniem jest sklonowanie istniej\u0105cego potoku zamiast tworzenie nowego od podstaw. Oczywi\u015bcie mo\u017cesz te\u017c edytowa\u0107 istniej\u0105ce potoki, a tak\u017ce zapisa\u0107 istniej\u0105cy potok jako szablon.<\/p>\n\n\n\n<p>Istnieje tak\u017ce mo\u017cliwo\u015b\u0107 utworzenia nowego potoku od postaw. Je\u015bli chcesz to zrobi\u0107, musisz wywo\u0142a\u0107 przycisk \u201eNew pipeline\u201d (Nowy potok) w prawym g\u00f3rnym rogu DevOps:<\/p>\n\n\n\n<figure class=\"wp-block-image aligncenter size-full\"><img decoding=\"async\" width=\"319\" height=\"97\" src=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2025\/03\/image3.png\" alt=\"Tworzenie nowego potoku od podstaw\" class=\"wp-image-30732\" srcset=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2025\/03\/image3.png 319w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2025\/03\/image3-300x91.png 300w\" sizes=\"(max-width: 319px) 100vw, 319px\" \/><figcaption class=\"wp-element-caption\">Ryc. 3 Tworzenie nowego potoku od podstaw<\/figcaption><\/figure>\n\n\n\n<p>Podczas tworzenia potoku nale\u017cy dokona\u0107 ustawienia kilku element\u00f3w, kt\u00f3re b\u0119d\u0105 potrzebne w procesie kompilacji\/weryfikacji.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Agent pool (Pula agent\u00f3w potoku)<\/strong><\/h3>\n\n\n\n<p>Pierwszym elementem do ustawienia jest pula agent\u00f3w potoku. W g\u0142\u00f3wnym widoku tworzenia potoku kompilacji\/weryfikacji mo\u017cesz ustawi\u0107 pul\u0119 agent\u00f3w potoku. Standardowo nie musisz tego zmienia\u0107. Podczas wdra\u017cania \u015brodowiska kompilacji z us\u0142ugi Lifecycle Services mo\u017cesz wybra\u0107\/ustawi\u0107 pul\u0119 agent\u00f3w, kt\u00f3re nast\u0119pnie b\u0119d\u0105 dost\u0119pne w us\u0142udze DevOps.<\/p>\n\n\n\n<figure class=\"wp-block-image aligncenter size-large\"><img decoding=\"async\" width=\"1024\" height=\"215\" src=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2025\/03\/image4-1024x215.png\" alt=\"Pula agent\u00f3w potoku\" class=\"wp-image-30734\" srcset=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2025\/03\/image4-1024x215.png 1024w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2025\/03\/image4-300x63.png 300w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2025\/03\/image4-768x161.png 768w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2025\/03\/image4.png 1346w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><figcaption class=\"wp-element-caption\">Ryc. 4 Pula agent\u00f3w potoku<\/figcaption><\/figure>\n\n\n\n<p>Mo\u017cesz kontrolowa\u0107, kt\u00f3ra ga\u0142\u0105\u017a zostanie zbudowana, za pomoc\u0105 tych dw\u00f3ch ustawie\u0144 w opcjach Get sources (Pobierz \u017ar\u00f3d\u0142a) oraz Build the solution (Kompiluj rozwi\u0105zanie):<\/p>\n\n\n\n<figure class=\"wp-block-image aligncenter size-large\"><img decoding=\"async\" width=\"1024\" height=\"279\" src=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2025\/03\/image5-1024x279.png\" alt=\"Ustawienie Get sources\" class=\"wp-image-30736\" srcset=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2025\/03\/image5-1024x279.png 1024w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2025\/03\/image5-300x82.png 300w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2025\/03\/image5-768x209.png 768w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2025\/03\/image5.png 1333w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><figcaption class=\"wp-element-caption\">Ryc. 5 Ustawienie Get sources<\/figcaption><\/figure>\n\n\n\n<figure class=\"wp-block-image aligncenter size-large\"><img decoding=\"async\" width=\"1024\" height=\"308\" src=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2025\/03\/image6-1024x308.png\" alt=\"Ustawienie Build the solution\" class=\"wp-image-30738\" srcset=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2025\/03\/image6-1024x308.png 1024w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2025\/03\/image6-300x90.png 300w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2025\/03\/image6-768x231.png 768w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2025\/03\/image6.png 1361w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><figcaption class=\"wp-element-caption\">Ryc. 6 Ustawienie Build the solution<\/figcaption><\/figure>\n\n\n\n<p>W zmiennych kompilacji\/weryfikacji mo\u017cesz nadzorowa\u0107 r\u00f3\u017cnego rodzaju ustawienia, kt\u00f3re DevOps udost\u0119pnia dla kompilacji\/weryfikacji D365 F&amp;O. Je\u015bli chcesz przeprowadzi\u0107 szczeg\u00f3\u0142ow\u0105 weryfikacj\u0119 wytworzonego kodu, warto nie pomija\u0107 standardowych opcji DevOps.<\/p>\n\n\n\n<figure class=\"wp-block-image aligncenter size-full\"><img decoding=\"async\" width=\"778\" height=\"591\" src=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2025\/03\/image7.png\" alt=\"Standardowe opcje DevOps\" class=\"wp-image-30740\" srcset=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2025\/03\/image7.png 778w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2025\/03\/image7-300x228.png 300w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2025\/03\/image7-768x583.png 768w\" sizes=\"(max-width: 778px) 100vw, 778px\" \/><figcaption class=\"wp-element-caption\">Ryc. 7 Standardowe opcje DevOps<\/figcaption><\/figure>\n\n\n\n<p>Mo\u017cesz u\u017cy\u0107 Tiggers (wyzwalaczy), aby kontrolowa\u0107, kiedy kompilacja\/weryfikacja powinna si\u0119 rozpocz\u0105\u0107. Ci\u0105g\u0142a integracja, opisana <a href=\"https:\/\/sii.pl\/blog\/automatyzacja-pipeline-kluczem-do-sukcesu-projektow-w-devops-dla-d365-fo-czesc-i\/\" target=\"_blank\" rel=\"noopener\" title=\"\">w poprzednim artykule<\/a>, oznacza, \u017ce kompilacja\/weryfikacja powinna by\u0107 wyzwalana po ka\u017cdej zmianie kodu.<\/p>\n\n\n\n<p>Poniewa\u017c kompilacja\/weryfikacja kodu w niekt\u00f3rych przypadkach mo\u017ce zaj\u0105\u0107 wi\u0119cej czasu, warto rozwa\u017cy\u0107 planowanie kompilacji i kompilowa\u0107 kod w okre\u015blonych porach dnia np. co noc, w po\u0142udnie:<\/p>\n\n\n\n<figure class=\"wp-block-image aligncenter size-large\"><img decoding=\"async\" width=\"1024\" height=\"341\" src=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2025\/03\/image8-1024x341.png\" alt=\"Planowanie pory kompilacji\/weryfikacji\" class=\"wp-image-30742\" srcset=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2025\/03\/image8-1024x341.png 1024w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2025\/03\/image8-300x100.png 300w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2025\/03\/image8-768x256.png 768w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2025\/03\/image8.png 1047w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><figcaption class=\"wp-element-caption\">Ryc. 8 Planowanie pory kompilacji\/weryfikacji<\/figcaption><\/figure>\n\n\n\n<p>Punktem kulminacyjnym ca\u0142ego procesu kompilacji\/weryfikacji kodu D365 F&amp;O jest dodanie w\u0142asnych skrypt\u00f3w PowerShell umo\u017cliwiaj\u0105cych wykorzystanie mechanizm\u00f3w weryfikacji i oceny wytworzonego kodu z uwzgl\u0119dnieniem takich mechanizm\u00f3w jak weryfikacja BP, Appchecker, CarReport i inne elementy.<\/p>\n\n\n\n<p>Poni\u017cej przedstawiam fragment jednego ze skrypt\u00f3w:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: plain; title: ; notranslate\" title=\"\">\n\/p:BuildTasksDirectory=&quot;$(Pipeline.Workspace)\\NuGets\\Microsoft.Dynamics.AX.Platform.CompilerPackage\\DevAlm&quot;\n\/p:MetadataDirectory=&quot;$(Build.SourcesDirectory)\\Metadata&quot;\n\/p:FrameworkDirectory=&quot;$(Pipeline.Workspace)\\NuGets\\Microsoft.Dynamics.AX.Platform.CompilerPackage&quot;\n\/p:ReferenceFolder=&quot;$(Pipeline.Workspace)\\NuGets\\Microsoft.Dynamics.AX.Platform.DevALM.BuildXpp\\ref\\net40;$(Pipeline.Workspace)\\NuGets\\Microsoft.Dynamics.AX.Application1.DevALM.BuildXpp\\ref\\net40;$(Pipeline.Workspace)\\NuGets\\Microsoft.Dynamics.AX.Application2.DevALM.BuildXpp\\ref\\net40;$(Pipeline.Workspace)\\NuGets\\Microsoft.Dynamics.AX.ApplicationSuite.DevALM.BuildXpp\\ref\\net40;$(Build.SourcesDirectory)\\Metadata;$(Build.BinariesDirectory)&quot;\n\/p:ReferencePath=&quot;$(Pipeline.Workspace)\\NuGets\\Microsoft.Dynamics.AX.Platform.CompilerPackage&quot; \/p:OutputDirectory=&quot;$(Build.BinariesDirectory)&quot;\n\/p:CompilerMetadata=&quot;$(Build.BinariesDirectory)&quot;\n<\/pre><\/div>\n\n\n<figure class=\"wp-block-image aligncenter size-full\"><a href=\"https:\/\/sii.pl\/oferty-pracy\/\" target=\"_blank\" rel=\"noreferrer noopener\"><img decoding=\"async\" width=\"737\" height=\"170\" src=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2025\/03\/praca-m.jpg\" alt=\"oferty pracy\" class=\"wp-image-30747\" srcset=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2025\/03\/praca-m.jpg 737w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2025\/03\/praca-m-300x69.jpg 300w\" sizes=\"(max-width: 737px) 100vw, 737px\" \/><\/a><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Na zako\u0144czenie<\/strong><\/h2>\n\n\n\n<p>W artykule skupi\u0142em si\u0119 na aspektach praktycznych dotycz\u0105cych automatyzacji zada\u0144 za pomoc\u0105 Pipeline DevOps na przyk\u0142adzie systemu ERP D365 F&amp;O wdra\u017canego przez moje Centrum Kompetencyjne. Skupi\u0142em si\u0119 na automatyzacji kompilacji i wyda\u0144 wytwarzanego przez nas oprogramowania. Mam nadziej\u0119, \u017ce wpis b\u0119dzie dla Was pomocny \ud83d\ude0a<\/p>\n\n\n<div class=\"kk-star-ratings kksr-auto kksr-align-left kksr-valign-bottom\"\n    data-payload='{&quot;align&quot;:&quot;left&quot;,&quot;id&quot;:&quot;30727&quot;,&quot;slug&quot;:&quot;default&quot;,&quot;valign&quot;:&quot;bottom&quot;,&quot;ignore&quot;:&quot;&quot;,&quot;reference&quot;:&quot;auto&quot;,&quot;class&quot;:&quot;&quot;,&quot;count&quot;:&quot;16&quot;,&quot;legendonly&quot;:&quot;&quot;,&quot;readonly&quot;:&quot;&quot;,&quot;score&quot;:&quot;5&quot;,&quot;starsonly&quot;:&quot;&quot;,&quot;best&quot;:&quot;5&quot;,&quot;gap&quot;:&quot;11&quot;,&quot;greet&quot;:&quot;&quot;,&quot;legend&quot;:&quot;5\\\/5 ( votes: 16)&quot;,&quot;size&quot;:&quot;18&quot;,&quot;title&quot;:&quot;Automatyzacja pipeline kluczem do sukcesu projekt\u00f3w w DevOps dla D365 F\\u0026amp;O. Cz\u0119\u015b\u0107 II \u2013 praktyka&quot;,&quot;width&quot;:&quot;139.5&quot;,&quot;_legend&quot;:&quot;{score}\\\/{best} ( {votes}: {count})&quot;,&quot;font_factor&quot;:&quot;1.25&quot;}'>\n            \n<div class=\"kksr-stars\">\n    \n<div class=\"kksr-stars-inactive\">\n            <div class=\"kksr-star\" data-star=\"1\" style=\"padding-right: 11px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 18px; height: 18px;\"><\/div>\n        <\/div>\n            <div class=\"kksr-star\" data-star=\"2\" style=\"padding-right: 11px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 18px; height: 18px;\"><\/div>\n        <\/div>\n            <div class=\"kksr-star\" data-star=\"3\" style=\"padding-right: 11px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 18px; height: 18px;\"><\/div>\n        <\/div>\n            <div class=\"kksr-star\" data-star=\"4\" style=\"padding-right: 11px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 18px; height: 18px;\"><\/div>\n        <\/div>\n            <div class=\"kksr-star\" data-star=\"5\" style=\"padding-right: 11px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 18px; height: 18px;\"><\/div>\n        <\/div>\n    <\/div>\n    \n<div class=\"kksr-stars-active\" style=\"width: 139.5px;\">\n            <div class=\"kksr-star\" style=\"padding-right: 11px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 18px; height: 18px;\"><\/div>\n        <\/div>\n            <div class=\"kksr-star\" style=\"padding-right: 11px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 18px; height: 18px;\"><\/div>\n        <\/div>\n            <div class=\"kksr-star\" style=\"padding-right: 11px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 18px; height: 18px;\"><\/div>\n        <\/div>\n            <div class=\"kksr-star\" style=\"padding-right: 11px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 18px; height: 18px;\"><\/div>\n        <\/div>\n            <div class=\"kksr-star\" style=\"padding-right: 11px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 18px; height: 18px;\"><\/div>\n        <\/div>\n    <\/div>\n<\/div>\n                \n\n<div class=\"kksr-legend\" style=\"font-size: 14.4px;\">\n            5\/5 ( votes: 16)    <\/div>\n    <\/div>\n","protected":false},"excerpt":{"rendered":"<p>M\u00f3j poprzedni artyku\u0142 wprowadzi\u0142 Was w \u015bwiat Pipeline, praktyk DevOps oraz korzy\u015bci z wykorzystywania DevOps Pipelines dla D365 F&amp;O. W &hellip; <a class=\"continued-btn\" href=\"https:\/\/sii.pl\/blog\/automatyzacja-pipeline-kluczem-do-sukcesu-projektow-w-devops-dla-d365-fo-czesc-ii-praktyka\/\">Continued<\/a><\/p>\n","protected":false},"author":156,"featured_media":30744,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"_editorskit_title_hidden":false,"_editorskit_reading_time":0,"_editorskit_is_block_options_detached":false,"_editorskit_block_options_position":"{}","inline_featured_image":false,"footnotes":""},"categories":[1316],"tags":[2656,2654,1546,686],"class_list":["post-30727","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-development-na-miekko","tag-pipeline-devops","tag-d365-fo","tag-przeglad-narzedzi","tag-azure-devops"],"acf":[],"aioseo_notices":[],"republish_history":[],"featured_media_url":"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2025\/03\/Automatyzacja-pipeline-kluczem-do-sukcesu-projektow-w-DevOps-dla-D365-FO.-Czesc-I.jpg","category_names":["Development na mi\u0119kko"],"_links":{"self":[{"href":"https:\/\/sii.pl\/blog\/wp-json\/wp\/v2\/posts\/30727"}],"collection":[{"href":"https:\/\/sii.pl\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/sii.pl\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/sii.pl\/blog\/wp-json\/wp\/v2\/users\/156"}],"replies":[{"embeddable":true,"href":"https:\/\/sii.pl\/blog\/wp-json\/wp\/v2\/comments?post=30727"}],"version-history":[{"count":2,"href":"https:\/\/sii.pl\/blog\/wp-json\/wp\/v2\/posts\/30727\/revisions"}],"predecessor-version":[{"id":30749,"href":"https:\/\/sii.pl\/blog\/wp-json\/wp\/v2\/posts\/30727\/revisions\/30749"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/sii.pl\/blog\/wp-json\/wp\/v2\/media\/30744"}],"wp:attachment":[{"href":"https:\/\/sii.pl\/blog\/wp-json\/wp\/v2\/media?parent=30727"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/sii.pl\/blog\/wp-json\/wp\/v2\/categories?post=30727"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/sii.pl\/blog\/wp-json\/wp\/v2\/tags?post=30727"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}