From 80bfec006259e4e2ad4231be78343a814f980438 Mon Sep 17 00:00:00 2001 From: Jan Calanog Date: Wed, 5 Feb 2025 12:12:43 +0100 Subject: [PATCH 1/9] Add docs preview setup guide --- docs/docset.yml | 1 + .../guide/how-to-set-up-docs-previews.md | 112 ++++++++++++++++++ .../guide/img/docs-preview-deployment.png | Bin 0 -> 64114 bytes .../docs-preview-required-status-check.png | Bin 0 -> 18415 bytes 4 files changed, 113 insertions(+) create mode 100644 docs/migration/guide/how-to-set-up-docs-previews.md create mode 100644 docs/migration/guide/img/docs-preview-deployment.png create mode 100644 docs/migration/guide/img/docs-preview-required-status-check.png diff --git a/docs/docset.yml b/docs/docset.yml index ecc2e2828..37be74a73 100644 --- a/docs/docset.yml +++ b/docs/docset.yml @@ -50,6 +50,7 @@ toc: - file: automated.md - file: tooling.md - file: mapping.md + - file: how-to-set-up-docs-previews.md - folder: configure children: - file: index.md diff --git a/docs/migration/guide/how-to-set-up-docs-previews.md b/docs/migration/guide/how-to-set-up-docs-previews.md new file mode 100644 index 000000000..c5dc19c1c --- /dev/null +++ b/docs/migration/guide/how-to-set-up-docs-previews.md @@ -0,0 +1,112 @@ +# How to set up docs previews + +This guide will help you set up docs previews for your GitHub repository. + +## GitHub Workflows + +The docs preview system consists of three GitHub Workflows: +- `docs-build.yml`: Build the docs on a PR +- `docs-deploy.yml`: Deploy the docs to our preview environment +- `docs-cleanup.yml`: Cleanup the docs after a PR is merged or closed + + +### Build + +This workflow is triggered when a PR is opened. The underlying reusable workflow, builds the documentation and uploads it as an artifact. +If the `path-pattern` intput does not match any changes in the PR, the workflow will skip the build, but still set a green status check. +This way you only build and deploy the docs when there are changes to the docs and you can still set it as a required status check. + + +::::{dropdown} .github/workflows/docs-build.yml +:open: + +```yaml +--- +name: docs-build # The naming is important, don't change it + +on: + pull_request: ~ + +jobs: +docs-preview: + uses: elastic/docs-builder/.github/workflows/preview-build.yml + with: + path-pattern: docs/** # The path to your docs folder. + permissions: # Only needs read permissions. + contents: read + pull-requests: read +``` + +:::: + +### Deploy + +This workflow is triggered when the `docs-build` workflow is completed. The underlying reusable workflow, downloads the artifact and deploys the docs to our preview environment. + + +::::{dropdown} .github/workflows/docs-deploy.yml +:open: + +```yaml +--- +name: docs-deploy + +on: + workflow_run: + workflows: [docs-build] # The name of the docs-build workflow. + types: + - completed + +jobs: + docs-preview: + uses: elastic/docs-builder/.github/workflows/preview-deploy.yml + permissions: + contents: none # No need to read the code. + id-token: write + deployments: write + actions: read +``` + +:::: + +### Cleanup + +This workflow is triggered when a PR is either merged or closed. The underlying reusable workflow, deletes the docs from the preview environment. + +::::{dropdown} .github/workflows/docs-cleanup.yml +:open: + +```yaml +--- +name: docs-cleanup + +on: + pull_request_target: # We are using the pull_request_target event, but the code is never checked out. + types: + - closed + +jobs: + docs-preview: + uses: elastic/docs-builder/.github/workflows/preview-cleanup.yml + permissions: + contents: none # We don't even grant read permissions, because the code is never checked out. + id-token: write + deployments: write +``` + +:::: + +## Required Status Checks + +To ensure that the docs are always in a deployable state, we need to set up required status checks. + +In this case only the `docs-build` workflow is required, which will produce a status check named `docs-preview / build`. + +![docs-preview required status check](img/docs-preview-required-status-check.png) + + +## Deployments + +If the `docs-build` workflow is successful, the `docs-deploy` workflow will create a deployment visible in the GitHub UI on your PR. + +![docs-preview deployment](img/docs-preview-deployment.png) diff --git a/docs/migration/guide/img/docs-preview-deployment.png b/docs/migration/guide/img/docs-preview-deployment.png new file mode 100644 index 0000000000000000000000000000000000000000..2c4506bf2f6c267789c0155c4d36b4c5b920f89f GIT binary patch literal 64114 zcmeEtW0YmfvTm_UUAEC>+qP}nw$+6$SC?(uwq0GeZCkJU+_UdFyZ660-p{wjoMYvh znGqQo5gEB=W_%&C(jw517?1z}0MKHhg7N?WzF z2;j-u+ZdZ!8UX-^hQud=DaI}#_+ESz1_uB@z(*sPlTK>@kY$6(x+BL&gMbqS@yb@? z*EIQC@Ck;FgjW0@Z6X(%_gAf=f`oKNHH4R4==TSeU5CZ$Iq$ex=diK2-sgyIW^g!I z^_Tzwp#M&RQrH6tkQYKvgwK5*UUZ1|#Ttzl;0s6=pk!0qS2_+-QUE;q(hq7}4>%ja z^Azd+=ZB4tQqpTsbWVUQynvl2^ftx-nQs>1BngHk@>;5ne&_ zF=8JrU64_{8c~MoV6l$!zt?>*l8AZrnj|M~!844a7iXub?K^P28QICBf{oex|I*n1 zHntluUW3<5;g~=~!Efk>NQiT)wlBVK9$gSHdMXAKN$Kq@uewWV0`U!H)La7MF7xIp zdWmQnZb=P<0QaG}ZM}v&&**jUlt0qa##lb7vJ7^$`5BbpUUMv*RL#oMuW%tvrfEzk z?TC7mNE$lk2}<6}@IJguc4=L5*M8y*I_8cx`2>}56c0<#Uw0FV(~qnQ1Z8Lt39pex zp^Dt$m==ekuau~#FHiCdrkfqm7m+>&jjpPisv1z;UMt>pHB~pcA_V<(pclKS&!cz4Az6s6>BkfOYi=qjl(k*2R=JCQ=_!bx^e%NeoQ#5z5h;Gs(kQrU*MF8etHCoL3;NH!ATY@wglU}z=<|d>H z|ETVWOQA>NRp^JF%1t>W-r?*+QmZ(!(7VeP2vP`ht`Yzx{}TSWY<1bQqShkq zS&LazMieO_hF=AyBy}|GSmOePxeK|CIiph|zakDt4_gnpZ^552gTmzolXS7@uq2U) z;cF3MqsY3k1{ifKbX(|vlcH296C#cD&#F5XO)cr2p`9t5aT{<}LeKi{4Mgl%)5s@4 z4#J`O?Cg@8JT=kJ(awP?pjdog!V`Nfw#qNpAJN*tGs9@Qar-j|UADlkc0fS=xx0VD ziEbh)BQ_wyz^j8dLI4NYYvk*QYprV=Qjk#YKq)oh;et3>X*p{JZ3;M~uSlFoO^_$ZkQTL z&sfX9Gv}1$S>|G8w~06NKc(5zU<p54aY;yf>MM!222`MYWC&yAm?Jct=} zgr~oACjMF6f*uQ^s zQe9K!67-6A=DX84&c#T<;KtC8ppTHisAM`yu}&FI=}$Re3a&3wr&i}L*Dr@sr$Hb2 z%KR-}Zlq}pZAy9JelEcr_t*I^oCUq(fRo+h*%Qt=qT?DzM8`0v6-SZVx?7Z^^10GE zk35-QCPySk7gIJ1ABJ6wKNuG+e;LyDDeBoLEsd$~BMQ`Hm+H0X#cy$aD}x^;?KjPw z!Zui3oM#UnH{u+%ppU|cepZU(6B((^OroAZAuAXI2DOE4=p%S2zJ?4n#K8$OL_ z&TtEVlD=`iu|a7-DMksV#L*yEdsf?5Z&2;1rEl0)Q&L^4CD!oJu&J_c@U}3}|5mkR zbJLYz-a6!5Yn6JY!r{RYqLsc@)t=#%_NM*vLWx1~qdwkg9B^mzysCSvtQS>;V^DH1 zHqwVZnLVEs+X+K`NRw36)l{#uHj-iC$=9J0s+VYDPb5)W#Y&~ZBL2jIMT@0lMX!;s z0iGk-EBtL>tw(Enee->|cgi4Lq?BZ2X0W!awpU`9VzqSjB)KutCC8=w;YU>YBu1vP zPIzVKh4jV?7BozhLNEGN?SsaF%Tnep?y=7K2WJ;6FT$@HaP8ej(}f(8ushT+6c$i_ zUg^z>u0p=CtlKOd|LShOZscwneoBG)pt@jrfy7`O=r^=|oCdB_yC%IR#x^Q{1b9q2 z#4ECCh8ofumJv>Kt=VzYdQ&||hp*Jc1pBsQhX|EKt%+azmIw9+?FbS( zM<=KXDG#W5kb^_Q!Z|Qlx}kTK?L>Cit~_=`TyfgC+EhGQyy<*YHz`RGz7n&NAQ62f zVkbEl$C9>}A{TR~x`j)C+8}-*Rw4Eghmb6mPL_<2ESKpm?9We!Ckv4mOjI$gP_55V zuq2p3eJJ24xRA#E`6vNn!iz4!kiuX#l;tR4PWmRjoVXXG^z+WmsBc7}6iFpSc}?A_ z&3*K^+w$Txb3SX~a=xy7PP^64YJ>g01^6WU?&@TP`Otc3g*JL8*1_eaBFcHMk-5OQ!cA)`IiLAy+D?d3&xrSG$H-7uJ# zL%r6D<=MOw`VnuT(q5@;ZqlgJwC{O#>NI#_VqIm;xK`J?~PeZ8liTBk*)!kR|h)p5WmBKn29ZxO zN(zAdvkVRZ7;FXr@>v4>yfHrS&%e7dK>%Q%-w2<#U>49{wZM5Mk{zpzDSF`{0WbN?pVSNse=64MZ z9W^b@|MLDM<^27WUDnLi$Wl$v%<5A;pM7vMFwt@TtNlM}{?p@sQL6rjl8u4>zbXH# z=1)o`2P1m{8>`PQ9l8HwnST@icjdncIca{6{J%8uKWhHh(@#BfLvqsmug$n21CmB~ z0RVUb#02>iT>($i!8{fF5eLEe@#=UF;oKqGT?7TA39>{*@`_3IFWPncpBw%0gz|s* z`zxA>|0HOCfXNmp$_~8F+|a&vWuqR}0w;{#*mZbV?pX8Mcvv?wF>z*AvK2ia}`r8$a1R_r&lua26BI^6+RTO=Vjt7YF$0dpYq$nB-!U09} zkE$&G5tDy#5ycY&m&KPtIHipHvjb6INV3d-aKZB<#ODoU6sxM0{j+a8K=M4#FaMM@ zCIA3=ny`C<|NlY!M_vCfE#arwjo(az2n-Po@aMH^3RD-pZn{kw^$&x0!HEjM zuq5#6E<46BYq5(VqLBgunh`pgt7LZNOC;`Y_e0s^lZ#Jea*)U!Os*}4Rx|$T15Mo^ zhczDGeZlf4@s1b_<9r!A?f^C0Z22bABI9aJq&KoKYS8{cR1H!Tt!=UnXbv$R$EFGd zJVRWRS5$Okf4mFPT$G>y`L{8whJ)DePf#q?97Jbj;fckQ&yBl6l+}XyjV98JF4dY4 zZ4c?OIqGH(%5AU|M?X)DT*R4upO&yqDD%!dI14}=j2eEbHEF}%=Kh-;q6r|hisho! zw9Sr3IceNp>JynfG_r=IEIfdYlzCFA%JhaqS-o(;hA;C{#)sLRD#C%YI{MrNGLlBK zC~oEAWUGO-hQkEtci9kul&egv@R_EF)dJK~OCkAX1%GOA_De+GZ566Eo+!4IXe z)shz;8Sb>qdF!Af%Xj|l_W@dU6sXzz!J`Kxj}^h1hWD^G*4-V$U;?vLZ;+bCX*UKU zgP_E^lb}faD8Ij1CSPSM$L4rgmEl2fuHee3hUiO>!lL8N!2Ps11iH3k|7Njx}3P$2^r6ADo^lLf% zSU)jvuY7ab$me&*#)+p~sv$8QGkt%3BJz0$LP+76oh|XT{&?8nf1|WrKrj%G62Y>w zd8q+1Vl)`It??QaRuWWt67|iSqN@@LO^h2FVo(%E?4n^yLr~9(HXMr+yAQaC89MnT zku2viz<+}pH>6N#IC-8vycMGc_Loil2nhjB4vQ5?_R=Qs_?qt^@)RCUC6no2tcdnF z^Fm%N@lve$fzakklr)wbtSIWu=NuPIU0jmC*C2?)-FcOD7&2Ey$JE)wuj8&V`5u86Z03L4jeE$mq7gB1tv@BX0qdbz|4wcz_w zzgL=S1YUq|;pq8!UxAtynhxGWZ5*N>Q!OB+ql&d&;Z=n!=1Yjy%d%zV(;-X7QH>ti zvA+(4_ed?6q4y_sueW=QLeaG8#(|~MB!Jdm*}t4Mj+Rz-kZ*Y2M6|s>pPb_&?E1CU z7>-v=)p<5f2blv?np9}UP>H}Sw3QwoKh3G=42#w0wO=h;oNr&4FUnFMdzLK_g!~lY zAEnW#NV`2f0^jtPf}h;D9X4%NfM?gTp>(`sfQ5~N*qNAC@ z##Slqp&8tz4y#l~MWb5lbavq@KhScellkSt<6Rl%VQ#Ak45o1>r?dGvEfvyrt6OzU zCiC5Oms}NEVjQni}Ax~2ndY?9NDIKh1J#GeV}%dVYBUKz4DBl((An-f7U zV(BeTmE2ui5X8}n7fV%Jz2Wp2I2{`A5B;b$mP__l|~nWE4u|?;I`y2miB7bV&*M zqD%|6X&q8UNh}LeWM-IUg$I>-P*di>aTp_o9%o!~WekrqkAzPDFuH=sInuTr(|g`a z)DfR4kTM#MA)=Sia%y$Cpk|wu-;ew81N`afATz&!Ir4lq&F)d$ zY)RWY{WWT_a(hs<@5IZ4&Tu+OB@≫&KUngY_DFa#`pZ1orOgNeGEyKnn^#kW%$} zPDM{=Bo>)X3DNvWu-CI_a3nTS1kOg2UT&S~`WVPMdiIg7l=o2}s?li@kL0zQI!f7? z3yT>+>RgKM-rRzAB2E;y{&B6*4T@XV%$xn;CZEUR34Lly7z{SEqJ=gZWjZnuwS3WjecxlAIRelg;D-~JTKq%ff-lcSf6 zq-ewq{z|88MCdICe)3j9y))2q z{=K+u2Wl^Sb+Ih(2?`0RDY?hq`+n8!$z*_WaEZXR;1?~8a!%fn*-H8OZf`K`ob0xV zR7>Of8!yUOCduAtg2JeWbHpktnS=2M)yH@y?l;`lpIjo+W((Q5yQ8S&au`(Z!Ok(^ zuSQ91ugj?yLv3uedzqbuE4$aPVU?nf8Ef?7nHFg)4PIan(BqX3R_U>GrOHDAb_Q!^ zr3+>GC`GM=tgNx?VYxMCGhZI)CgW8$Tt$!*zCOQ#jB;G~5Pl1KC)8lJp*M0Z&AeH2 z+7CQ9dw=0L#u`kXD``{6I(3E2$Un&Rk-jd0x=Lm+G3tGGy6ysoJ!~5wk(v&TCm&we z@V00pkS~;`dSQ&RUTY~OT2uN!y-jw1+`+ZKY#w@9q0z*Ef#6tY=4aGB}} zeD(|$O|CJTP2DMzOutU#yt$nrMqa(fWHFEsuTTmv!D8aAkOKXxUO;mGo;aSI$xf;-soc(`rhH%VS^dNUXStIMN*F&jZ965F&JeeWicB|()v}4rgm0SJPX)KdNrLs9pZ0D?0 zwOSv@!X$P;YBxZb;6vUA*V(Ln3)v432mI966Q8F2F^4n5&`k^tqMG^%w8W%i48^ay5~|h0U+3pR?_`9Z%zn`37x1 zvkq3fj;iXIEY>AAz{Uy`CuZ3C)q(}xJ(cpp8`aL(9K(aS9V7>i6>Q+wCCa%8p34Vb zWQuu3jy^@fW2rBdErc7ya?jj8uTvhx={HarfS;jw24=!>gi;)3EVWR1h3uTLe5Edt zes8q22B&D|i)HLkZ6T3hX7;;RCzF}JN3em1$SS%+Ac*K@0^#L=Mde5jQJB%dZD-}n z-Q3j1v3`H(P}SDAiekz-V3+e{B8R(&D1=ymRz-vBrh;6y2X_aHKd5XetAoT-Sp}9 zBYC#Hd&at}UA~d!*Y>bAczy4In_`!C&l|1YG*&ub3%(9(+G5OgiR?r`*QQmLEPZX z@%glNG91Wz_foIkzi^7KUdd=+gF%u6nw@Fj^{Eg^;X$7?ys+K@6maf6g}&d_ZS&P6 z(@UBDkfFnMir|KNuH2*56Z4Ilebl~UN}Zz&?BnxYq~WY`|zjSqSE$zx_eeO}Z-5tJe6H{5LS zg+r`l7O+48DjoCgcn#l$+0-zyx0IMx%Gb@>vcQ%4(ywa=ba0El!+DO}3QK#9F39DW z`z(#qo3p2>2AAEH_oh>UV^!07YNYMuCI$3P+F9?a6*GUZjewcf+MGt&au) z&o4Eh%lG1CBH6$@O1<8UDxJNB{kifX(D`IuEyMG8*n)b$*d#+9 zSfG4S`{7-4#l7hPU<=lRc|Si$v&=1K%q=ZGslDnvwDF?b>YCY`YX$y z^YyZKpk}(=f@S71faBcvqBC)l=VcXZBOh8<6BXk+189_HSFV1xi+v`)cJz6=CcYHk za;BF+shA&hW|7Nr(|2i2tDFx`H531A&U~TH?wi}uUZUY<79SmwQ!H;M?IdY|bBKib zT*o-6IlKr=vR&F9MT_gh>C&hwsEHY{TW%yzxpHocdL71SOMR(P6tgwldsQMbVl6He2ZKL(=+;u^%eQ1!SZ9ffnPAg#vbhqW(i&zkw|5E z;~#a^@)9~fUmr#HH!1g5kKHe*i+gJ9`|ZgpN1TJc^11tTGN34`O0w82pDMH4RI2D? z`h{Juv3w{5eGFy2Z;ZmH+_chsFyviL&@i^WMaXmRmR+$`hPu7|-8H{+S2vu5GI7G9zvXS5HYBI>`s9YubtuZ%;xeoIT%anvLc4u{bn&|){`uSqodXru z9ge2_9%c-O49-#Byv1tnAg<4k_*J3%f&jCQ=LLLZZfBt|E899PP%A@e`JWBJ8b90OZwQGOXSz*>`pznf(IP= ze0Auh;)HiS9$31IsYacT$uRMj$>ROrEwh5LA`ID3r zPO$SrJM7PJOfib{&=62c4WiuG;q~G!fncEX@%}a^bXB$#oJD3@<_-z;l(hw>GEf|= zmEgNnYg__lv??BL!tIP1!H*ed)TVBV5AM2C>6v9vk9VTDB)kI&1SR7E&0Hhzah0BV z@!Xm6uK9pbg%5O~NL6LM^_A=NaVEgj$gb^&a zlU90hjNy3osQP{Ia3eftUZxTkdL}e}lfGD4%c(HkKvS&{eL;y-J^mK0Oy%YNlnHty z5DKMY;KEr8EV6t$5|Sb?7juMZwiEzG-Sc?WIhZZnmrt45 zO4CFoBHtlOo2M)*LtgYoz>U?~=+0clZOG;*rhi|(L`XwyG@+DqrNNSEgkLY+2X(qd zio-=q-1Hl}D3$f4d>7YRr%k2$+~iW35w^d`6aLlQBm)Jhe)J^I+bkvgkg1U)0CufF z=jH_TQ6)AJoa)JZg_^;<9#`GueG|`Ms@J2rYG()1`~lX*#%@T(0pii7GOWt<8i(`9 zrCzVpv)l72+eWrhsY>fj_eciU*70)N$mz@O4!3a#L~VMf1|qSft%JqvA$9B*Z7`_0 zbmwOB9$6&(cycAW$>|g(YN8si)_Z?g5Xf4k&y|2bOh{c|DK;awevuC3pUR%z^&L+{K6cZ0tAM5Sr z$uc(f6R9k-oV^npA$QNMA<|f{FpuOK4VEEHWbE3Td_Xi|ILq1BeTXucU(A5NhX(_2 z;xL!Ftmzo~KR{f>Bl~Q?d*CE~Zbq??_^C0NB;O~TVf8CHPU)dVX9mAoCLDs)T5+8o z7M{O_p}d)J1B2bNeAu+OTv#_u9YLVq44R&uX6VmfeVD$tHD8a6(xg}&s9bFe87;>R zW1!hpAF;y9MNt=KGt)zU-#?+rPkaC9VbaHzNPD;xfIYHJ$duHQ)t)Jc zSUc!fnVe+&fpg6p+@ka@7j?>xL>|>pDEoyo**YMv13obCmj0Ag7KGLx6RYpsp~lY$ z$qWz8At~u|k5;;b}oEI=4Z>CxT?EajE+QT-nK2s`{Ib|mdh34mk zd9|RyeU5s2nm#axmV7^Pw*MElK8Bp~wTV1sTnbyv277Av)x5P14GxrnA`iNO)o$bp zqtOIb zvV&q&YVBqnTfhK8EVeR~SMVDM*bOswlq#!!H<^v0trMkTPHWvoH0E|`Ye2y zQfHz1uV5#zHVKr;M%_L)V^@r3GfDa7UbeYIap)cQl&%w%B zz={JNdiEsf$jqpg>o(n$jwsuojrxPjd`A+g%;`&KZW&Tx6A6Q}p;4rjy6O#<=x!gq zu#Vve;IW1``%>o*U>ES3tLgULSMQpUk(=Qzb5G|PKX67vZ|IF3+c8yn93Ou?@fHUn zJ2}<89RJd*5FYX>KUb&>Ob{g(_yS8OF-h}+h1KPOla4#^vqGn{oAB*yVPmXDKOa&) z*PRKG={1UHAjzxJeAk9Fcs>+k!RCv!FA#^rJmrpcE8mUH*`+gS)_IlklL+A^Oo`}5 z1$rFXJ#0u?zfdIzZoM`TSWMZO@TfZeLwWjJo@wRul|AuWLYo;3KAe!-J z92Bb71z4n--TS;dRMxIq5EraO(;ZJqsHvHiWIB(7^q`5((}w}F-sI7ke@?rrZAa$? z_(b;SKH};sNCJ&U!MfGcm@U2LaJtJp%Q|-H-3JXw20i|g=E(HRGK8u|1n^AZIIX~R z$?4|=7^=AOP3SC>*PxRnDi~ z9fTB?sPNfE0#lF99QalIj@erA{Lt%z#p(is%VCmC#)G%Vok`+z5Kgl%uoyWf>nq#D zb_Cwd>KY+Qdg2q1p@CN5Y;3GrcGVjziq!K`sDoC~-^vDwl|w?#nhv~Aa>Cx$%ak*Y z&Y0tXSK#dS^`d&!!2)4vzzZl`U(Q@WpxMK*BV^#B!Om^hDY4ckxEu!Nnkw>X2ns%5 zqTz6D{5L6iV9+f!&uCGg>21zAcjz^R)=;_f-6Jpx_#lYTtfQkl3#1u#HmhJHAXb6( z0R5EE=7~vt1%jdH*fd=ZS%V@)jR_4X7p!l(78y-&s=9LMg3SmlduR9en)_gF1+Z_P zg30s15r9=X&1MQEn4OXXEUN2MmTq!pbD$_h;(Gl}qLzp#v#WG@>B%Q;m71~)dEw%Q zAqT4T!>cOwN9I1?gcCHI&X%)iSaCjg+c=gcuvf;PL-$5!m+OYgcG$Xkzz!S*`a_$~ zW5uG$<99!I%0>nOUAUc%7ACL@IKxf2yibdkvS6R^gvj=XqEyMy4{3hz!PJ1%tlM{+w3tK<00$U!PXDxyx z(~pmZGTCl$ukKU*82OH7N>fiPZ{GRPt)}y;U)Z|r+7jW~HYQ*|B;7!}cefg9p;pii zPLLQa$vvLh?F*Xcox+7^vQV537&OaNlbr1}f63L_$k;p8WIP4?n?&DZm&xm6$hGvv`aYUJj{Y;JXt49y*mVTU2CW20mgV}Z zwLudd$L+~@<9dwGtq+xc?JI{#!m5W2RB}mgblUF?Py;OY>td6!^D%R5tGth!%hpC2 zEOaqHUC%i4?y+q6B2VdB1=Zfc%hIbb2<)ja%zueL5+k)_YKjytv6`s7+ zDNbFISpFfTsOX8OEOsXuW)+_OodYYb)$O<^$d|h_^08lI8tp~5Jg`2yIPxW>zyLt6 zI*_P0we4lSby}!Uhb$|Cl<|Fwziqy^{FfV!rXjv;9(*^mDl)^tsy}Ok>z0r4DIO(C z(guP!z;vZ*HDs`p=US&RMB)h9bMMWo1GPod68alxe_`Z1EkV>?ib(!Q#g{{SCE;@Z z9m$L4NJbr>hxF!iw&NZ^3vBN`ypPwnMiYBPRWb$PhoE~gW%7^N{Ts+ozW##rYyhZ%xRh`G5yH(ojCCfEtA8W3?|UD6pqMjc0M<4mGc zi0sUcX)Q&D2|?^I3nO;*)B2u=To{z#Mp()cW(wF*Njk_AGIfJDhO>6DNK*z|KuyNu zP~l-%cnT?znVryv#2-6FU*Qj_IJ+NWZ(r0tXg4GWVF;k!_v4f zqM6w5FRZy9u1GSNt=VL?&n?y_+F-r752?bOC?$gRg_uSTzwKvAi+SllB2yYpM4UnK z1wo#0sPe64vXtpmrej_$OeUkglkvF;?4CS7%diHMgH^e+8zl*cd4HZ&O0_K4TZr*F z^$QJxl?B-Lu2+hSl3<@i_*l=}Y4z}Y^0~^OnbAIqsyjeYVAyKs+e{}{(wr=I@^MMn zv%Al-ZCl+of>DXX$NfYFT736J(Yw5a{CNj?9i zRJqi+#xKmu@*=$5TX5Z~pgTP42LUVks&OkM07~W;0Q%hu zX>It4#rE#-`E4@2MXx~awR(4*nypzdLF7xVXr*1smrZ{TCih1CT<WCW8sxr695-znNhBugpK{q`SB%Fx%2@Ax zmqsN`>KL(mYv&~qg~rAV{}7^5Uq#%R-4OXOAMkI#oA7uZOIM@`)J1$9CBA;Zu0F66 z10uA&K}f1RBYHJvS=g{G{raAF#n%SmZE(dG=P0w(Vw4&;wV7}U(tSboUb!Y$S>X-| zn*0%%@gYJk2xhKXU`JTi6$Z&b%S&s7(^pIBffG5d1Pl&>{qyHf6Gm?Vz}mA{e1uI%B*HqU`m{wmwVGo3ybP%>&?7jIP zyAoX4;rz@tYvu{vk*wIpgV3+n>nWXn$W8H~HPm)jTCt=0Ex&FzRZ+DTIP;)(IOe=o z7ivx+4ixeE1Q3Dp>!PH~5i)frI4zL-XQ@mTU1M!J-i0%~_SGVS*mW>(O2?ju59>@f z-8)W)45}hC`M;qhWN;kMJtUML4cp^%sR9c6_KgM&H76q9igg91vfNInp+aSBx+dYyUZ(W zx{9hG)SqFI_+Ww41lt7mV<1I(kU-xuZDt(SNUOs$zuH6#=O-A(cxA_P=+Tt`7ko8p zLImFkqP1@ZP?+vKTw?sdP14%HEwQY$ZvASVUT$(E;Gj3!FO_oNgZx_QJ3vr`k&8?N zAC^KY?Y1FCwA98Xm5~IyyTzr~Q-nSBu)MWkqWib|6B=_ZNcuejSjjDY!W5^Ei_Z8R z_H<|FWv^RDJH-Vu-g@36+5fAcdK1pbwL6oPDjFn6Ip&6sdc3)6|~s!vb3#S zkI@hl`bg>yvoEOb5?A3p1R73AiSgg9f zcvYzEL0MgV!#xb^id3#uyx9ty#UvTDBl2WkiI;8LxIQ%L<{&dYZ54cemzo6Aj5(IM z4*OZ;7F>>Hp)^23km>NQVEDH2UV`8K`iWhAFf9r}koa90S3NG;_t%o>jY>RkyI;;{ zzQE$_YU8qAjF5Ky=&AhQeL$J zX1h}S_j;_UsA5VipbLh9e;p?`m>X6&9{v4$J>B_idp z4wR$P5czFFd&%x@nGw4-Q2WC}W4$opO=Nb4U|Lo8?54$P)cC1m!^N2M;WM{q;BB03 ze9L+t zvp%R*;X6q!qq&D&Js}FYqAZH=$36$cTHVqd3b=zS#}ZwRXz+(klK8k9%>01`=AwAA z=^pY~?JWix{09#gsN3$)-Z4ObbDTmMXYJI~^vzy15;aZov^Z#rBj_z=7SEc%^-Cai_VIq?|`{d3KRd&8Fhbsl1U?3%Oix{3DMe` zxhd)<$pQPk?FZ7SMDKJ4*n)5qW)9u1qWzg2;+9}94>Mni z{<5kFPIWxuO0zT1s*|0U^Vg!ai)KoNj+lZaj04TQCfFqF-c$*q0!`nON|pt4&B8{9 z&1a1wTROEy_dpXTeamknR7j{cZr|{Mz(9+`%ACj=NPK=BAR=l)0$q6+nxWqT?dlxSK>K1QXQ-f zy<(Cz+(u|J=y5_xM_&iIKx7wfBjYChCYkB)!agv|qQAO{qzuA}gWk+@4P_p+XjKc_TDun;P4!IEs$!}6tM8@jg_?finT5A2 zu1q@n(LJ1PM(_rut3gtv7;c>GL9;WLSJ2meuKJtg<+mhZ2(BApi21fFkK6r~ip#&*?7xHjPGVIoQSTLWlo8zmKV@*uI$_b>?i;>NaDP|j>%w-7$2dRO}-t}r}}G+tq>i-9Xxxz&@vclIxhXM=!^8J0V& z4UDTE8*Fr%WjMCr>fgd9J85T<@DJhG18~o;itsKG23p>;ta0_cir#r5f}$9&c}xwP+$^8^P} zusZi!U}LC${rHSNeC0RnmC#bV@C#m-mYnRPw*}!P5G!%P_B)6&LNg3pNP`N`ArhP0 zC#9|m#B?rZwZ>G0DjBQv%7gm@#Oo7Ig>%AnlOv?k)3@vFl-rcOT1gh5ljfcyr1Ap~ zoP&4V*ai_n0akC^~LFPv95yc9P%St#-V716kN4G%vn+*S@+fv}ut9 z0l6Z&O3kV~+|aXg^T=ZwF4-FnQV@KMrFkpae>!2Q^ghh*^S;oon*7oFndk5;(U+@2 zT!ZqL*yU_ab*+zVIDXrS(aH|<`Ol*%i-v4n{WKyFff#?rU->LXNP{|_TSQMADmp`9 zH0`>a>a+z69=D56dgkqYi|@q8b2Ex2S-h%0$*> z1cHYxjw2RYA6Dp9;%~l*5Liy1G~@*`{+uF^*DW}F`f4>le;r~~7>KmOd|c6Juy`OP zU5vT4bO^w+9?9{bw_YHHsaz^FWK>?79lEo@J`XqZ)w7gO63!8Lr#{WUS!_%DOLrZO zlq2<|&&S(>Wue?cf0g{+nnH0>`m@ty`-A97!?HYvQhU2cax@1O5=^W$ioasnQer7&Kr-5sR z1)vowG> z84&O(#0GNVOT`7-fFuNqma0B{$b&n1E}g_4%3m4Oy!J%4-;k&Cj5ifUEAy#+WHQZ- zLwG%ZSg(17t=UrT5#2W{iXx_(0^LCUva`WovM0PeZIa9|1MvD0(h2YAr?x~ko3 zp1dL+y7QyvWdPGAiH$Ps*w?PGOa+xIoZ@ZsJFLFoe4taEWgt1ms&V3i-S-L3rVLJq z&wSQw1+85c!0gB))?J04g_;$)mr*w=v@r4>lW0DT1Gbv*$eE;c0cYoKm8xsj>X5Wmc9#v;t(Nh+pp8Gq+ z+sy`0X`2kxkCfh6l4hmRGCVtOz(GB{S5`O-iN>r)#o!my-aauvKhll8u`Cfnx07X( ztxpBy4ielcI9~|um+;Ucp4+5^f6HL)1w-+p&dV55=*7kGPo$k7qsuXqLLyA57X z#VWB)nh&8QEGJdU+tbo)G042eje>2&$X%*Rj=0C@V5>}~+Eg@w>#~@x!kIYPJDdg( zCqf=Q{7PKy{_k9G+gL>2119!%tE%+WS9{erS8&2xZ3X-Yu+w_1AbEGi!X#c&uY)9c zpXLnW6wD0HjfnRmh~)q+`kO} zi38v*1A&_b>$Zd247NW(>}rpsiH>D~{A#`%G2*lseAtR+a9|~lX49|79>H)7d1S$; zW#eZ1-wXgC2$B8Lns3b0Lf{x!OyuYM_SRW}@ZBq;jx4c*VNP#KWz|LBdg3qpWGSy8 zBvU6OpVNg0&p<))>?R*VqNh>kQbOHO=}7V_Z^DV&ggO5XYpK8mBqd&Av=%as=<}JL zY~HHWDNnk&!}Ik>V|Vi17$H68hdR1z`Zo4=GSMzH{ZJ&RnJ0Fdlr4j#l^6qYn+Pyq z1L3WLFgD%naO;hhVYKwXIh$Yo)-2ihXf z@Dq=taJ_a=|7RU90zwvlO2DNWU?IHvbRq z>3=5CX2B<{?6#m;sf_d={M3K*Q-6q6`G-YVp#2zGq@-;8L-)thReopR-ySiDmM9im z`(xCG{web&&%ZE2$qa>irh)-j>{XK=Uvnl!k+EW4?ENSALxOmh9gp&Cr?&0SPt`s% zT(Sg(GZ3aQ1^=NIjTm2yO?u-oLN@#T7)L(78iN%SHlOpfjYRRlSsO!@OgQD1viq-C zQyG45D!98i|1fSK#O_$S2$xXpXu+MuTZecg{vD>;7~*ft32FRPl4g_8-<>F$9-J4| zUm9d>NGF^Bn1(Lu7L5UtMeFats88?8Qv~`Il7;z1p(y%BwEq(aFnlaYF6wQS@K3|W z@dL2KJAU&Cge>mt)s{L={taeo6FC);(U z{`4F?p-)dt$+2dk`D?ZQ-xe{jpEGaxK)Z_gAA;xn7F@0|6;4*vAfT?ZOf z#D54b2Qr;kRN5Xw!z?imH;k1g^oa?>Gn)YwOJS_gaQVzA_;iA@-`Fwf3|8vFDD3u- z$`~b*zw2I9?Dyz*TGQF_c_o|-kKX3a6a@0}>PNgwdph8io=Bk}+)Ve_}09t2>kklKP>W<^OoFSfMf`SEp( z|5Hx{a33ra*q4nN8x&)W`cU1b9~yk<^T%WjImC$V55%${FbQ}mW1#PY)PvWBLxz}K z3b&GawI2O!nMO35o;9L3BX#4Y-IdSTU&(0=R%`otTB{tG`!K!w2SWbuJ|veRs%5$h zd&~T%_o8UGU&lKG(FBg1h{04(SC`|mtFu-!XV=)-(*XUDaccekAjqXhwQ)l#$KPFQ zc?uqg*DiOFWaTi+VTM%s<-Xkc>ti7BmvlT=lcZ)~a+P!lkw1RjaOU`kTk&n${=3tP znFlM2rw0!t$@KGg$r%@6`N8b?D^8l?lxlPfARC#yS!4hXowjZa7en#O-vWKp!+MMJ zEaete+ETqePK)J|*moMd6fl8F8N?}IsyG?u063s5ife@}t0}|rJmv5p@&-ep(5KJd z6*fyZnAi#Oa}~O@D0mFblf89q@R)v^POs0I%jU`S8tUo{1}CdgR=t;5O}5k8bm|o} zJWks&FbhT$RJ9|z!D2~%>fO7cDVQexJWtFgn*@TC1;Nl*{Ooe%p?@0L@-FE=9-&PH z{;YDVNgo!%2EZIx#=6?IEzvSrQ*vLt7VI1kx_LnEg35VgnZINEY~c%}s1HO%C`ISs zTs7jD$1|fQc(ap+lXV?*;@U(YivCNUa*6SXoC9Gj zWC4q5^u(45Ln7*nlz`@c%?HcK@MGD$3~Yjx?kaji545Mqf=vNAJ)}JJbFe2vm&&i7 zE$@E>vE(Dg%9;jHI;AqifvjtI1T>p&BR(d3cbvMK0c6c)RudLY>O> z=5r%n^Lfk^e;#GjX|joj7)6Xf2yZkB*1k z0j5)Swdq3~Q|**4^qMl+82-syK$|mSpLD>dUIZm8zV>yb(Rr2p_TS) zcyV>#-|{p&qy?#4)8plj4ULHj4Ho$dhPx_d(Id`1Q}TqZksYw^#9%$n4gA6vPAJl01%_k@fN#ql?I~RE%obZPIHbBve^}yupYCl| z@TIg{f>S=s1Y#~Sbv({sLFJnhRa&tC`5zK?%1HxGp8%ID+0&LALEqjqJmQUXETUfb zCL1K7rgILDt+bl%9L`RaNMX6f4%?Qy9sCyyVCL9iYnRax7QRUF?$QDdG$Ub|K%
g$A#0sC*Mp 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 NloZsTLFLRs{|BiAtGECF literal 0 HcmV?d00001 diff --git a/docs/migration/guide/img/docs-preview-required-status-check.png b/docs/migration/guide/img/docs-preview-required-status-check.png new file mode 100644 index 0000000000000000000000000000000000000000..d5ac88e3d979680fd9f8de6803e050853e564e5b GIT binary patch literal 18415 zcmeIZb99}}7X}*JZ0xjg8XJvmyK&Majcqr!?Z&ok+qUg{`svqR{eRcGS?@V#GVjdZ zGkf;vd1iuTrA6Rjuwj6JfZ)YM1?7Q&K-K`^WGD#0cY2o$91svprKx~`teAiRp{$LS zk?A)>ARy7;xCBVWm_-z?^Y?;4KOku2NEEYAQyM@NS&*_W=y8!?P-FpovXw+t4L;`l zfQBG>qb?; zWFF36e9*Ah3y#|*dimg7FB4Z7Ie#k+QjwKnwnC+K(-WGK)OUG z;X=&HSqnLZQaZqt^9?}kz zNyA4!!pgfF+=Z6NF0M)L*o>XRN8i#X9b+;L6XFW`=x)Grc~ew?VGQ)65!TZwR8ZO; z(c@F~6q9xJNCqw4klM-6|~WNL4ERqQ1m9B01pt=Qtm)t17_U-f8is9 z0-e;w+VCcggdo)=Q-x*mag&8|@LJ8pRrK-QfMP?C_96d{p$VqaDfJ!F&bL1k6V6LT z7t9T88wqTakU`L2k%&f=fWfyEpQ_6Q?2=cROFOG@zCFM0AE- z2tAOmz~6V3Z^)tX4Q3sDvWTVl;eW*kp8Zu8`V+Jn_fH@tpPyf5v(#lz3!4kIXUu0X znJ}b;7$@>gKGx82;EoCul*1H1#313?}B@{iM=JADyrwp7Y7u>DZj z9&78Q1~*Ntvkzw=Ww5MX&!Gw3=9{G#YY!hY+jXth0%u#O%lekYj>zg7bPfw$Qgww_MrT+40yR8+F;UG{ZHER-hZr zZQN~iM8!$+u~%JH z7OhHTw-zE&`dldC-5*J6*_fQ3@vWoSZ^x`(TNlK81KlPeqOycP; zEX=VDHgrAIL4W&dOw6=sJkYMOzyO5H&{Uov}-q3QnWj_PiSL8_JFmE)xPaK~)N()*x@(sAqzWu4IS z_H*g=XIyxM2!(E}%j$cLeaFR&9fBjBvv;lzHa?VzDk$xpdXxF=k0H01AsDRSK77&} zWgP|lBbhguIzE-1{GI5XbYG|i<^pO0%ZnZu91_Zj&DsgSqiij*&3@^+E#idV!rh|c#_I9eQ+0#-6ABzT+eb7qI5Lip zXX3chHd2≧Kht@v!UU&*UoPp5oAwMbb%DV^1BwzgR3xN8DE&bqxkUS>J499X80+>Ws|AhFgT>eI2Mu?ex^ z{q|#JCb}RhA!hzPZQQZ;@#-=9!t55Vji!grNqKq<*McL8{Pt5HXb*pmLooeJoOOm(R!_kivH)EhRlcVv)$(MgoRke zGorJovqKvAPZqS(RLgQKa_Nd|TASK(?JDl)@vRwmm-qIkj>|eKMRIDY>~}dA{g9Au z2u#XYigCC-_#+$-Te3Y_cNwa@v$)EfnobYqwS`Uhq61OG%y-PpBC`>e<^JY*wcY(+ zBUahZoLd^lYR>q$TiY(c*oe3gBH3GkE5G&EV~QWO={ zvo|$fhps2pVHCs%=!|$2@f5q)ZKYl{p6&P8LtB>mz?&VKyPrjppb(5Ks#st$m z;hvNaB~On7m~#ntl>?QXmvN{K!BgeJIvQ<{o~{f@EbJ6};tkU|Krm|GzkmRp{{$u! z0p)821+pF-apR_$81eKm1$hrPHo7pa1l`c30@7m#0wZjKn`{coZvaN}E1_ov($E;5 zJE7*{u9pcWlaCr@;!gZF0Q?@Al=Mbt|E>V4Hq(CS30%wr6EHkfiV0Z5DjTYb8A(Y2 zQ3AqHK)`{fKwy9nFyMm?_y7TcMh5^v0)9~dAHhtJf8TwkY7PSObqa= zpl@SnXlZL=WjA5kmJhDt7l;K)sWW7;`^^GKwM57fS`q;ogSf+ z#Wzb^4kvEnzfy1j!oQ;Fhzb8nVrR}xtSTi-C}3q{NXSACoAJ0Ie&Zef6l37 zYiJ{2WdTrW$Me6I`A6;VFaOENMfa=bzggmMGyfF}urm(~7u|nt#sdRoyaf#e#8E3I z$gk)Ge3}O7gr;$C6}z*3*ocC&*uT2D;BfH?;;mP+$t*f z)9%Z8)}UuwbCMw{%OZRVHO^JqzLF~}E9L$-wE!7T-a!8Kn1t6z|5Ncx-R7w4Z{+~UXyNnfT852uhWbNG=EWZO@1^4d z(I({EJOv-%0{f$WJz>;f&?w~5BWl$l?d|P7!KfdrR;CdDNb`W}4T*>^Dk~eA%H<(x zx!!cB{Q8wlD(WmtgRGk(me`Pzq{(W%jb^?~3ov|^2Ph<`{82YT7gW(?>Lk)>Ue9+h zVK<#NyUAT>XWYv=;#H*8k21K9&U_fZTZqv6KpM!~=*4g>c@``a`PBja@s6z@=a7t_ zA8mE=bx-g0_tqem-q^X^_5osIs-(JBbs{Nvrc{v7wBB?0%^u#yu|V>rS;1OK{arYq z6iL&kFpTvvzuB9s7%bC&HA%BafAh5jWXJgrFW@sk$-D@cOuiBNt-1L?^pG+y5J2Hn zewP#Z|G~6DI7wp%A^&slbPVsAczD!vCWR>1GB{{ zyHmX(+NCu9^(xlay8k(7loVllMux#ys@mDQCn3Nc6y)qx2+K@JH$s814Lw}ONyTFq zm}aEYxhU>$(k}x(&-UQNI>Y_jP~M+NfF|+K&`1;LbfP&O&t&aHunvv8KVus<$b4_# zXzP64rpdXu!!X4U{I|4(Q_zI1U{Pns^W`EwY2gl_5bI4K`0;}M1xZ;v7xyrfLC}MB3ks&*48pd z^#AM9g3!QlvDQHkhSRdhtu?iV8)ouf{^n2fbj%T zZ7B^UoU=b37F13ZtCRke>+tx7tMUzYMtlqL+}ktDO-8+hiyV>-ZDtaLAaX>zEQsKH`1 zj64DcmTwgfqaRi-)9j2LjNx=lH0)ZE<<4wcWYw5E(L=v9aaVl4FSOyQsvd_rN929s zL%?15$Y?wkN#Kb~2Jo-g$LoEut)5``pKR7!1NBQVxbzz_P+7;T&Gn0PQprrnOLSE* z`|h;miY2OI*vu|ORhm3|`@I2liTWGET?$mPnO>W-b*se=D$HhcOmD@CMFu*Ull}oN zZw(&kl!~DTW#fX6p;(NfX04FdJP9Hb9ifu0m3jhzS{jaHBv~H*-4_T^pcH=^Jg;_h zO&(6=g@HxbA*VqLmVr2ZL7_>mkGwlw9`t>GQ>bj^BbQ31PN3C__5p_-Xt34~RpI63 zH7x|$jx!o1wu_xB)kuD=GP>1_6+Y;gtoa@sO$Jx4Ors%mgvI3iXt-UkTzV9B#M;Eh z>2i}eQ@+mkQ>B>b{m@;SDN&S761OXCP&GySI1WLNoZy-sNE z^{rWPk|}y(u2w?@l}02fPXa?Mxn?uu{^jv%_{G`Qa5$cKbiJjqn#`im9ptAnOTX{< zELDQU*$Vq&P<-*^glY&lhsYw>7J`i8P(6ool0IfGtmCh?BVte^9H^ zua}5mJ$NMsZU%HcOX19?+&|1WJJKyy>Nme!j{{d*Z1rTE?4J7jVE#a(pr%r$PI$$x z6yf%GwGZ1FP5CJJIn7AXXguAt?tJw=A@g`}5&{7?lOS?*!+VJr=oRpOYX)bN#{ zefgNtcJGFM+Pdv=&s1y039Veb>Qn9Z`zS|La zoPDYNu@o`icyye5S3uc#HLEwf0|Ol_)?Bx8EYmpdp5b(iMDai}7ORc1)=|kr8PAay z>*4OfhIZ!8_;Qm+X6d@rmU2L!&zjFiSXLnC>_sdIVrNn?iM@Ly>IKb2U?=ZRDB9-hkqD!F^H*=_SQ zL-EQzPRp1t121>8OHMaD81pf#Pdte-E)@Io)He}DkC%qaCQp{dR`dE)Zd+yXI9kK^ zQtNr%)GWEnOA&&h*5>;>*9iRlddG+N0I}#?F~iAhot=Zp9QoYuM2`;NMY++kv&T15 zM5Gc6oNT;wsuabFl$!H@oV{ILk54n5?pT>F&0wt3mSFB3?G8t?XmKbEOJLFsJYHjl zLV0I~7j!+k>1OsQ5QUw+h{b%A@O}Z`?ed3pi6Li*$<}FikOBc6PkN0Zm!b8z+)8?_ z1krjoiRzoXtw?4rmbgD#l?3xxp0kk8)a9qpX=}+Bhl@|=UZ*!K@x)>@iZz`s!183Z zT)=CDllab3PG#>k>pl+gT*kEmdP1SuLt6M*(+S-a9R!+Hc_U7Ov-$2-h3gS zHaTh4s*U0t*IiX;bsDLwjYgwfZjS~(zCK~=V2))Z7*NQY(7IWp+t}uovB=`W-&(Fb z2sP%&=pC&Tg_u%@VsS6gFXRzq111G*Ic|YtO&-OiexY6a=Q#_pXwph{$M0>Y7a!Ju zMmd}FmM0mbKFNJ~RK$V3-WyMNzCV|6n%~siaBeIx?7-dkJe&gWr%W+~8oF@PH+g;sZJI-Sd~{GC8|%fpRm z+kWk(F`CL)y8H1YiE*zD>wcQ8NT&GBE(tVKutdE0Jr( ztKns{FhL}rEhuJ2?xw<5(`)#4_2Ii<1g`t-Am#iQavnt z2LZntKGxDh&}s#D4ynifw{^} z@J3zj*?D{RBk|fg95%H|nI#nX%`VX6 zW+1Zg!bm!^f<~yXqM&lLeBRK9P7osPLRtQzJYV4QqKyFi<2fk~M~_jO{Mlk9#@)M< zH5wYG-E45cM#%k3TOQj<>6iaJ9 zh6=*1*X3t~^EO+k)-8C{S!f!gGJ+{caZ1wx`LH*tF(p5q_qCUD$TD|CsS|gpFC6cq zKp;G0v5d(vPHMg7swG`OAN-L{gDmp2sMk6S`cQKV0#e6voh7qJWIX|rZ1>r;x|b;Y zxw`u9#nSz@hkV0#Pg11(Lp;A40_KqguunPrs;;kJ0eg|PYl2_<` z?Fv33Lst-`%Y}&r3eASX&Ezjajbu#{3A7|i#mX`0R4Peydw^LrNnZ(W4E^Pz8*#LC zF2{8sAhRDm8}!%OG>9KeI*lu@2+1?xq5Cjn!sPqGZ4i=3PcpNGncZkowQ-(&?+=@Y z3B799ecHP7Ymi6S#CrvDsmkUwPUA9nELf~*V$kw1=4ACM$A56M7=vRW(Bm%+}N$>J@3!7MjP)> zZUa&|F-_dgmfP2%E?beif#dCuA_mue<8b0&7JSBYIpzdQ#G z-CO5OH8!`EYc>+^GMyJ#EVKB`89SU}@Y|t*I9+ZDVS9U!>f*T*XLH*h*@a0v&MQV3 z=EnuZV^f<(8-xpy)U?<=!YD+1?fsEN`$`fRF#y;vN*Zw1yTtAUp?$*4*v*Dn8qwRjUwStr@nr=g&C+wTNASPkS_o!?m z7pm0dRo8n-8K^nBc{_}oFRJ(4bCZ8>ZdXWvE-{vn4(p(=`s@8^an_zOI@`sBl;98v zEMd*ETH+{CWE7C}>Mhq9${#S%?3Sr>Aki>BN`ITiF2t;>7E@rEh0k-?t7Cc@5_uUA+}B(hbyFE(LHXYkMj{WzaawUp3&zu(|> zWv5mR^G2e24ESrywNZpDT2@pn%IWWZH3;-f01`$&GX3iK-K!)@8dpyZZ}c#L2m~H> zCfx{(_;coD)fT04ch%~W0%CE&VQ{?t(SjVgO!CbFkc4^j_OT8}8x)J<*f;oqI!4bl z9apWsBd6@wXT*b0+p|Z4hsFJ+W=~1q5G*GD2Ze3a$IS`5bvJHNkea}!U2-X@BeO=E z-I2SGuf{@cIlc#d>`#I{uCqVUqt(DS`w850eP{QQ)da@^Ox)xxmZlx%xT{Kl z@+=A)S%cTWV!4jFx^d$r*=*-MS-4Jb;8w`4vB*IK9*dzT^_>f^Fo9HzSjxA^*fA_N z#S;5fB>XP%bIyzoF7e z#`aZS0#4v}JT!w4Rl-{1EkCh*e*aE-fKo@t6EVFczsCHoJtR?r~{LHR_|r z+aDw&-&ce`%5+$@WC+IygiQD^O)n|*qv-|I&zjGf=vH~ zV9=-!Vd}UMjWSif?~US6YD!>n706^%Iri%F;R*I1%~Bce1j${UxA#jW`S`;OB9eGS ze&q-vsyX2Cc*)(HAdj(9jQy${^Y+TC^x0im$QS{O>A^g$uc8!f#_hX^`D#;K(i4L3 zJdzxp@<{x(-(+W&#ZnDc{uuaecZI6Zi{}y{pC2xKKpLlmcgCi~Wh4?*!vR~?^K>1r%ibdR&e3UW%U&)lC{2$}}; z&sQ4}mg`RGbw1f2&raUN&P@HhEhc(t*e2;g=(Nf|CY-!q_ta_c;9=z^pis!4Dk~;7 z`hF-m`tI1T`N)?%DZzpFH5_+QN_*)Q@}ATeA=bX8b&1n^CRaV#xLvf}002}Nw8`QQ zH>j_*xd&SKHL{?5P8lrI@)Wy0njPWh6}~H(DkB-m^}bLdknDPirk%FY*TgI8IbGb8++q` zg~bM^zqvz@_58pX$m{qjpxb`C$C;mXnRnEzUVBt1t)3kNJ~NATvi7-+POGJ`=%ZE2 zZsHZ4@)X+Pw_rgTr@mhCSPVfh?$0&3fWrOMBB`Ur7{)XzGRgJ@`&%~6Vw zy#`oDB{UOCR;jDN%4& zE%@XjbyY5#l|AU+_w7@ngXIqx94Or33M=zl=bZs$^SIYqk5`B#lZTOX7%#-WW)41^ z!z#lmK9U51K)5;Ku6CmhQir4Edy+JU10}V3%QU-#iNP9D9GacTqQuS~U;a!m)6D7_P+nCdcUs)1ZD2-T6-<;Y#2+U!d!jR|VD3#+K*PVxV zl+?6T2B6h0&v(1A)~Uu z<+Ms4KK6>mW=bqc59D%AXY?rX6b*wuS3l$Z-Z3HqQzt59!z4))jKSWtt@}{nc)TRQ zVzqdpIcdD54Ow{CuE;ck$227=D7OF{p+2}o!xxU)b4**I_@VQL-`F1PI_3k9YT`T2D;xU@k3{@PGOcZoDFQ1tLqh>K zyGrqx+b@{b`#_Sg%HPq>sI!Te9oP!mDnpdHlAg$F+4_mY-2FgBWHQVGN#g-_JQZ40 zFsqw!X5VY<<5^iFiAndhzp!`lcH>W5r?<4cct0h4d+R>xk}K8oF?*otixE5mz0-4O zoZ$j0f&+i(ajsTK>U9$*q5@88*XRHh)wYK8{{Uf5FgI~0*Zo*$G?a_fjx2#dDVTw_ z*7Q6zXKhrM|AE)E03d6r+<}TyFh`#{cBc731eekbm{dE1|KS*Eh%f{I%r%{D-EL*|!2Y#R!^bMY?068aD zUxo<&e?=jYfzkVa>+%cE{(lG8ouDLE8mvbc*|K+l?4Bf1JDB?Z?{RnrkdHFyOyjbm zQN(%9bC9-eIdHd(n;-5W)1iHz$r#dGk&!>8&XN+>sK)lwm*^d$hl5yhE zWD@!8>zC{sQ~PDn=Za9E6j9S*Hz-y@O{LWZ7j>c+asOr{R7dp+x~hx(G1sB$T#l;y zGk8Ag+Uq|900N(*fczaLTaLJl|79wEA+zPEnHP5)Hu#bM3Ifn_gyg@NqF|M@eaU}q z10dlx?0+$XB4ePxa|AttfXL66Kd)1NC$n0l0c76sfHU83n!FPM>>ww(wtYI|zibAe zO}*x!Wu08{*bzm4(}aWyi0tnv9;KJf3Fz7hk&oF_WXI*QDB|yS zAl--tu&)w=)PL$q|JCNHMBIN0kN~vg|6kbuTgz^_ocZAYj||?h2C3Zci6RX~mGJR{ zCiQrEKv7xmKI3&FbUa&$TCTSozQtkP;dPfG@lFKL+MMK?hUp~#G@(-x-;g2&nb6e^ z0D*>XL~>F;TZ4{%f2)Q*S*Y9&(sAS+@lE{$8$7QDSq^L0IQe#j>5SM!EwxI>QAXnQ=-)OW@*yzg5aJ z^O}Bbe?H?(Vst!U3XJ>@_Z_CcMVTv-}PgG!Jt+*&@rY7&0w4SR;-!#qn2`I z-o^e%eAUIC%y>+5Gv2n&dL|-gwDRs`_4u1@!?Cu>gAW`Q$Bf6CT9rW*fI$=877puL zJy%Zid5Ulf5vsyXp!4 z#H*cyi6hbG_PBFg-Ueq~f{?}`(c)yi+aE(9r8v;foc{0@!9=C^yLsI|^rs8sULIJ=+;vwL%6WupK+g1i213r}%MU7o2 zXEPYx*fnN4Z`GR5$6oDH4V)jpMScOlG8cU1rO?Q)Ar+0}vs`U4J(|o?_$Zd^%kzAH zY`oSVZV@8T2cXj{UDS^ONZOOC;q6ADh0SP~OnF!=VAsc`oKc}%W3ng?*szl-=e*In zbSc0>K}9B{u%I7zU-(&O&sv7*xXFS1RElxAJ$B7oBk;KKp0T=ks9dVI`k2OH@3zI^ z$AhTy_I0b)<7>l8)UPq#EfQ!7n?4fdaj62CL|An8r;;H6=4Wua(1ljig9AQ(2(lC&p9L5CYoJo92jfA?1;X`09nEsx&{G(WK#53?``(Ef(VP-| zA*Jj6dBS$Gy03er4@&xMiI&F8>-Ml!`>WB9+p|?FL2FM7wvjZ}al!jd+vjk+uR@!c zW+Vjw8|QP4+3)_GHFBOkVrFr8;G>O457XY;U+5|psNAQNyJ@njF zln9q58%-b07Vq@k9uxhjHJc>vd5)#5i6NCTn=936*Zw(QXqnIQqJRUjTz6iP5QaG} zBcCg2>KOt4{y=0q7V}Yt0x&tlstJSJ9x)Lq7;u;>zTO-vpcGE-uQb}2>Ko)LPC|4+ zqnC`8Xv~)x*`I5-8oUOCVSjMtUpv2UYdv5vOp;LeI+o6z6LnE7U!(e2s`OD!oa?=% z-C!J)qSTx-@CUbf_TEbPCbkN;}6_Q=j(k~_2@!OH<@IvMeR11 zuw);M^$nu+WDAqUuJ4*PC~}Cnu6Qg|l?8^+Z_s#@HTlH`uwW|#jMONu?C(J0ft z7sds(#h}I{WKE*=TDXq1j@xbAOCEtkV)ZpWj?a5z(_FY=SBAq$qsw@Hj2=2| zI6NzF`_w}#jrx#{MYe(ZwAN64Skw87hzbA>X|a_3Fx(TJO1a7^VxTLX+fyt_K97vA z_pT&~QOd8?c7IG-t7r1S^%8|Fv`{#C;0gX%N^xxpRCLo1ipTlNFP2hHUVEY@75Ei0 z(ZmxJ{Xi6JwNxEs?tVMsl!7T7()D@O5pG}llyg8L3`YW*8^26q(PlR+playtb(~jT zOhIudj-nV;`<>Ybm;FK%@&_ts9j>C*b-Y=~60^Bzd)w>H$`|1$8s0S*p(e3A+2qN~ zg~U@ZL$_YHFHSkGyQ}w41MU|5*|n}>R(=o&6i7%;w)>+Ak{q)WBUsb55_+|0blRHn zV2(Jzds{m3iQcFO*-1Gxm1qLjvhGdH5yp*U^Oa;335Ld-2?wMdFe%j-(+Z{x1JW$BzMi27J z#4&MP81#pq?lEgU-Q<5G!Q=97Vw!I1Ff%13Z2NJ(Uei39lqGTKz1M1?+TOWnB$mPB zi$-C{U!}zm;3pfyIOT$ ze1K0NhQ&(5;E8;Zyy0^hPK`)M6##lo?rm|wg^O;@L*$~&biRf%7}KfffVy|K-B<0+ z7@~rZ-5ZHwT+x4?A{-VOqFA96Iqk#ec1cVDUR9X)X^yM2Sf@3e&SQkMoUHOkm=PtU zNoI}VwW|O-u|2JGxt&!Zs}5i4oi4xHA2(KyHSzDnpw%SRaeMUt(VuNp0X*kk7PU8; zEWskh3kMj)r*RH2lmpF?3Yc#sdayStl>NW?2Egad<5(@+nZ{v?;} zC#-o67cNStT_uRkY({-K-l#%L!@Ago{bBlUtZ~;t>{&o@V_Dohq>kumJfiS#Py$v=;cL zqKrdQ!1RM4y)`o|!*}V*KPxaR8)4~UMpMgN=GE5o?=9syY6mJsl#vfwbZ+vLH&aYn z@<%uAocgkpl}20g4#f&xe$)x^g7#McY+T2?%TV%q|7Mu-m{THbB;sZ@jOeNDYeRnn zazE`Iohv2`$#$j--_XNB)pXu~H_WP(tM0(5YSnXXyOwxR zDCeXKo%RTRh#OB7h!;Xt=9pEzY^<%mFiV7&b6nty%2x3zOc7Rv+FzTLDGM9?E;KU_iIFA-GPDb5 z8XcKW!PxaafUn9KU+^vYZD(ww31Hqzbfc`YK@d+5c#EeKgRfz0)Lu>Y24wofD|`;O zLw(_YAsL4$BIh+5#@7+W^KDL{Jd|pYXivpIcx1Bmdx`QD7pf!i=fd$4@>Ssgq(AJn{k=z(NdTG>rnc3roAbZLmhtTVE6DDum1~;$U{S7FYZiq64N4De zPZwwIee;`2^_YvBdm?z(0#N0Tbz}23>zh!{YT+>KC6)H6kvW`J$8-E=4s+nvCpF*w z7mw=ul&`N^Q|rzjTngt82*nbaB|_Eayu(HP;km`W0M0c@El#{k7moQT4-{7?sVV87;3E8y%MYMMJ~bS04ulk}+wZf*JjJ<8Fo0`9M!DFE2#Yh%I( zjey+QxCdRo1+V$YlJ`Sgf-gX6d!|Ss#oJ>cyaNqFs|(XDz*rQR-;6@=RQ(iQI~zC~ zaB5WyJ`9CK>uRO3`sw*CL;(|U?1qVbCNX#?@LVKu#k2rCt)!+6$LkwQTodp$)=0he-($almi8EnmzQvG6T0W07=vh%53=IIcGa5maL z9lSX;#qXM6w{MfF<{w-Zk%QliCgvHg0;3r8d}vgSA5*fUZpPalzF<(RezM&gi6>6J zi3O1DJn_x584`H0HkD zb-H>fRM}y1=8UG)C#G&`Hrg)F&z5TRQG6#D&N`dlw z%pRB9e|}T1cUGdWsxLs;`~ITQdL#$NDYazBK{lBKjE{5{)Rw{NI>(_HG*6@P?NPSX z^)`Ml*($6(KiP^!c7H$MAV4aKX>sMGwbl?;?^F_qWOpx|hs80$Ba)ie>2$3$WhBXB zxIjJA`J963N?U>CO@j#$c9rk_2(qvMf!4dC&ISC7qU?H0;WWn9@M-V! zJ3@MiJWa<*wFsmYAvOXP4p#;EaM{(a9K_y{`m*>X?_cfDXGiQ6E7Sh)M*gWz<)b(s zB}C8tJV$SazIs5l?H4Rwycj>50gARFTZ?W?x2CH4br%UjRpiz_)q*(=TA1u-uRT%L z!gmucB@^E60C;9!&f&w3t~raP#3T+`i1x6oQT6+aESiD2Y7xhn!ZVL=LZPNGWH_vExTa3pq5#Sodt3s!ob`uzP z@G$~sBdo&o8IwU=_>@TTo3P(|htRL$q`7n&MD=3U>vY-&D#l&Xv>@inb#!8umHDo( z=uvRtQB(k)(!7+h{5SaI7SUlbYAg+aslZm-ilXMA84L!HuID9lCe3dgp|_mk-r|WJ zaRM~I3+8h=oD^==_-JiNDRBe&(mmMqKOIuzKXk(pQYhrk@Xf^c6F2nY8NvFFqjRte z5WNaCLCJGpF2@TU?~HI9Fa?G~WIb!9uNZ}5VMB|)+A)O!SND1I({F1=?IFkOiMLfy z*XM7k2h^xY;sxpIVoNGvbKJ0Rdhwdr&8vEuV~FOmnA~ z3FSjRUChy>NEOqjAf)#|W-F(0T&+5GOKGEXrK)7D@9)a>kc5Ldf()VDZuyhtwhz z;a=BNdShu4`pKR5E?LZ--p*6AR+(OBkh`RFYp|eR3ZG##wXqy13OWUOF$(Z-PMIU^ zIvNf5%H$H95L%dSM^)302&rp{sA~{ZS=~z19#WMjy6}G|;B=6zI;Q^2UW=bK4*K>2 zIO1a(w=q0hD-39jU)V9<4H1xc5{WC|jI4f0{?{ky?6t&Mu-4YZMbapqpWG>LJgLwg zC?q|fTuktCHXq!3W9>iispdLSu)Cb-TsLF5f2zor@de69Ihkn;nYKfLD-rw&E$c-DdDE4wiEl`Mi+|Nz+TZpyEhmdC2znD`aG*!o!+qzcglx-=l->&FE@$6_wL3c-)8ZIr zNb{MD%i;%J8ymw>V9qXv=jskg=j06FoL^e>(EOWX+DHMrNW5QWEtl9>RFH47Gerf% zE^4htS`*djv9k*g$VAKE^(V3kHHEs|NT@kv6!Q@jTX8XH$>F8#*91u{=Df+-qQTxP ziZ3R}L((|T*mz2$m7qJPjt$S;9m-H!T2_uq}*qJo$Q+$5BQ5_v&aehR?`- zt?$w^Vqo-GWrSoT$^%QqmkCO9cdCGuBblrv>dGrN7BJb1W|Iz*nX_0VRxC`!#YZJGv;>lyMYl|tLn_YD|U2c~V4tt8qUe?n6hds6+_-cyl=B3yH{5ZLXS)^V|g)29~Y_!V_n9Rq|!;-&;j|l0;rLV|E<0 zM_c~3HbfUC`NRPk#KA?N3I$ShMe+rV+0W_WblFjScBC89JvDogC|&>+VBit`I;iVjVx8Zb=5Nj@ZtsNP97jsWt%uXdDj z7XF9fxR`;~Y;qFYk87h8vjZ}WKPejV-7hH++S+7GEC5Kbxr;9FC{hKc1CUvF#NY6L z{6qVEMFAe^@#l|y$N?NLKY;V_`;#0YMY{dPK&F3=_%lA#=^Fn(mh!KF6_Rex^6xi) zele{dWB`DF-#Q4`@3}YN0o=+TH*f&mr^o3Rb@qlq2=p6E25bemj&%oNi0}IwNk!NP zAZ)@f>w$oO^}2r_Ctm=!^9RcbFwEz40Ld5H4i5GE?Ya(}UnJM>SA+oN54r?I>c7zN z0sUjozY4te>w4YqH;#UF^U#kQl@}fl7g?eus-N*m|0qR|EXYs)Fmea$Cw$oR<$5cz zY{6hH+<=sSc#6M^v9U-BL<9FXXO=*x6+L4*)%1Vm%*24yKO`^2Ia9ZcXK<2SzP^%4 zHQkhj_n!V6!^-G<(E_oh^dy~^hiGnN%SKc*Qp_>PApol{h^ob9 zJJk9|DLOErO{7_;B#;gR4tN}PB3D{%`wgW?gq$=)#A0ZDb48QnQAkA#w`l-$>sFV_ zZ>{2O90)kTOx?eM3~vg9#29eir<75m`(~TCnVk HuFwAg^Pb2% literal 0 HcmV?d00001 From ee2e50a708b1ba2d6bb7cbbcb9cea4fae1d92e09 Mon Sep 17 00:00:00 2001 From: Jan Calanog Date: Wed, 5 Feb 2025 12:41:59 +0100 Subject: [PATCH 2/9] Add some additional info --- .../guide/how-to-set-up-docs-previews.md | 37 +++++++++++++------ 1 file changed, 26 insertions(+), 11 deletions(-) diff --git a/docs/migration/guide/how-to-set-up-docs-previews.md b/docs/migration/guide/how-to-set-up-docs-previews.md index c5dc19c1c..b8676565c 100644 --- a/docs/migration/guide/how-to-set-up-docs-previews.md +++ b/docs/migration/guide/how-to-set-up-docs-previews.md @@ -22,21 +22,26 @@ This way you only build and deploy the docs when there are changes to the docs a ```yaml --- -name: docs-build # The naming is important, don't change it +name: docs-build <1> on: pull_request: ~ jobs: docs-preview: - uses: elastic/docs-builder/.github/workflows/preview-build.yml + uses: elastic/docs-builder/.github/workflows/preview-build.yml <2> with: - path-pattern: docs/** # The path to your docs folder. - permissions: # Only needs read permissions. + path-pattern: docs/** <3> + permissions: contents: read pull-requests: read ``` +1. The naming is important, don't change it +2. This should be the path to your docs folder. +3. Resuable workflow: [elastic/docs-builder/.github/workflows/preview-build.yml](https://github.com/elastic/docs-builder/blob/main/.github/workflows/preview-build.yml) + + :::: ### Deploy @@ -53,19 +58,22 @@ name: docs-deploy on: workflow_run: - workflows: [docs-build] # The name of the docs-build workflow. + workflows: [docs-build] <1> types: - completed jobs: docs-preview: - uses: elastic/docs-builder/.github/workflows/preview-deploy.yml + uses: elastic/docs-builder/.github/workflows/preview-deploy.yml <2> permissions: - contents: none # No need to read the code. + contents: none <3> id-token: write deployments: write actions: read ``` +1. The name of the previous workflow. +2. No need to read the code. +3. Resuable workflow: [elastic/docs-builder/.github/workflows/preview-deploy.yml](https://github.com/elastic/docs-builder/blob/main/.github/workflows/preview-deploy.yml) :::: @@ -73,27 +81,34 @@ jobs: This workflow is triggered when a PR is either merged or closed. The underlying reusable workflow, deletes the docs from the preview environment. +:::{note} +We are awarey of the security implications of using `pull_request_target` as described in [this blog post](https://github.blog/2020-08-03-github-actions-improvements-for-fork-and-pull-request-workflows/). +The workflow never checks out the code and doesn't use any user modifiable inputs (e.g. PR title). +::: + ::::{dropdown} .github/workflows/docs-cleanup.yml :open: - ```yaml --- name: docs-cleanup on: - pull_request_target: # We are using the pull_request_target event, but the code is never checked out. + pull_request_target: types: - closed jobs: docs-preview: - uses: elastic/docs-builder/.github/workflows/preview-cleanup.yml + uses: elastic/docs-builder/.github/workflows/preview-cleanup.yml <1> permissions: - contents: none # We don't even grant read permissions, because the code is never checked out. + contents: none <2> id-token: write deployments: write ``` +1. Resuable workflow: [elastic/docs-builder/.github/workflows/preview-cleanup.yml](https://github.com/elastic/docs-builder/blob/main/.github/workflows/preview-cleanup.yml) +2. No permissions to read content + :::: ## Required Status Checks From 9eaf949a193428058a9b269ec4d7829ff5c4e259 Mon Sep 17 00:00:00 2001 From: Jan Calanog Date: Wed, 5 Feb 2025 12:45:00 +0100 Subject: [PATCH 3/9] Add external host --- docs/docset.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/docset.yml b/docs/docset.yml index 37be74a73..f673bed67 100644 --- a/docs/docset.yml +++ b/docs/docset.yml @@ -19,6 +19,7 @@ external_hosts: - checkvist.com - commonmark.org - github.io + - github.blog exclude: - '_*.md' subs: From f9957d2ae71b5e15b1543f5ca18aa495b838ed45 Mon Sep 17 00:00:00 2001 From: Jan Calanog Date: Wed, 5 Feb 2025 12:45:26 +0100 Subject: [PATCH 4/9] Fix typo --- docs/migration/guide/how-to-set-up-docs-previews.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/migration/guide/how-to-set-up-docs-previews.md b/docs/migration/guide/how-to-set-up-docs-previews.md index b8676565c..1bddde026 100644 --- a/docs/migration/guide/how-to-set-up-docs-previews.md +++ b/docs/migration/guide/how-to-set-up-docs-previews.md @@ -82,7 +82,7 @@ jobs: This workflow is triggered when a PR is either merged or closed. The underlying reusable workflow, deletes the docs from the preview environment. :::{note} -We are awarey of the security implications of using `pull_request_target` as described in [this blog post](https://github.blog/2020-08-03-github-actions-improvements-for-fork-and-pull-request-workflows/). +We are aware of the security implications of using `pull_request_target` as described in [this blog post](https://github.blog/2020-08-03-github-actions-improvements-for-fork-and-pull-request-workflows/). The workflow never checks out the code and doesn't use any user modifiable inputs (e.g. PR title). ::: From e9a32f12dbe26c93658fe9df4cdde06655a8ef19 Mon Sep 17 00:00:00 2001 From: Jan Calanog Date: Wed, 5 Feb 2025 12:49:54 +0100 Subject: [PATCH 5/9] fix typo --- docs/migration/guide/how-to-set-up-docs-previews.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/migration/guide/how-to-set-up-docs-previews.md b/docs/migration/guide/how-to-set-up-docs-previews.md index 1bddde026..3695d730d 100644 --- a/docs/migration/guide/how-to-set-up-docs-previews.md +++ b/docs/migration/guide/how-to-set-up-docs-previews.md @@ -13,7 +13,7 @@ The docs preview system consists of three GitHub Workflows: ### Build This workflow is triggered when a PR is opened. The underlying reusable workflow, builds the documentation and uploads it as an artifact. -If the `path-pattern` intput does not match any changes in the PR, the workflow will skip the build, but still set a green status check. +If the `path-pattern` input does not match any changes in the PR, the workflow will skip the build, but still set a green status check. This way you only build and deploy the docs when there are changes to the docs and you can still set it as a required status check. From 037e31cc558c9c721b8000be7bebe4d776d4b0b9 Mon Sep 17 00:00:00 2001 From: Jan Calanog Date: Wed, 5 Feb 2025 13:05:28 +0100 Subject: [PATCH 6/9] Fix link --- docs/docset.yml | 2 +- docs/migration/guide/how-to-set-up-docs-previews.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/docset.yml b/docs/docset.yml index f673bed67..a7963cd21 100644 --- a/docs/docset.yml +++ b/docs/docset.yml @@ -19,7 +19,7 @@ external_hosts: - checkvist.com - commonmark.org - github.io - - github.blog + - github.com exclude: - '_*.md' subs: diff --git a/docs/migration/guide/how-to-set-up-docs-previews.md b/docs/migration/guide/how-to-set-up-docs-previews.md index 3695d730d..09ec2135b 100644 --- a/docs/migration/guide/how-to-set-up-docs-previews.md +++ b/docs/migration/guide/how-to-set-up-docs-previews.md @@ -82,7 +82,7 @@ jobs: This workflow is triggered when a PR is either merged or closed. The underlying reusable workflow, deletes the docs from the preview environment. :::{note} -We are aware of the security implications of using `pull_request_target` as described in [this blog post](https://github.blog/2020-08-03-github-actions-improvements-for-fork-and-pull-request-workflows/). +We are aware of the security implications of using `pull_request_target` as described in [this blog post](https://securitylab.github.com/resources/github-actions-preventing-pwn-requests/). The workflow never checks out the code and doesn't use any user modifiable inputs (e.g. PR title). ::: From d203076d9000775e42db1e18911d5a9e3d04cdb9 Mon Sep 17 00:00:00 2001 From: Jan Calanog Date: Wed, 5 Feb 2025 13:06:27 +0100 Subject: [PATCH 7/9] Fix code callout --- docs/migration/guide/how-to-set-up-docs-previews.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/migration/guide/how-to-set-up-docs-previews.md b/docs/migration/guide/how-to-set-up-docs-previews.md index 09ec2135b..73a4bb705 100644 --- a/docs/migration/guide/how-to-set-up-docs-previews.md +++ b/docs/migration/guide/how-to-set-up-docs-previews.md @@ -72,8 +72,8 @@ jobs: actions: read ``` 1. The name of the previous workflow. -2. No need to read the code. -3. Resuable workflow: [elastic/docs-builder/.github/workflows/preview-deploy.yml](https://github.com/elastic/docs-builder/blob/main/.github/workflows/preview-deploy.yml) +2. Resuable workflow: [elastic/docs-builder/.github/workflows/preview-deploy.yml](https://github.com/elastic/docs-builder/blob/main/.github/workflows/preview-deploy.yml) +3. No need to read the code. :::: From b099659a3313510894fd7bd377febfa70eb1371e Mon Sep 17 00:00:00 2001 From: Jan Calanog Date: Wed, 5 Feb 2025 15:57:28 +0100 Subject: [PATCH 8/9] Fix typos --- .../guide/how-to-set-up-docs-previews.md | 20 +++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/docs/migration/guide/how-to-set-up-docs-previews.md b/docs/migration/guide/how-to-set-up-docs-previews.md index 73a4bb705..cd8b35946 100644 --- a/docs/migration/guide/how-to-set-up-docs-previews.md +++ b/docs/migration/guide/how-to-set-up-docs-previews.md @@ -28,18 +28,18 @@ on: pull_request: ~ jobs: -docs-preview: - uses: elastic/docs-builder/.github/workflows/preview-build.yml <2> - with: - path-pattern: docs/** <3> - permissions: - contents: read - pull-requests: read + docs-preview: + uses: elastic/docs-builder/.github/workflows/preview-build.yml <2> + with: + path-pattern: docs/** <3> + permissions: + contents: read + pull-requests: read ``` 1. The naming is important, don't change it 2. This should be the path to your docs folder. -3. Resuable workflow: [elastic/docs-builder/.github/workflows/preview-build.yml](https://github.com/elastic/docs-builder/blob/main/.github/workflows/preview-build.yml) +3. Reusable workflow: [elastic/docs-builder/.github/workflows/preview-build.yml](https://github.com/elastic/docs-builder/blob/main/.github/workflows/preview-build.yml) :::: @@ -72,7 +72,7 @@ jobs: actions: read ``` 1. The name of the previous workflow. -2. Resuable workflow: [elastic/docs-builder/.github/workflows/preview-deploy.yml](https://github.com/elastic/docs-builder/blob/main/.github/workflows/preview-deploy.yml) +2. Reusable workflow: [elastic/docs-builder/.github/workflows/preview-deploy.yml](https://github.com/elastic/docs-builder/blob/main/.github/workflows/preview-deploy.yml) 3. No need to read the code. :::: @@ -106,7 +106,7 @@ jobs: deployments: write ``` -1. Resuable workflow: [elastic/docs-builder/.github/workflows/preview-cleanup.yml](https://github.com/elastic/docs-builder/blob/main/.github/workflows/preview-cleanup.yml) +1. Reusable workflow: [elastic/docs-builder/.github/workflows/preview-cleanup.yml](https://github.com/elastic/docs-builder/blob/main/.github/workflows/preview-cleanup.yml) 2. No permissions to read content :::: From 1f3a9343bc8f38d582a7bb7c99fc408cedb65576 Mon Sep 17 00:00:00 2001 From: Jan Calanog Date: Wed, 5 Feb 2025 16:03:23 +0100 Subject: [PATCH 9/9] Syntactic sugar --- docs/migration/guide/how-to-set-up-docs-previews.md | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/docs/migration/guide/how-to-set-up-docs-previews.md b/docs/migration/guide/how-to-set-up-docs-previews.md index cd8b35946..df1b76212 100644 --- a/docs/migration/guide/how-to-set-up-docs-previews.md +++ b/docs/migration/guide/how-to-set-up-docs-previews.md @@ -5,9 +5,9 @@ This guide will help you set up docs previews for your GitHub repository. ## GitHub Workflows The docs preview system consists of three GitHub Workflows: -- `docs-build.yml`: Build the docs on a PR -- `docs-deploy.yml`: Deploy the docs to our preview environment -- `docs-cleanup.yml`: Cleanup the docs after a PR is merged or closed +- [`docs-build.yml`](#build): **Build** the docs on a PR +- [`docs-deploy.yml`](#deploy): **Deploy** the docs to our preview environment +- [`docs-cleanup.yml`](#cleanup): **Cleanup** the docs after a PR is merged or closed ### Build @@ -37,7 +37,7 @@ jobs: pull-requests: read ``` -1. The naming is important, don't change it +1. The naming is important so that the `docs-deploy` workflow is triggered. 2. This should be the path to your docs folder. 3. Reusable workflow: [elastic/docs-builder/.github/workflows/preview-build.yml](https://github.com/elastic/docs-builder/blob/main/.github/workflows/preview-build.yml) @@ -58,7 +58,8 @@ name: docs-deploy on: workflow_run: - workflows: [docs-build] <1> + workflows: + - docs-build <1> types: - completed @@ -71,7 +72,7 @@ jobs: deployments: write actions: read ``` -1. The name of the previous workflow. +1. The name of the previously mentioned `docs-build` workflow. 2. Reusable workflow: [elastic/docs-builder/.github/workflows/preview-deploy.yml](https://github.com/elastic/docs-builder/blob/main/.github/workflows/preview-deploy.yml) 3. No need to read the code.