From d5180fc63c43837a97de5ded7809e60e4fa20753 Mon Sep 17 00:00:00 2001 From: Benito Palacios Sanchez Date: Tue, 21 Nov 2023 13:07:49 +0100 Subject: [PATCH 1/6] =?UTF-8?q?=F0=9F=93=9A=20Document=20git=20flow?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/articles/toc.yml | 2 + docs/articles/workflows/gitflow.md | 83 ++++++++++++++++++++++++++++++ 2 files changed, 85 insertions(+) create mode 100644 docs/articles/workflows/gitflow.md diff --git a/docs/articles/toc.yml b/docs/articles/toc.yml index a98763b..a0b210f 100644 --- a/docs/articles/toc.yml +++ b/docs/articles/toc.yml @@ -27,6 +27,8 @@ - name: ♻ Workflows - name: 🚧 Pipeline href: ./workflows/pipeline.md +- name: Git flow + href: ./workflows/gitflow.md #- name: Versioning # href: ./workflows/versioning.md - name: 🚧 Translation diff --git a/docs/articles/workflows/gitflow.md b/docs/articles/workflows/gitflow.md new file mode 100644 index 0000000..a63ebbb --- /dev/null +++ b/docs/articles/workflows/gitflow.md @@ -0,0 +1,83 @@ +# Git flow + +Following git flow style, there would be three types of branches: + +- **main** (aka `develop`). It's the current development branch with latest + features and fixes. + - This branch should be protected. Changes come via _pull requests_ from + feature branches. + - Building creates a _preview_ build. Artifacts are deployed to the preview / + staging feeds. +- **feature branches**: development branches for small features and bug fixes. + - Prefixed always with `feature/` for simplicity. + - Building creates a _development_ build (same as local builds). No artifacts + are deployed, but they are accessible to download and test from CI output. +- **release branch** (optional): branch to work on the release process of a + release without stopping development in the _main_ branch. + - If the product provides _long-term support (LTS)_, use this branch to + maintain patches for the version. + - As an alternative for small projects, just tag directly `main`. You can + always check-out a _tagged commit_, branch and create a _patch release_ from + there. + +```mermaid +--- +title: "Build versions per commit" +config: + theme: base + gitGraph: + mainBranchOrder: 2 +--- + +gitGraph LR: + # Start from a release + commit id: "3.1" tag: "v3.1" + + # Feature into main + branch feature/name order: 1 + commit id: "3.2.1-wip-name0001" + commit id: "3.2.2-wip-name0002" + checkout main + merge feature/name id: "3.2.501" + + # Create release branch (LTS) + branch release/3.2 order: 3 + commit id: "3.2.1000" + + # Hotfix after manual test failures + branch feature/hotfix order: 4 + commit id: "3.2.1-wip-hotfix0001" + commit id: "3.2.2-wip-hotfix0002" + checkout release/3.2 + merge feature/hotfix id: "3.2.1001" tag: "v3.2.1001" + + # In parallel, new features to main + checkout main + branch feature/name2 order: 0 + commit id: "3.2.1-wip-name20001" + commit id: "3.2.2-wip-name20002" + checkout main + merge feature/name2 id: "3.2.502-dev2" + + # Merge release branch to bump number + checkout main + merge release/3.2 id: "3.3.502-dev2" + + # Patch on LTS + checkout release/3.2 + branch feature/hotfix2 order: 5 + commit id: "3.2.1-wip-hotfix20001" + checkout release/3.2 + merge feature/hotfix2 id: "3.2.1002" tag: "v3.2.1002" + + # Merge hotfix to main as cherry-picks from now on + checkout main + commit id: "3.3.503-dev3" type: HIGHLIGHT tag: "cherry-pick hotfix2" +``` + +> [!TIP] +> Merging pull requests with the _squash_ strategy could be a good idea as it +> keeps a clean git history. The only exception is the first merge from the +> release branch into the main. + + From c63255c1b722c0ab69c0b4d882bf2dfd8180c7a2 Mon Sep 17 00:00:00 2001 From: Benito Palacios Sanchez Date: Tue, 21 Nov 2023 14:55:48 +0100 Subject: [PATCH 2/6] =?UTF-8?q?=F0=9F=93=9A=20Improve=20git=20flow?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/articles/workflows/gitflow.md | 133 +++++++++++++----- .../workflows/images/git-workflow.png | Bin 45483 -> 0 bytes docs/articles/workflows/pipeline.md | 4 - 3 files changed, 95 insertions(+), 42 deletions(-) delete mode 100644 docs/articles/workflows/images/git-workflow.png diff --git a/docs/articles/workflows/gitflow.md b/docs/articles/workflows/gitflow.md index a63ebbb..40df095 100644 --- a/docs/articles/workflows/gitflow.md +++ b/docs/articles/workflows/gitflow.md @@ -1,83 +1,140 @@ # Git flow -Following git flow style, there would be three types of branches: - -- **main** (aka `develop`). It's the current development branch with latest - features and fixes. - - This branch should be protected. Changes come via _pull requests_ from - feature branches. - - Building creates a _preview_ build. Artifacts are deployed to the preview / - staging feeds. -- **feature branches**: development branches for small features and bug fixes. - - Prefixed always with `feature/` for simplicity. - - Building creates a _development_ build (same as local builds). No artifacts - are deployed, but they are accessible to download and test from CI output. -- **release branch** (optional): branch to work on the release process of a - release without stopping development in the _main_ branch. - - If the product provides _long-term support (LTS)_, use this branch to - maintain patches for the version. - - As an alternative for small projects, just tag directly `main`. You can - always check-out a _tagged commit_, branch and create a _patch release_ from - there. +Following git flow style, there are three types of branches: main, feature and +release branches. ```mermaid --- -title: "Build versions per commit" +title: "Git flow" config: theme: base gitGraph: + showCommitLabel: false mainBranchOrder: 2 --- gitGraph LR: - # Start from a release - commit id: "3.1" tag: "v3.1" + commit tag: "Preview" # Feature into main branch feature/name order: 1 - commit id: "3.2.1-wip-name0001" - commit id: "3.2.2-wip-name0002" + commit tag: "Dev" + commit tag: "Dev" checkout main - merge feature/name id: "3.2.501" + merge feature/name tag: "Preview" # Create release branch (LTS) branch release/3.2 order: 3 - commit id: "3.2.1000" + commit tag: "Preview" # Hotfix after manual test failures branch feature/hotfix order: 4 - commit id: "3.2.1-wip-hotfix0001" - commit id: "3.2.2-wip-hotfix0002" + commit tag: "Dev" + commit tag: "Dev" checkout release/3.2 - merge feature/hotfix id: "3.2.1001" tag: "v3.2.1001" + merge feature/hotfix tag: "v3.2.1001 - Production" # In parallel, new features to main checkout main branch feature/name2 order: 0 - commit id: "3.2.1-wip-name20001" - commit id: "3.2.2-wip-name20002" + commit tag: "Dev" + commit tag: "Dev" checkout main - merge feature/name2 id: "3.2.502-dev2" + merge feature/name2 tag: "Preview" - # Merge release branch to bump number + # Merge release branch checkout main - merge release/3.2 id: "3.3.502-dev2" + merge release/3.2 tag: "Preview" # Patch on LTS checkout release/3.2 branch feature/hotfix2 order: 5 - commit id: "3.2.1-wip-hotfix20001" + commit tag: "Dev" checkout release/3.2 - merge feature/hotfix2 id: "3.2.1002" tag: "v3.2.1002" + merge feature/hotfix2 tag: "v3.2.1002 - Production" # Merge hotfix to main as cherry-picks from now on checkout main - commit id: "3.3.503-dev3" type: HIGHLIGHT tag: "cherry-pick hotfix2" + commit type: HIGHLIGHT tag: "cherry-pick hotfix2 - Preview" ``` +## Main branch + +Also known as `develop`, it's the current development branch with latest +features and fixes. + +This branch should be **protected** so no direct pushes are allowed. Changes +should come via _pull requests_ from feature branches. + +Pushing in this branch new comments will trigger a new _preview_ build type. +This means that artifacts are deployed to the preview / staging feeds. This will +only happens when a pull request is merged. + +> [!NOTE] +> If you are working on a small, personal project alone, it should be fine not +> using pull requests and pushing directly. + +## Feature branches + +Development branches for small features and bug fixes. + +They are prefixed with `feature/` for all type of work (including bug fixes). +This simplifies the configuration of tools (like GitVersion) and gives +consistency in the branching schema. + +Building locally or in pull requests creates a _development_ build. No artifacts +are deployed, but they should be accessible to download and test from CI output. + > [!TIP] > Merging pull requests with the _squash_ strategy could be a good idea as it > keeps a clean git history. The only exception is the first merge from the > release branch into the main. - +## Release branches + +Branches that help with the release and support process of a product release. In +a release branch you can stabilize the release without stopping development in +the _main_ branch of new features that won't go into that release. + +They are prefixed with `release/` followed by the major and minor version +numbers. + +Pushing changes into a release branch should happen only via pull requests that +are carefully reviewed. A new commit will trigger a new _preview_ build. + +Once the release is ready (stakeholders signs-off) git tag the latest commit. +This will trigger a new _production build_. Depending on the build system and +_sign-off_ process a _production build_ may not involve re-building again but +downloading the latest artifacts and deploying them. For instance by using in +Azure DevOps a _manual approval_ task and keeping the _preview_ builds from a +release branch blocked. + +After the release is out, a _release_ (also known as _support_) branch can be +used to work on regular patch release like for _long-term support (LTS)_ +versions. Otherwise, remove them as they do not offer any advantage. You can +always re-create it from the latest git tag. + +> [!NOTE] +> In a small, personal projects you most likely won't need these branches. Just +> tag directly `main`, for instance by creating a _GitHub release_. You can +> always check-out a _tagged commit_, branch and create a _patch release_ from +> there if needed. + +## Epic branches + +Special type of a development branch. It helps to implement large features that +could affect the development of other current features. + +It acts as a **temporary** parallel branch to `main`. Feature branches related +to the feature are merged into the epic. Once the feature is stable enough, the +epic is merged into the `main` branch as it were a _big_ feature branch. + +Try to minimize the usage of _epic_ branches to prevent huge merge conflicts +later. + +> [!INFO] +> This schema does not use a `master` branch as the original +> [_git flow_](https://nvie.com/posts/a-successful-git-branching-model/) +> proposed. This branch has not much use. It's possible to get the latest stable +> version by listing _git tags_. Not having the branch prevents typical issues +> with the merges and conflicts. diff --git a/docs/articles/workflows/images/git-workflow.png b/docs/articles/workflows/images/git-workflow.png deleted file mode 100644 index 464eea03c632f7c0b3e25c309c5c5d228d3ad7ee..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 45483 zcmb@uWmr^i_%2GPlnfw^gUHZ`ARsLaEes(HNQact-5o=>bR!^*bR(UDq;&TvB@Jic z@4wG=&UNK)mTXtd}1jsdwQ zEc7=`A6SlO+-J=dQPny?p-`YRxcW(_AQn^;(p>i257E4LMdC3jAvVOMo>xw0>?Jvrp_Ne0ZeRaSjag(mTwbh+8+u z{CJ1u`0_99gqe9(f;MG9Zh|%^b?LuhNsw_vO z$@#qQY?FrybZM{k5%zD|QU$(Rh}^g#G3;v+gy`*tnuYy4Qa9@*2i422!HKe4^yA&W ztU-k#JrL`GuJd2h>W$hS``OhHxez5$s&h46Qw_8HRy0vvJRfkT3YyFHjHN^Km&#<6v?;lgg{970mHUk)_*5pp0vjR5R zWJm4hG~`ZZ(cM9EJT%rWTfywUJLXiP%PiR^#$u)+taf*^uFL{2%D(d+SYYBg?`h;& zEx;Ab-btY(J$2QtJ)Sb%LZql3Pd>hbW6VGR>!^SBiUHVpZp>T_z%VQaZtVQ^b9RvA zv?e`5L+|ocB&COz#LngGWsoyj`?{*iSW$FEG2fS8l`dts-yhB_PX@iR+jXCf6|MOp`-K++%1bC}RbE-tFnX3Clti=DXFRtT4@j6T){aj z-bua|nU#|!q+%H&ztdb>PaoWVubYZgtJ=v%YPfL4s3Yf;NfD=8Y&c=v z10mWj4)87JRy4HQEizofSM~<}PjhK*yV168xsrDC+P8WQ%PxAiu5sL3$A7wweoZ7> zpvF3MHL}04>BcpbN@hi-ZBFFmDLa_;?kSr!_ScageOYmHY-XkbshJrba=R~;;^&2y z%D2mO8K4i7) z_gr>J?oF`TS*E@Qi61qQxvj$KL3U$5Z$%(OPhFcwTJET-nG0%^CH%I0`9ve~oP) zLH0F?bj3^etck}Kh!jUHh$VLauM`2`F{WC=w+|swwgK=IxXBA?_`T=|(S?f~$KR*6 zuOLmetDlayzSzjNd0tN1J1iA%4_Re>jOlS8XIns_yO`&RRp{611rt4a z`ciYa9}C*re46xn2+~dy-n7^uSNy=ES1-}CoY~%lGeo@ z3P}Z_Xf+g>dVFaG{n`C#9%Jq=9^xW{?!V}n7>Nx+eaf%*lQ-?U)Z(y^$7F%Hv2cm6 z+IAZ3_M!V_)62t4xiPbV+yeZhfxuN#ldCR^f3a%D`CK8z-ZcLwI&Fbm8TGfF{Q^F& z#Hk^Tq0h{H{TqVu1qM0(JPvz`f~S>|1rk58CjKC#_q?rK)g)718>ae`Asb~!D`pxp zCrfqIup(%(XHtaS5yEE|Fs-9epBGTx1+yBB;kdXjsn_gK8xQKbe}2R69pJCak9#Xl zT*XQJrjs+BQd+*9_LPe6a~?JglFjHmwbCq2^aM|w7q{8#O`X__kGJ37rPW?Xcyl&1 zAhrZw9~Uu_`4>ibX&~K-;(6O!8zbmnNoQ*vOo5p zj|W0#0mLiuAqMC~Yp zB~)}wYL))8n1|Scn>gPb-h+=2y$8nscTFU|9VKSXdSAAPzpY$E^)q~vw6#jRKDk`G%Qo&E}?2awUYUE*M0n6oku-p+Rg)|j(7c5eX zn)FvB|3;#!4NN*guWgdPMM7n-B4^|wMN#x~d>Ejv1`l+*%6T5#*rL-4qHX;z{sWC= z03($DGWD(TUk>q*?G}m;Kcva*85!mezda{nw!Q2MF+O%Kd|R ztzXEO%bbw}!~ez^@v!>qNejPJ`0-1B2-uT~vxhwaQuzseVC_!zjrGTVWcU9cA1#>OY192{?7yla{_epj z?y2S;ARU-NAz&Cf>d)qQ|Ftx9(-2T1sZwl0JuO5!noz=lU<%13WA0DM%5C88+ zpO(WyTm>{vqL3JaPJnm}uF>rV^{WD_WsL<`&%aOl`~m;(d0o2)1BZI%7$`@qME*ac z|0Ztb!x8=P2BU7ad4J5)BYbi@SSaU`mVe;8 zuE)TfS?0P{J84!L!~1$4aKM%Du2$AA8q{UU?Thf)q*~^#5p4?EDyZRi+x6)ft&npB zRm3C2!IFFl+Low7$&DZ`s1?~e^~*l-?)=k9iym!B69t3)`0*bGL()WJ{FKj=eg57ueo10y z3b-ar1T$x_Kcq@+0d%pOUz2cQYKL8WJe9xWc?<{Pl&|e8K^&@z?vDE$LTwj{&R(~P zr#>bztRhz_BwAuw?`liCe$IyFZH`P)n~v3c?mG9z&HXgK+UH)h)|d_0xAT7c+=M1^{Ue9$EQ(24y>1{Te&LZS| z5Q9zc`QxXR)UUZDj`t>iRyuj?H)I>{uJ$(*HT7c6GTo#L-=;ms!~?<1#qKWF3smx? zCrY(ybedbYQmss`PIr%oxY`3JITz9|Jqf6IW%*X`n;mz-WUT7_c8le@&4bOq+rG9F zc{ajZT&qCraPFC^*Vr@yw&EIP+Dw}IUbRuTee^yFCu3szTca6l%A&g&OjC_|D_)o& z!xR&aTujD*+|cAXLS9VZs8?j;6x4ZEYa#bMLrULYHF@5Dcd<8ZrQ)&L6K2t`^G6$- z|J};89`ZIW(JE<(RFXcq=VkKO&8@4nz5c~dLIYFosnhR^-Af+c^GJo%`rmXc8IH(@b{ z)E3@rx0L&}#{s$A^hABC8!iw;_r&LUwH09Y6h=kT5l^0;?axs7qCwCe(ZD1_Jdlkt z(L&b;HQ${tfv*fz_0h3qdHvN=gkd~UOcziwG+FPB#Cz^_{g=RFOjDhOhFLJ5L$v}ddo0B7t(b)@B-j0=(~ z;#0^D=h4ihJ#QgA9&7a(Y^2bP`Sjc8>E+30a;wkbyKus?>%7H$siU}ws>N0kNtI27 z(YS%UFRa3ccUxACCEf&cH`8CV%D-K`tw^L>q>BybDt&&II-R7V92GB#M+2?}RxfR7 zwq&N~_~abOn~B7{xtyqGCQfM2wZFgL8(4I4Ovv)NlS^tluGR~eUQlm5QT{3VVc2WH z2=QjYzcU*LC56`_u2ip8d#uadj|@E=!@$pJ9WbzXqaK7@G@Z!lva;xjI_=l0yf|%8B$$IW`Wsp;qGHpJ=y`sF0G@G{A z>)-AAM4c0>H=c`5GXuIVi%eEC<%x^UF8E^gALn@HOMNa@vE7i3+m4(>BBwFJN8O}? z*`cJr>TS3>WXiN_Pqm%)CS$*rH_2by-_s1McDL-D=S7RgfuRW5M*GbNtI&t-&u)#R zP4QqyC}s+4@fnJA)rv#hZ_j4P>>r?@o^XnpeGsP({O`eB-YuF)DKl|sZ~c<{*Ya^K zvkWHw1=|4aM!0^dOhfI$Vg0iAPtmrUV}-*!i=Tz=gdFKh@Fk#i<~|yS2pzi~vSZ+Q znrSi6D#SWun0NGNLw+waPD|2(D#iDOLn%Vk)-j>$%+ax5qzPizqs5+DO$zgBa%eMO zo>0WxNnZ8;rM;Kv*VOl6Dzmm=%s}qZkby?Lyknd8L>F%Sct2`rBAWbb?ysyWgqJ+B z)!TPeQDdgLJR~_};njNjmrAdg_}lKI92@S-KepRUwFT*TyraE5+NR&E8LR)AHex|m zk`PD+TsONE5TW!B7pTc8`Xe#iRAVC&eFE$ON3pz}Gs&(8|6$$ZP_ynxrF#t~v&Q=+p z;V%t7i4{uMEz!8+dnh*lw7>KHvU~mGpE;5BrR| z1a+?aB3<<+fdtF3@3Ri0w22KLUdyVFz z_x0ue1RABbk;WHYy-m;-f^#7UjOVT-q0_3TJ9*J1WLRJE2o@`QF?v-{6+5;7(;(v> z_g_X$6*nu|sso|Mqp;hlx{uwTC0q9Y_KgEvpA2e&=jE|h(j1@FwA3T$PA8R6_H>Jz z!|qaR^BX!CNYMtF$iL(&iS_77jMHyh9RUae1mqu&kKP*3;1v5dj@>vpbmJpz<#c~m z77l0DiI)k&EwwFXCP9BlCS4UsyH>*%vO*)JN3VwIUge%TaLBpU7dNaDrP0i zPiD)Nv*GP6Ek%{j?*%_!KMKc0g0WR?BMn7R5$#nU^1iV*nrZ8XNTK*EhL!C-X)L5){>3DO`~xu21J52TK3uYgy*$%$AH_toZwVN{ZwbYFIGR;e|}j)|Nv&|JNCNAJ@2I!pBDjP%$B z;@l7!0*ngeXFgucbLNVE`K-iT5F^#E)8&(kW-S(v`6s@}_%!~xDLF=7+YEUTE#{H? z4w8+xFs(PU! zQFEf{Fm->T17YY7+}(#k#ANbhZ*i z;({J3=-cV0q)5`7?0tKtc`HclZxjSBukpTh&)_O=#-?)>52ZzOGes-h8g4FW)p)+mEUbE058fZTG)fPRTD?!r$OTV12GETDh|`3atELP_Uvv z%@$TOC1&g4-t2rBNUPJ0iuwdFv_FA-2)ott?|gw@2NfXTh9?RnTxcCn%2|wzQ3QM+ z%}{A%!C>7qxPN<(CE1ByKoi+CM-5rfsQQtQXzXYlP!T9YwsuhKbIM<+#d$K(NpVaH zCGS4WRh#08!_7i}H|^wxPcnt_;aSmlZowA>nCo>6e3_D-F4&YZS#u*XuO4CMw7~7W z(0+{*$S$;bd33|NMTqeL7od8gmGUa@)kC2-@lfc+j>0yUym~2|0RMj)9+hqC96&%L z0K+NT44<9z>P@}@QilpoZU)?X!dqfEH6Fq?C6ZoDZ)+@zo_9tmy8vf~-I}sg62m*o z`Ip7jJ>22gh{gUGWEWz{()yK~&)2N=-*N-n^zY2F1h}tv4VnF5+K@v`7-5#$j zs^x$}V!YW9pWgg=Ift%E-C_~Gid)>XSHVI3$esOlp?|Hf**|`u-7VOEIf60tOye!ttY7W#S zg{AN7m6TrZKD(tG{nNM4b1z&-;j#xP&-EF?mWk-^^xM*N zq2ZR1^hU3^i;cCP_xgH1AFX@m-TQ20tlNON1)+62$W}3Vftw0YeP=2!AP6s!O2XCG zma~;Py?gK>8cf&BqmSWrM>MY>2n{|VQARS?vnkE9)vF!~eF)B?}~IKaKMTig5( zFw#oa(FG8ZOI9CiPGnKDarTMGskOI9Gp5!gZ6PQap9Op+8Nkh8oIB&0N2u{1g*MMS z@aGH`=ig^^n;tB6Oh_#ecHn*`f=LC#?=}Ve<$%C%Tq|$bn)=$Q)va09ot9(+SlqiLFqJ;dv;Wn-=nC-gATuT5I1wn zR%89K)h&f?@EU%3lmuBR24a`?w^(C=ELs-c?9j47agr)f!^Q#!cOedB&2`Hd23o!r z0b(x!!vCG3SpaGlsi@?EwUHTRb5{D5<_(=y;ktE{#&=hmu{t+rXF;LL^lra{)Vyyv z&C`{$((?;bo01u6p(Q8dQ9`;={1Ex%M8#FNeEDoA2n4Lgj=O_Gv=$l41(v~nuRCCc zwi06#6lfy;XeD4XxP{#s(&Z(cK5m+5Mm>N;ZNrK%?(eLrQ^-GnwFoRtq zW&pVEsqyV9+$btkW^HI|gnxNbL8y5Q0A;RG<@q6a8ZR?0cG5=oM5RGg#2P>*4`2rNkKO2mdke%=>$6gLT1-#FN*`o{m#0&w*#x(XE%Gr5V_ zmXQcyJXy_jkR&-$JeBYyp8L2<$_A>E*s#a_1~RCWEN}0G}tw_F8XC8VHc3+vh)>PO=L5=VF6zAQh z$REP&QHm^<()x}2)tCNL*ylVN4B0`sMJ;gi$d=bmlOm(r^qRHnsaPvm1XTG@^MJE$ zVdl_7^y+@aw?S?$PHv;juyj|kC_B71BSCykr=@$BS|1s6*v4}0z~|Tk#5KDbdG`a( zXCWp|0wc&q;cBp<9WvpS7c>?1&j^5m!kMQT@ai+&_loBT8Pj;eNKqqUWK(V`DD3@c zZ|UQim8Tm-<1SI)75erWB3v=JT zpUDU_FtHTbk13Gg64?c*HFdK@OWdsaW8(A9za$P4idrmsz|f@Kg#DH zN5aoUa$LbdFUGxgA0WhncqEWI+dJ40d!pmDa4wDgkY)k%@_1quHV6YriJ=6zr>8fP zdTLFc6<_B^_ex_9L>=nn?5*16Pn*um!)ok>_F;CHvSd)`wt0T3)#L1ncMZD=4V|fj z;jEShhQL7VFsl2&t?cTB-XRCRNWHSs*&zf~S%L6DFlo=+`Axd8Eoa4301Smzq+}T4 z<=3JO1m;$_{Enk?Dv|TM!Q4RBWqb>@%6SyR$PZGv>MV|g3gi1-C+paUHObo52sBf( z7$9m3fQp(bPnw2Ge<#5gMO2ndLLL|Gh*1!W;xVz*y{E+w<|Nt$h1j}^?H5c}7sfxR?A~GoKl#2KCLlg=zth-_MRxTU^ z@mZnhuF|t=&R?+Uy@8XP_w(S;w-nvP)rJ8LY*t4PV7X|Mc7+NAK#(Eb@*Oz?!MWN5 z#O|)P&k3_(=`p*GnAV@n>yt>f|n}+M5p*P=Y*FfzT`%Zl?^bd zM1v1)vtebZaX44Z*@AJ#G>|SM2~R>KxPl$p-T6YVca@W7@ItOlCP$ec6jV|)8pXFY zFsev}3kzejN6TU?K8`XCy`a}|+yFB!VJpO5X)Rf4MWqB4qj7e3@q zb*Pe;HVOMJnEP1~XV;R`17@<8_w|e_2(9?BIc-mZ>J_YAJeJX@@OvyZqCW)6%>{jv zfkkt~;4;B!Acq=wLGc46zw&wPM*NDwnko+Xxh244SF>T3U^YwQ;ULz*3kcbAj^v%W{ z8ZUZyZ#6o|g`B(+_5!+k^}f};wwE)KMo=}NNUj9Ww(7Z(lbdgp-9y3`BDccF&||If z|J;TZZ=r}aULoGMWCHmeIo0^7;ZC zj&aOzYC8#~Ot4F~Q^OsK$Z=GaWTLdv^XwnGx^&6(`=2n?s+Iwt>tDLG}5Ek*^{ znMr$7g6Rjn7{^cPPp||FHstq9fOn$jL_~*}z&6%b0V+fY_(s3R))iFxRgDm2wn6lMV6yr9D=h18lBkshW25 zgmYHG*|EE5qijymWEy>s$q=(6Q^x@qbRf< z@iLIgfJR0_Rh1srYjp8v)m=1kOEARp%tWJ5QF?PQQ6!~K3n3gk{yMA%=+=&WwrNZk z7603)E~C)eJt!1}n0Vo4Ty(txAR<$i`w988tseF14}h%=fMxo>AvyaAk&^FJN0h7T z<=L(GY7bcf7N;E&(H(OW`Djj$Hvr6~{!MhP446d=S>2t(!=`G69iSuwy$RZ2XNQ6d zZxqDMN&PaLM1PlPC6_)lA6EdeFT+h)b+u) zpGxrnnEx&Z_k0#X#`Z1Mvj;&o#j_E`f`-uZJc8big@1r;1RHv?K6jTg?&nAjpk8_f8QdUB8hH>HR8v3Q#ru5CzN-+U zip~weBZLC2enXM={sbWA`-8I$3&8Ts-Nra#vj2GfKVRa3$QM&jW2LD+aEp`n1=|J$ zhzSSXbw0L$TvrzAW$zJHkiJ)$iw(fs9!tyYGZ8)XK(uDMQVa+fxvl`hpG}6=Nqs@y zEs#1zLgirpgV}SX2R_{5lO_+qAQJ&E4yJ`(9&g6OQmRg-9WH8aF`)UB3}4R!h(wE; zkwAXU#GK)%+Wph#ax=LAD2qtw$NVrFiKt&GQoZ^JF(*+7-)xH23t{j=L$(eoknK9n z5x4=XI&?5s!zjX3-bV@Qd8fC(0Pwmk4-z>W1QjSudytSufB_SqJOR1btN^Uv27swX z$-;fB0WK(YfhTpk#!PvHceK0%uFXEv!z0U*EUTRl1HH|P)d3FLOt7&+|ZgbeOYeKj3SU;%h5Z^6|-Qr`W)#a}X6Yd(xj zIHF(wJ&XsaLD^U^baIWy1*ubZHr?c8^_GQr*Dk6c^jT8;^S7#OmP$l0D`SPmQZSoW=5dI_2LhD$(-~HPBYkbd z?;c@B4eEiUXKZBveqzZY1y_U;wD~D9o&f5(YWU&_w}Gz`h9)^VR_XKo>9U{salCQz zXjI+f?CICTl2L{swLYpdX>zF#%U5KjeXJkj7b2S` z+I1g`VHg{)KK)X^51uFfW5*8l+m9;18EN1=tQiB;7vJ|1BR;?q9!(vl&VjhkQx=KG z0r3VXQd=+@^OP;5@_Xw>rv0Hs%CFQ2V4kG~?-uk|;KD@`AwvC&3$VbT zaEB`Q@di$E`ce}V9BT<3-5WZ%R?UaE>afXLE6pkYUQb&RI)KH|`rf%2vJ{mVCT2_9 zyOW83<-ke#!!Cp*^sOW{yCB9_^Z<{)2P*rNws;_2$8o6EiHmnH?URp-=*EaRT4MnA z*kKOP9Rpm|alS7FteXNtbfakH=|&RXHGe-YL!a?uR|pmeMH%YLmIye#^3*bFbp;5Q zDgTWdIt2`??xPzD+=C4=#Dc#;XTt*!nhPye;fC0=L*d0VU-3^c2+`INz8xgl?;QAk~~jHgfweP5khb0VEazuf6IV1ZE66q49ge%M{< zG}z`e9r+5Ngan)7DA1A9ZjE?C7)c2cgn}C}+51sx6C!$m_R^dE(C9&@w1>BW2@oYK zpUwf~XY$G8w$PWwBp5BGL*$XTa*ht!{dO)S%96xtRp$%b$0k zDWF$A#>udTyzwy#vQ0MRKvT6#v7_w>bX!q95fED4odu}EhTeKrH+OMR~B-&hp*AVKa^AjKTAX}>LWSR?T4 zji78x(-+2)`iQ4Lh(dy-bmn7fYCHj<3N;}9A{W2v?~Ni~vQsq-RjLx_z4^iA*BaZU zl;78wgCp?t;154wpAIgE5eiSPo!Iu;L1n8B^!$?(g~>LE_Ga4OsGbpOUNTV|~H zF6{PL(6Bq+UuT|WzJNx^-OZD~!908C)C%vbX+MGFXy61H;sVW-jTiOn@7D9oCidCA zg<>`4+llpXA<7Zu0qXb{KFuF2A=xjW0oX*Mp}WJ{A6Ud=XrIHEFyiI_e7@LwPgjTv zvUj15?=?g??P}bs8mmN*j6dI3C1BtsuwPnpT1J~poRn`x zx3QvHo@o1j4w}go5zlQ4RHM)9jkkQA3lYDCvN4>R2&Qu4P`S1qIA+w?*M zvv)oK3%^g;+Ckpn!Co=*$k|&@KXehQyNDGG?;RW!vusz9-n>|k9#cW*OcGUFO{W3s zlAtU2Gu6y>X>gD5K*MZ7XOdK$Y}IBA5x(~oEa+;1p9d3n?yPgV4-gSpNvk4O$vCum z_q`b!;ynqTaWE3cfwqxo-ZuyE%>KmAXv|#?CKK@_he3R#)3!7R(df-3a{W?{N9q{!2rN&>pr_=9jMIrLoquND9Y?lDrDUicM?c{@ z{y`6<>coFc|H5X_EJhL`sKz#Yd$5g}v>-8@2*Te;a^HxRne->$yUJmQwp^Uh28;(J zJ9!r>QF2V;^J>+y7z};xPuUn|i9J{3DNiIo@YKTSVcpbdWP!_G=ekZTvG8!|LAR1? z`|rW5lN2~mxNUl_3q0zA8*BQ~PLjli1=wcf-32TTHk{+gfT+h+?L?Oyr6wTq4JM$r zB!_Pim!Pb)xSdqvT?@W|`tj@KcJ?or4P5MeLGlqGR2>d!Ab6#JM^BQuEHcfWJ#t(y zgHOuo;gtR7w%RUL2iAaKW!%56#T*?fJa##X+CjsG%GWQ;j{C%@cvT3GJFiZ= zXx|4=ETksmM=l^=^7f{6(DXx;$^_bkeh5tBJ6d1m?=RN?6*&3cdhpX)VQc2Nj8%W| zpU+r`$lPsoc4ew2F%@|1`TO zPQ*)fRPpkC&|iE^XvB+ggM@N=?zH5GYgKL)7GU>B*wD$*waw@)aT4-J>@0w)>F4r^ z&br{pORmWwBOsreL|apL-xk&r7~qNQS-L$=nNLS$V^=aAN}7`Ns{bnT`swzpgy({2Rk0%h%oR)dr3A;FfSkS0;Vk~b10dZ^p( zo<7-3M{jcUve$RphTmSB+=+w~KuGb=0A3YErs$2Ao_MU#NMo~@^`DbbA!V@$UezD* zVz~u`! zGgq>}&4x@4fycy4C9H8eo4SrbaHn?9twL~Zi>;U7Q8wJ%HcO>~W0KF7->|3Cw9kR+ z&kB=Jr6CJ=qjQnJfXA1dA0(K#FSuOgZs>*QMKMTPWC~Ajy(c%ncs%T zQ{2^|v$_ZS$q7g2Y7QQXG&(d44e+$4YkACn1%YI{T$g7I*e@j4$3E5WmvI!rcnK4( zhTDRDFJAzA1t@xWH9{6Y`EmT(+eaZE)9q{W-wzW|(o>bx4X|268k6EziTmnRqL^lf zauXOOn!|Hkcd@pBbj&IA;yKkadY*Ko>i)Z;{SX9;Jp+Uo@y9aI-A`$&HE!5yd)6x{ z42Tha0CbgucZRAk{)Xg*xbU-C%uZ}B5J)99rR~TfnMFuRxIVK z|J)z6U?SeMvKzevD}`+HX=LboUqW@2J}N%7eO(E&6krO&?`rC9z-2bjtR__h?NMPk zlQuudS@2Gt5klaWsM(?S7sw8(;Q44l!_T&oB-78(GQ-K(o;N(ft=m!%nml7Er;04V z(Uoi!|FWf-c=1P>s$;N zVp$k6iYug;GGz<`cRf!RKPlog!0vlc#t%=JBEuGVKR1`9pbb0>l(J;|HWg?<^H~b# z3up^X5}T$HDI1-`@QW*lqU4^IXx=*!08P_hhgSea*jIZ>&&(MZkY+tWXSBKOP>wZ>#0&tMO4ZIt7dZO(8FS!1zNjn0t(8txuP;3%IX5U4 zL?7`5>2^481*sO_Zz-4kkYNK$NZkjZ($xJVi@Z@Rs4p>0iVo{;dEi-U8pN;X%wA~e zQmBz;)~Men%-pRtlNxcX`i(noEg@Tg?I55))+_paAquFVDjIcPxMNmJ zkaSvM)W0i&NsyXWHM6L%HW~Ds`I9BB3#=&@t*-IbvBky4rwc|EK-B$&_P)oM`IiMm z;KCkgd}|@Ida_35e!4wgyd9N0|J>pmF^0)T2Qy5O`U1#g%MP=;UyDH!*d8mkJ+v$} zUlE(NQE#f`os;YVH@wZW@y;ia^)!=tRZg{ z-xs|b)*K{Es6)}eJ6H2X2aprm?-nF~D5G$rlKmL8AAQn~ke@cM7HQ4_h6&ud`w@eA z49E^bX?CoQR@NdlEB1LQC5pf(DGFh7v3Ql?H>JhYm; z1606K*&B0#Fws0vWROex=?kv=_}XHr7^18y>HLD55WCAa*Wd)KqEY0ABINf1Do)aa zm9g&y;3Q3wXud}HyDVSQbHf^G@IjdGLkOsocAWm6x&wF51}!q6fSO+=!T)l@HUON( z9!S7gibf)#QrYFSo$jDix909S7g92;WN-wiydCkGkc_IS#yxh~5FI}e1HACZ3=#-u zc4c^kY-1D~hpm+Wtoz7B)QL)BJR&k--x`AVii_PKXA6}bAiiDpTwSKsw`4w1+FSiV z;kCbkwKFHC{j+@aHtNS>&H%J&h3p|CK(xTduR`npXBcqt1#a;L#iA~I0QXb-O6b(& z3ufnh26oJb)T4QT2EQ|HO=ellRTn%z`=^=G-n14c=?L5m{&t{4O|1RRJhqn#AWCOj zDnUW1GLUmE2&Ah(x|IikQ>b=Ag#gg(*Ne1AS-`#X8@{MMGJr71DLLD%{h!|3Z~wl3 z1u^2+Xy~#BHRf4zrzHE~qzd&i1M^>i3ArFAsa}~lK2HjL@_a1@M~^TNyzp@{bQNw8 zsg6D-di^o#Gq5j%Sz1#5>8>Gqy}qNe!yn+S|{n70p6iJ=i$fu z!pPTPKnBpj3Abyt4cY`mjbFF}_J>d@0dA44@FD*bwAkk7bWHrviULpXjZ1PQMtrW1+g!ijW0?{u@kc;p9zh^v= zOFb*%Oqam+Ab?Un%XmA54n!1T;upBOPe4o(j?E^MK#B$c&y%^PSGa%-$Q%2a%N=0- zQ)1I!fm{IaE6K9J8vqO5w%ig7cF2OZVo-Yd1M}x>|6hxs2^r*-_}JFSw!#Mj#B&RL z^^AAQ0Qx=ILJdSO;QH7nAdaNetAJ+Ck|K38_Y$M<0<#moI0A+WEsh#XZ1HM*SR5iek$JjtSaDKVy4UWCEwIHoz~G?UTDsFru8g|TzWJC0Ps@TXgNT)0BHDz zLrz|hfRaaQ=-H8*@ZVYE+J(nsPwi)7ZTWxoQndaA#&=AUef0)F!mBg71dJ&q8}^&} zwlP63dI@P?n?E+Z<50;BeDgdkR!$im$Bh75O6G1C;~L@zluTx6ZcXq zl>+FC=5(iNEz68fRjEVS5^~S;MHkg-6S>y&WzUn5>|5afL%^OZr57a-AENvQ!Pt>8#qFz7C+ruW7l+spQpEf)U+a9ixDR84TbeNsQ6LJp0-n=g5&)qIl^qGXc+R(a5?I zlLeFqCEErp#@@V-8I2|K?ERa|^xO3^J&)ybq<2YVXkyQpvrhmaYa-CgHXanX9Z)

lyD1b1*W-1*rDE9VIZoI8CXK- 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 diff --git a/docs/articles/workflows/pipeline.md b/docs/articles/workflows/pipeline.md index 63d7821..98014af 100644 --- a/docs/articles/workflows/pipeline.md +++ b/docs/articles/workflows/pipeline.md @@ -1,9 +1,5 @@ # Pipeline workflows -## Git workflow - -![git workflow](images/git-workflow.png) - ## Release workflow ![release workflow](images/release_automation.png) From d5da5e2d165926970d256414606e1beff81c4626 Mon Sep 17 00:00:00 2001 From: Benito Palacios Sanchez Date: Tue, 21 Nov 2023 14:55:58 +0100 Subject: [PATCH 3/6] =?UTF-8?q?=F0=9F=93=9A=20Document=20design=20issues?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/ISSUE_TEMPLATE/feature_design.md | 80 ++++++++++++++++++++++++ 1 file changed, 80 insertions(+) create mode 100644 .github/ISSUE_TEMPLATE/feature_design.md diff --git a/.github/ISSUE_TEMPLATE/feature_design.md b/.github/ISSUE_TEMPLATE/feature_design.md new file mode 100644 index 0000000..3013e06 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/feature_design.md @@ -0,0 +1,80 @@ +--- +name: Design +about: Design a new component or feature +title: "[Design] " +labels: "" +assignees: "" +--- + +## Description + +TODO: describe the new feature or product + +### User stories + +TODO: user stories in "AS A/I WANT/SO THAT" format. + +### State of the art + +TODO: is there any way to implement or use it with the current state? Is there +any other production implementing it similar? + +## Technology + +### Candidate 1 + +TODO: description, pros/cons and links + +## High level components + +TODO: diagram + +### Component 1 + +TODO: describe the component, what it does and how it interacts with others + +## Deployment + +TODO: if it applies for the project, how to deploy this new feature or product + +### Installation + +TODO: how to install it or get it? + +### Upgrade + +TODO: how users will upgrade to a new version? migration scripts? support +side-by-side versions? + +### Configuration + +TODO: how to configure the new components? what technology to use for +configuration? + +### Monitoring + +TODO: is it required to monitor the product running on production (e.g. cloud +apps)? how? + +### Logging + +TODO: how to log messages and view them? distributed logging? open telemetry? + +## Public API + +TODO: class diagram with an overview of the new API. + +## Extensibility + +TODO: how users (developers) will be able to extend the API to adjust to their +needs? + +## Frontend + +### UI + +TODO: diagram with the UI design + +### Frontend components + +TODO: related components and API for the frontend side. From e07b2e818d89c81be0b4ccd337191e4cbc7e13ae Mon Sep 17 00:00:00 2001 From: Benito Palacios Sanchez Date: Tue, 21 Nov 2023 20:24:30 +0100 Subject: [PATCH 4/6] =?UTF-8?q?=F0=9F=93=9A=20Document=20versioning?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/articles/toc.yml | 10 +- docs/articles/workflows/pipeline.md | 6 -- docs/articles/workflows/translation.md | 8 +- docs/articles/workflows/versioning.md | 140 ++++++++++++++++++++++++- 4 files changed, 149 insertions(+), 15 deletions(-) diff --git a/docs/articles/toc.yml b/docs/articles/toc.yml index a0b210f..abbede7 100644 --- a/docs/articles/toc.yml +++ b/docs/articles/toc.yml @@ -1,6 +1,10 @@ - name: ✨ Getting started - name: Introduction href: ../index.md +- name: Project architecture + href: ./getting-started/architecture.md + +- name: 📁 Repository setup - name: Setup guide items: - name: Creating a build orchestrator @@ -21,16 +25,14 @@ href: ./getting-started/build-script.md - name: .NET tips and best-practices href: ./getting-started/env-dotnet.md -#- name: Framework architecture -# href: ./getting-started/architecture.md - name: ♻ Workflows - name: 🚧 Pipeline href: ./workflows/pipeline.md - name: Git flow href: ./workflows/gitflow.md -#- name: Versioning -# href: ./workflows/versioning.md +- name: Versioning + href: ./workflows/versioning.md - name: 🚧 Translation href: ./workflows/translation.md diff --git a/docs/articles/workflows/pipeline.md b/docs/articles/workflows/pipeline.md index 98014af..08c87df 100644 --- a/docs/articles/workflows/pipeline.md +++ b/docs/articles/workflows/pipeline.md @@ -1,9 +1,3 @@ # Pipeline workflows -## Release workflow - ![release workflow](images/release_automation.png) - -## Version workflow - -![version workflow](images/version_definition.png) diff --git a/docs/articles/workflows/translation.md b/docs/articles/workflows/translation.md index d29d7bd..903e217 100644 --- a/docs/articles/workflows/translation.md +++ b/docs/articles/workflows/translation.md @@ -1,5 +1,9 @@ # Translation workflow +> [!NOTE] +> This is an initial design of how a translation workflow could work. It has not +> been implemented or tested yet. + A _translation workflow_ would allow to translate applications during the development lifecycle in an _agile_ way. @@ -9,7 +13,3 @@ translation files and contribute back to the repository, so every build includes the translations as well. ![workflow](images/translation_workflow.drawio.png) - -> [!NOTE] -> This is an initial design of how a translation workflow could work. It has not -> been tested yet. diff --git a/docs/articles/workflows/versioning.md b/docs/articles/workflows/versioning.md index 7762374..caf74c1 100644 --- a/docs/articles/workflows/versioning.md +++ b/docs/articles/workflows/versioning.md @@ -1,3 +1,141 @@ # Versioning -TODO +> [!IMPORTANT] +> The implementation of this workflow is not finished yet. + +The version of the products follows a _pragmatic_ alternative to SemVer. For +that, the tool [GitVersion](https://gitversion.net/) can help to create it with +some adjustments. + +Versions have three numbers: `major.minor.patch` with an optional suffix that +may be supported in some technologies as a hint. + +- Upgrading to a **patch version (third digit)** should be close to a drop-in + replacement. It has important bug fixes over the release. It does not have + breaking changes but ABI-compatibility (DLL replacements) is not guaranteed + (it may require to re-compile). +- Upgrading to a **minor version** should be relatively easy. It may have new + features and bug fixes. While breaking changes should be avoided, it may have + small ones (e.g. method name typos). +- Upgrading to a **major version** may require large changes. It may have new + larger features and best practices causing breaking changes. Some deprecated + methods may have been removed. This version may be incompatible with other + software that depends on it (e.g. network protocols or serializers). + +Given this definition and following the proposed [git flow](./gitflow.md), the +version assigned in each build is deterministic and comes from the git history +and current branch. + +- **Development** builds: + - Third digit: number of commits in branch + - Suffix: `-wip.` + branch name without `feature/`. + - If it's from a pull request (temp merge): `-pr.` +- **Preview** builds: + - Third digit: number of commits in branch + `1000` + - Suffix: `-preview.` + - If it's from a release branch: `-rc.` +- **Stable** builds: + - Third digit: number of commits in branch + `30000` + - Suffix: none + +As some [technologies](#technology-support) do not support version suffixes, we +use the third digit as an indicator of the type of build. Depending on the range +of this digit, we can know if it's a development build or ready for production. + +The third digit ranges have been chosen so that we can **sort** and **compare** +version numbers alphabetically. This is important for some technologies like +NuGet that may upgrade versions. Stable builds (> 30,000) will have higher +priority over preview (> 1,000) and development (0). + +```mermaid +--- +title: "Build versions per commit" +config: + theme: base + gitGraph: + mainBranchOrder: 2 +--- + +gitGraph LR: + # Start from a release + commit id: "3.1" tag: "v3.1" + + # Feature into main + branch feature/name order: 1 + commit id: "3.2.1-wip-name0001" + commit id: "3.2.2-wip-name0002" + checkout main + merge feature/name id: "3.2.501" + + # Create release branch (LTS) + branch release/3.2 order: 3 + commit id: "3.2.1000" + + # Hotfix after manual test failures + branch feature/hotfix order: 4 + commit id: "3.2.1-wip-hotfix0001" + commit id: "3.2.2-wip-hotfix0002" + checkout release/3.2 + merge feature/hotfix id: "3.2.1001" tag: "v3.2.1001" + + # In parallel, new features to main + checkout main + branch feature/name2 order: 0 + commit id: "3.2.1-wip-name20001" + commit id: "3.2.2-wip-name20002" + checkout main + merge feature/name2 id: "3.2.502-dev2" + + # Merge release branch to bump number + checkout main + merge release/3.2 id: "3.3.502-dev2" + + # Patch on LTS + checkout release/3.2 + branch feature/hotfix2 order: 5 + commit id: "3.2.1-wip-hotfix20001" + checkout release/3.2 + merge feature/hotfix2 id: "3.2.1002" tag: "v3.2.1002" + + # Merge hotfix to main as cherry-picks from now on + checkout main + commit id: "3.3.503-dev3" type: HIGHLIGHT tag: "cherry-pick hotfix2" +``` + +## Increasing the version + +GitVersion increases the `minor` number automatically after a release (git tag). +The `major` and `minor` can be defined manually at the time of creating from its +name. For instance `release/x.y` will set the version to `x.y.30000`. + +The third digit is configured to increase after each commit in the branch. + +This schema guarantees that at any point, rebuilding the project on a given +commit will give the same version, allowing deterministic builds. + +> [!TIP] +> Depending on your pull request review platform, you could also increase major +> or minor via commit messages. Check-out the +> [GitVersion docs](https://gitversion.net/docs/reference/version-increments#manually-incrementing-the-version) +> for more information. + +## Technology support + +The _pragmatic_ SemVer-based version is proved to work with the following +technologies: + +- **NuGet**: uses SemVer with three digits and optional suffix + - NuGet sorts higher non-suffixed versions. Then it compares with reverse + alphabetical order (no suffix > rc > preview). + - ProGet feeds does not support dots (`.`) in the suffix and long suffixes. +- **.NET assemblies**: uses a version with four digits lower or equal to 65534 + - Ignore the version suffix +- **MSI**: uses version with three digits. + - It does not support suffixes. + - Major and minor must be between `[0, 255]`. + - The third digit must be between `[0, 65535]`. +- **Windows**: uses version with four digits. + - `VERSIONINFO` and `FILEVERSION` does not allow suffixes + - `PRODUCTVERSION` allows any value as version text. + - Major and minor must be between `[0, 255]`, other digits between + `[0, 65534]`. From f5d9ac2c176ddd91bb749a4729631c053ebecd50 Mon Sep 17 00:00:00 2001 From: Benito Palacios Sanchez Date: Wed, 22 Nov 2023 11:48:59 +0100 Subject: [PATCH 5/6] =?UTF-8?q?=F0=9F=93=9A=20Document=20pipeline?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/articles/getting-started/architecture.md | 13 -- docs/articles/toc.yml | 7 +- docs/articles/workflows/gitflow.md | 11 +- .../workflows/images/Release process.drawio | 1 - .../workflows/images/release_automation.png | Bin 102354 -> 0 bytes .../workflows/images/version_definition.png | Bin 33376 -> 0 bytes docs/articles/workflows/pipeline.md | 182 +++++++++++++++++- docs/articles/workflows/versioning.md | 3 + 8 files changed, 190 insertions(+), 27 deletions(-) delete mode 100644 docs/articles/getting-started/architecture.md delete mode 100644 docs/articles/workflows/images/Release process.drawio delete mode 100644 docs/articles/workflows/images/release_automation.png delete mode 100644 docs/articles/workflows/images/version_definition.png diff --git a/docs/articles/getting-started/architecture.md b/docs/articles/getting-started/architecture.md deleted file mode 100644 index 8c608e4..0000000 --- a/docs/articles/getting-started/architecture.md +++ /dev/null @@ -1,13 +0,0 @@ -# Framework architecture - -_PleOps Cake_ provides a set of common tasks for .NET projects. These tasks are -implemented using the [Cake]() framework. They are provided in a NuGet library: -``. - -TODO: explain concept of tasks per delivery type. - -TODO: explain build context concept. - -TODO: explain user defined tasks. - -TODO: diagram of nuget + build orchestrator + CI diff --git a/docs/articles/toc.yml b/docs/articles/toc.yml index abbede7..a034970 100644 --- a/docs/articles/toc.yml +++ b/docs/articles/toc.yml @@ -1,8 +1,5 @@ -- name: ✨ Getting started -- name: Introduction +- name: 🏠 Introduction href: ../index.md -- name: Project architecture - href: ./getting-started/architecture.md - name: 📁 Repository setup - name: Setup guide @@ -27,7 +24,7 @@ href: ./getting-started/env-dotnet.md - name: ♻ Workflows -- name: 🚧 Pipeline +- name: Pipeline href: ./workflows/pipeline.md - name: Git flow href: ./workflows/gitflow.md diff --git a/docs/articles/workflows/gitflow.md b/docs/articles/workflows/gitflow.md index 40df095..368dea4 100644 --- a/docs/articles/workflows/gitflow.md +++ b/docs/articles/workflows/gitflow.md @@ -102,12 +102,9 @@ numbers. Pushing changes into a release branch should happen only via pull requests that are carefully reviewed. A new commit will trigger a new _preview_ build. -Once the release is ready (stakeholders signs-off) git tag the latest commit. -This will trigger a new _production build_. Depending on the build system and -_sign-off_ process a _production build_ may not involve re-building again but -downloading the latest artifacts and deploying them. For instance by using in -Azure DevOps a _manual approval_ task and keeping the _preview_ builds from a -release branch blocked. +Once the release is ready, stakeholders would signs-off / approve the release +and its quality assurance results. This approval is transformed into a new git +tag to the latest commit. Pushing a tag will trigger a new _production build_. After the release is out, a _release_ (also known as _support_) branch can be used to work on regular patch release like for _long-term support (LTS)_ @@ -132,7 +129,7 @@ epic is merged into the `main` branch as it were a _big_ feature branch. Try to minimize the usage of _epic_ branches to prevent huge merge conflicts later. -> [!INFO] +> [!NOTE] > This schema does not use a `master` branch as the original > [_git flow_](https://nvie.com/posts/a-successful-git-branching-model/) > proposed. This branch has not much use. It's possible to get the latest stable diff --git a/docs/articles/workflows/images/Release process.drawio b/docs/articles/workflows/images/Release process.drawio deleted file mode 100644 index e80366e..0000000 --- a/docs/articles/workflows/images/Release process.drawio +++ /dev/null @@ -1 +0,0 @@ -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 \ No newline at end of file diff --git a/docs/articles/workflows/images/release_automation.png b/docs/articles/workflows/images/release_automation.png deleted file mode 100644 index 8df938362f840408b9da2bb415125fb8f907c600..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 102354 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

e&hzHc-Yv7H7iCnB3_DK&M8<=!UIqVql);hqB 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 diff --git a/docs/articles/workflows/images/version_definition.png b/docs/articles/workflows/images/version_definition.png deleted file mode 100644 index dc54d67e5eac98c6427ae0fef75ffb6fc435e5ec..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 33376 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 U3#7L%z`#FsRUMV;>$tH015-HRd;kCd diff --git a/docs/articles/workflows/pipeline.md b/docs/articles/workflows/pipeline.md index 08c87df..46b9ee4 100644 --- a/docs/articles/workflows/pipeline.md +++ b/docs/articles/workflows/pipeline.md @@ -1,3 +1,183 @@ # Pipeline workflows -![release workflow](images/release_automation.png) +The process of building to deploy in production a project happens in four +stages: + +```mermaid +flowchart LR + build(Build):::orange --> deployPrev(Deploy to preview) + deployPrev --> signoff(Validate & sign-off):::blue + signoff --> deployPRod(Deploy to production):::green + + classDef orange fill:#ffe6cc,stroke:#d79e0f + classDef blue fill:#dae8fc,stroke:#7e9bc5 + classDef green fill:#d5e8d4,stroke:#96be7f +``` + +The continuous integration pipeline will run our _build orchestrator_ targets. +The build system does everything needed except setting up the build environment. + +## Build + +This stage happens for every type of build. Here we build all the deliveries and +run automated tests. This is the core of the build system that developers will +run locally as well as to validate pull requests. + +```mermaid +--- +title: Build +--- +flowchart LR + prepare[Prepare environment] --> build[Build and test deliveries\nTarget 'Default'] + build --> bundle[Bundle deliveries\nTarget 'Bundle'] + bundle --> upload[Upload deliveries to CI] + + classDef default fill:#ffe6cc,stroke:#d79e0f +``` + +### Prepare environment + +Setting up the building environment involves: + +```mermaid +--- +title: Prepare build environment +--- +flowchart LR + classDef default fill:#ffe6cc,stroke:#d79e0f + clone[Get source code] --> sdks[Install .NET SDK] + sdks --> orch[Build orchestrator] +``` + +In most projects the steps to setup a dev environment are simple and the cost of +automatizing may be larger. Consider this new technologies for it: + +- [VS Code dev containers](https://code.visualstudio.com/docs/devcontainers/containers) +- [Windows dev drives](https://learn.microsoft.com/en-us/windows/dev-home/) +- [GitHub codespaces](https://github.com/features/codespaces) + +### Build and test deliveries + +The process of building and testing should be provided by the build system. The +process is usually very similar for each technology or project delivery type. +Consider implementing these steps for each delivery: .NET, Node.JS, DocFX docs, +MSI installers, ... + +```mermaid +--- +title: Build and test per technology +--- +flowchart LR + classDef default fill:#ffe6cc,stroke:#d79e0f + sdk[Install tech SDKs] --> restore[Restore dependencies\nConsider caching] + restore --> version[Define versiong] + version --> build[Build] + build --> test["Run tests\n(with code coverage)"] + test --> linter[Run linters\nCreate QA report] + linter --> bundle[Bundle artifacts] +``` + +> [!TIP] +> You may want to skip some steps if you repeating the process on multiple +> platforms (e.g. testing cross-platform). For instance you may want to bundle +> only from one platform but run the tests in all of them. + +## Deploy + +This stage only happens for _preview_ and _stable_ builds. From the proposed +[git flow](./gitflow.md) this means that it starts when there are new commits in +the _main_ and _release_ branch (if used). + +```mermaid +--- +title: Deploy (main branch) +--- +flowchart LR + download[Download CI artifacts] + download --> deployNuGet[Deploy to preview / staging\nTarget 'Deploy'] +``` + +## Simple release variant + +On small projects we can skip having a release branch at the expense of having +to **re-build** the project. We can have a simple workflow from GitHub as +follow: + +```mermaid +--- +title: Deploy (main branch) +--- +flowchart LR + classDef blue fill:#dae8fc,stroke:#7e9bc5 + classDef green fill:#d5e8d4,stroke:#96be7f + + . --> tests[Run manual tests]:::blue + tests --> docs[Create GitHub release\nFill release notes]:::blue + docs --> signoff[Sign-off by\nconfirming release]:::blue + signoff --> tag[GitHub creates\nthe git tag]:::green + tag --> rebuild[New build & test flow\nrebuilding with final version]:::green + rebuild --> deployProd[Deploy to production\nTarget 'Deploy']:::green +``` + +## Release branch variant + +If the build is happening from a [release branch](./gitflow.md#release-branches) +then it's a _release candidate_, a potential stable build. The pipeline then +blocks waiting for the user approval before resuming deploying to production. + +```mermaid +--- +title: Deploy (release branch) +--- +flowchart LR + classDef blue fill:#dae8fc,stroke:#7e9bc5 + classDef green fill:#d5e8d4,stroke:#96be7f + + . --> tests[Run manual tests]:::blue + tests --> docs[Create release notes]:::blue + docs --> signoff[Sign-off]:::blue + signoff --> tag[Git tag]:::green + tag --> deployProd[Deploy to production\nTarget 'Deploy']:::green +``` + +The step to create release notes and sign-off may be different depending the +project requirements. Some strategies: + +- **GitHub**: it provides a way to _create releases_ with its release notes. + _PleOps Cake_ provides + [tasks to export the release notes](../recipe/github.md#export-release-notes) + from the current _GitHub Release_. This allows to use the feature of GitHub to + generate them automatically and then adjust manually. You can also use it as a + _sign-off_: + 1. Run the build pipeline and validate the artifacts. + 2. Create a GitHub release with the desired version number. Fill the release + notes. + 3. Confirming the GitHub release will create a git tag, triggering the build + pipeline. + 4. This pipeline will detect it's building from a git tag, deploying this time + to production feeds. + - Consider reviewing + [GitHub Actions manual approvals](https://docs.github.com/en/actions/managing-workflow-runs/reviewing-deployments) +- **Azure DevOps**: it provides a + [_manual approval_ task](https://learn.microsoft.com/en-us/azure/devops/pipelines/tasks/reference/manual-validation-v0?view=azure-pipelines). + The workflow would be then: + 1. Create the release notes documents as part of the development work (on each + PR). + 2. The pipeline from release branches will finish with a _manual approval + task_. + 3. Run tests and approve the task once it's ready. + 4. The pipeline will continue deploying to production. + +> [!TIP] +> One interesting design goal we should achieve is the ability to deploy in +> production **without rebuilding the project**. That is, the binaries we deploy +> are exactly the same we have tested and approved. This has several +> implications that affects the git flow and versioning. The proposed +> [versioning](./versioning.md) and [git flow](./gitflow.md) (**when using a +> release branch**) support this scenario. + + + +> [!TIP] +> If you use Azure DevOps, consider **retaining** your build and release +> pipeline for traceability. diff --git a/docs/articles/workflows/versioning.md b/docs/articles/workflows/versioning.md index caf74c1..c5098e3 100644 --- a/docs/articles/workflows/versioning.md +++ b/docs/articles/workflows/versioning.md @@ -102,6 +102,9 @@ gitGraph LR: commit id: "3.3.503-dev3" type: HIGHLIGHT tag: "cherry-pick hotfix2" ``` +> [!NOTE] +> This diagram assumes a _git squash_ strategy for merging branches. + ## Increasing the version GitVersion increases the `minor` number automatically after a release (git tag). From 8253a8f2c16f628e3d863bbfa8915197941ebc0b Mon Sep 17 00:00:00 2001 From: Benito Palacios Sanchez Date: Wed, 22 Nov 2023 11:51:26 +0100 Subject: [PATCH 6/6] =?UTF-8?q?=F0=9F=93=9A=20Adjustment=20to=20PR=20templ?= =?UTF-8?q?ate?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/pull_request_template.md | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/.github/pull_request_template.md b/.github/pull_request_template.md index ef32752..529af20 100644 --- a/.github/pull_request_template.md +++ b/.github/pull_request_template.md @@ -1,20 +1,22 @@ TODO: description of the PR work. +This PR closes # + +## Quality check list + - [ ] Related code has been tested automatically or manually - [ ] Related documentation is updated - [ ] I acknowledge I have read and filled this checklist and accept the [developer certificate of origin](https://developercertificate.org/) -This PR closes # - ## Acceptance criteria TODO: list of expectations it has passed from the related issue. -### Follow-up work +## Follow-up work TODO: describe any missing or future required work. -### Example +## Example TODO: small code-snippet or screenshot of the work