From 65c65e6a1676c9f932b83ff6740476700e8984aa Mon Sep 17 00:00:00 2001 From: Sergiusz Urbaniak Date: Mon, 25 Mar 2024 13:50:07 +0100 Subject: [PATCH] release instruction and script improvements (#1465) * release instruction and script improvements * more automation and tighter instructions --- docs/dev/certified-image-sha.png | Bin 0 -> 70430 bytes docs/dev/release.md | 137 +++++++++------------------- scripts/release-redhat-certified.sh | 22 ++++- scripts/release-redhat.sh | 6 ++ 4 files changed, 66 insertions(+), 99 deletions(-) create mode 100644 docs/dev/certified-image-sha.png diff --git a/docs/dev/certified-image-sha.png b/docs/dev/certified-image-sha.png new file mode 100644 index 0000000000000000000000000000000000000000..6c7f211dfe118b2b013f6d9b6783b10bbea490e6 GIT binary patch literal 70430 zcmeF3^;26>8|RA$hvM$;?(W4aNO3Pvthl>-DNgW0Tio4)yA%!X5*&iF>ASnLyR(16 z%KafTxf14{^VoU5pF^~kh7u+kDcYMiZ!lGq<=?+~gM|O)4O|ic8Fpqp>O|npo1ix; z@-iR2j8A|_IXa&n23;1qT3aj2D(%ZF%IrO12Q@Nl$jqwI`@b3VGEFocT7#JAi zQ#@|i7~Mazdr^$Ef4;`{_>XQzywgtVYSu0 z(e5uRwCUfF$ve`@X#X2Nmz1n5yI4Yw+MDAAB~MfuEV%dY-sT(MLm}YpGh{YHV8b8I^p#o(-L0#6gKnWz$_wqLKUh@^qis zcomO_hi4?Z(&%7N;{Pc7{{8n<)=wi5*i@9Osc?jTf6H{6xVoNrTiMX{?ghR~b+7qD zjaI770F+&J()JSwu9uZanI|o&v`)SUew#mQLdG-OunMXGXek?0LP76d^}sI$?yJBzs&;z zKBExxSd_z-uzY>mm#WYzkgdd%iM(&#PH?5|e+ki>t+i6MpZk@39EULJe)PL^xo%Q2 zyM{w(GxKx(7c=ajC|Hj za9W3%fMT8=UA6`Rm%~iAOE!5{&2MI3#9r>UfduQh8&4=yep3^|+ZYDbrZTW;Nh9I>F>)#+WnnDHK(7}!LB@3%+p zex{~qh_Vd!r0H?zt2__nCzisdv$A5U>$3dCN5T^X2ZrUk{mn`B7cd@?Bs5ICLfg zpk+J?XVdr!mYT6biLH=%D#4NX`aC33xrr|7;OMi8$G2!irWi^0nRlJ~`U@0@M@uEvE{8;MN(rlXM_(F$oO zLh=G0SS(id#lW2Ev9nG1 zuAZWE=CVUz{^hm@k?mnz_E^-TA@!_b5!Ef~iOlV)sYcQMg4I{+C83!GyN@`Ud-UYrwb)dNua1=N;oWdYNjx%=Q!Wpt~l9b z6^8n}J!U&1#NHxv*RS~8kkc=H=XFFWpGLxGEqt8X>HpX&dUms5(iHf#O{L+LUulsb ze^fbNVbCVB;B3{)8vbxOK;~3mqMp5+FB6(WfN?|iA<_$n7B^0~^FyfyNt(~xF_jU=u;2`7TydU=3LhakxKU7t>jvcoOzbBy9tcbB*JRp{nq9}UMu;#hhmu-5v%j-!&$yY z-;BMG%lNA(B4(~(DI!DXU?cyVzm8JwDCTd|b`59ce0J}vw-h$$1HX4Nsby@8C_Ly% zQ(k$e!_|VFF^NP%b>ZA45SRh6ug_?t{JqeNtIEp`+fc2N_l-#b-&0cf zj&7HFW$1~j#>eW-BE`ziSCl+pfmg_Ui|Upqoz0~Br$;y+sc)D&C(I(IX%h5O68lxyXv z97h##P#16u1!e`rGaNS>j8mmAXYQ6PUMMgjJrWv>7O*sOa6F%ojDD!N2-?+Y9i%-L zu&r=dPu8E+ulHzcAnTktf*M)(Sv&m5_sXD?aY@ft4p#2>7-mRsj$n^hXH_r9sD4v0 z)p1fgYDnXAzngC3X3ET*C~>PNWIpK4p9IT+&vDu&XeOit&0#>_)0R`GEw87G!PNj! z)%&Y`&+tbAUBgXLngv7G_`L#{k8S45dAvSD#THCRH$-}Z7Tgz%_K&`^RkhEw=yYC= zu#o`YABiK@XFIkI_YdaS&FQ;+6p8dX`%_l=4X6Xc2ERX?<82<0oG7SlJ1C4T|F%0) zS-C~pA4A}JL3c16+|P?_FLxw(Bq`eI#yKhV>gOrx&UnK{m>9(Yi1;e^MdrNaZYvfT zjx9@JK3P`Pd9+nJ0lL8!lHKaHioI)5l3pypQ#TZ+yPyMo!-B+cyY2kG>RY(3TycwN z;ha?K7+-fwpr)bep-=^Tf?Xn42B8HXJSHWe&7RRnq-O^aWR6og);!WDTaPJ@I8C?$ zfMSzngJSLVVTJ2$;CIJ6<6@Q>N}%RU-?-5F$qc6h-?DD8w&9;1^q45;uzyx{>bqS# z29*JCJUUCvNUX;~icLV&Tod6m{#WBmk=$}m0CoVRm|)`hpeT`-yD>-D7zkESgDg@sN-A`$5mOi*oshw7C4*h2WeQS#bBrArTyg-wcvSH znfmJj_LB>HsM`4bR; z{dSU-TBq$di1+eLcfv#779@=j_9Qzjm;`pP`QZ{Cs^MZI@o-9XM+pEa6oZK~i_E(3 z`3VKy(}m%Lw4$1!Ytz`><41_%ZDJ-vU_si$96c?-jTmPrs5LS|j1X>4A2jab2KaS+ zpr^H9=HI{W#)xBcfd4+yg=#KaPsxQVDtOLz%?Q6B@|Z?POKK)_z%FKj&Yg4%hn9vg z6jo)rU3{qWvF8${audgq{)Kl>RTCL3(QO`ahilOscw{0fIJXMmbo+jgv(Y>D{A~$y@m#q5eA*I38v%$yyE%cuL$<6-PlkLZpwY!(K zpCr0AVPs)^$UZ75h6rrRR8oX7QRKyVFMGZz1BY%(93O%eqMB_G6=tZ`vmEq(PT$hy z(dvEARW<>L0;I`DZ)(hoLm@~Cd#?2Avsl-$4Cfe88$o|b?!&~T#W6&E(G{`1W5p@# z%}8b#ujF{oSkh!D*}YpDhm4eMeh^`ZCNU1b7NdfMoo=@pmE2+xsu&S_L6&kM{$`>X-1e6e}!EIQdJ80o|Cn?VvZQL^HS? zHT+BxA1L29rsS%Wf)gjDzJo+8YhG=Y;&QV-WjVMV2L^Mhv2><8YQlUjOrK$vB@5zL!}W+=93 zcE3BZO-)c&XnWjyJKwKiY-z23n9z#27>5havY*nRUJFJ*X?+Un_Tzqd31oD3n1C*S zvFG7uXl29Gk zkJhH$4HB}i;HPno12SQUj_2pTXb=5{-x}nG&DPm?Y&q~BHNzk*yy`UHX}a8vn#0;K58L|Q@bO?{e? zU-jMxI#R8F_e|I=cZ!@g`}wROhOvpmrnqjl=jnx|5QaX3$N7?5Jz5v(q+!5$Vs{pe z76VE=*zP&{?yKl$mdkTVbw4V{L@~<4#r$1Jg$r=DqraC*ug*(6-pzmbJwcelIqdZO z8s3Z;|D1E2Ql6T9yP6W63oQS#)sf<%aJp6TPGzuI1%%h0tBlg@3Ga`%{Gx~MwOpUdI*Uia8>286SC^oKPLbz?D3KE7n4UtXOTzAVG)G zAMzABt>8tu>V>GVhD2KitEx$cV?UMYxF6;|4L0ENVJp6JamlU@KyA9?-Bd`WO^Xd_ zI?j!78fxk%u}1ihde6yYKnkRV;+EB+J`}N^v3D`oso1_DDhIZ6jsAMX#ZzI*T5v!6 z!uut>?z-&4!lxyPLPKjzYQPS<>JJXGJqF%vhNt2IRb4L}(IK6Td>rd+Mdij_*D__{ z_KgN*1uQxRo~^2U=v_HPh+R{o95nq0hciP0W%K2KwA*JwL zXPu8=Z?}kFdYPIb7PwT0!rsKu1$eThSO?WwN!!*6bU%_6Ns;)OMRZ`znr_kX32SzA zdZ&h{8#sjbQHgU#b1ZI`2ft|eO+}HTuQ zZzM_+e>v{eRbS(m#aMw`jkD{UlB*2WTXH5h$2vqT455XmI7F4{$FtWaT=vS@*B!&e zQ`N#~x*Bo?^FiK~U`i{ad3LHW8BU_dh;u>Xz8tIs1GWGh0dIoWi(L?l^$v+MLa|f} z&$rZe7bJE-F6=9@%T z7iF;@)*>sKib813{XS~ZuRA*x2bwgxP{Nr_8R$NWU=<|=ZsFpy$iZ&#o>@RIwr|wF zjW}jK4Q*$_t^h}hYf20@ZLOwo`acwR%Bc+$roo9xaprQHDfj;M453m2=GJ7&* zbZ=_N@_2+}b&0e`V_`xXlCoHn`1g*|PCNLkyYdoyt z>3tg@;=VOEhHO(bOKA0)jj+bu;t9cT5053535ti?2)-PFt>m-#rdORzyX;1@X*&-- zSE@AN*D}GMCcbLCP`-&4uC94biHRo}KPRM%M$)t`aJh?1XV>8=9H;P9h;F!u$Gr9ow@SkwFF7B&;M`ed zDQ^rvYJuXT4~43)FHb7+0d9_m%y+KN(dLvKh_X%`hhpt>v1aHBqNHxZ8M5Ey8r)Ohf6+?#K*FTPi3NiNT5lK94ID7x-+LQ_Lh!g&gX) zG~~K9tRQkSsx{*Q8$s3y=<$%R+GMayI9K}89*ULxsa&hHnx!aUhUM`4LrNpOPK?@x zg480mvuQN89{DB3GgMKl_yo&9&Q~T`G|?^eh9xw%Q%coaj`U*Ie^Y})hR4$s_s9O{ z33tayY@uu`ygjGJ_}^kc;=AbubjXO^EO`C7MiCY$kD%)u%oAvhR3E;yuj+{n&!5zC zgFSZ(z6N}V1=#uD$k{(OLdV?KDG$G{>aYCog?<)7=bftJ$L+^g@V*1Z8K#8gt2LNfGp^8BWa)5zHHmvOf=u(wW(>c1QO`nel_h=wuOsC-4cF zDezb=Ok`$;im&>Z$@jn~Op<$NaHN=e!qxE!)R?HGh@CF%FhSxCf@VN6S2>z9S4n67 zMPjuqPz7OCvp%t(5Yr90vAsJg6>wuX=bnXyz?n-v$}{J!r%T}i!X-%q0PNgM`^+(b zMyG>ZBeG0sJ`)C~7H~33A>JL$fuePKQX6*tuVX54&M0nr#QEFAM+)GpgP{l_D;e_L z%&5GF?7Nmu&%mDu3Bq`dX=WQ()5BFdq!9`H2(dZaRm1+&-CF5%Yv+;&cRp+?qVEm! zd~)^`5gG0hBH^RRxUiyDxt&NISjx|P&rel|qMQS?2|_v6Wr@(AP@}R~5x#EpU<#7ipPikgsfsaiT>gJ^%E{6IpEvBl=^* zQ`&wH{&GnVPe7PLyD3OW->YUR0c6X~M&69*mEh)g$$h@6 zTu`eD-T-xI-?~tGPon4LXx>lWV?0quxH|2iPHg6~5DgcBV@-Y_v6;`fH=9IuEBGre zy~~Nx0^HOf2Y_CBd`tc4p1qqMxqqOX6d78#a(0FiMXSV)p^k0+6U2e~W6 z0}gq8inkSX_5O3CZfJ9FOqx2pn|Y#l|HzPb7SE%B*j{t$Ce}G5-&VWFzf$cU8Lzr# zsnj8~Ho-2|ADxmYmkdX}voWRZv{YwIJn|rjl zaiHG2XlUY<1B?Ry5%bmGW4 zMjR(!3#@V41p)sh?kLtiDVQ0&2@lDR;HTT3Ms51nT@8~dSH=1Bi_bYcp_Ol@0F)K( zgGwY;UiWML%`{RE4Xff*)Zj?a1RFe=4u4dNp2EGxn=}-VYRBQR4WcA_BMygnRI*_x z7X1y={1 zyJahz1*=k6T(SsF3KLuEgZcFZo> zAYYT)v^cfq@8EK{0l~%S^711r4`|cZnpp$yQ|p!PgOv{|3UD2iJ=bOkVvR1NxyUl9 z67M>c@b4q)2dFV^R}JD*D3wiih(>&8jJyKWN4OqnPOfaHxfl@u0iAJ-TyJb+{UW7R zNMeFCMaJIXO@_HBF0#(Zy_k=n!#cPcx##!BJCr}rF-()77V4!6nM03CI4H<(Yz?%! zlJ_zyLFr9D$bRq?Q;o27(#&cm<@U|`aTCk6yc2uV!)vHSYxu2QXr4x6hUQQ{HUmO7 zW_x#E#d5o|Uk8a0orNSs@RdJctA2%4-oxwb?ItVoRqTh2g$~<_1vGik=`2gc+brKS zq?{a1?(5}&ZXCt@Bs>~cSHDE8;)C?Bv%_z71}%NtX8l&O(mDf=W-4y|Vp}GTxB?$7 zRV};^f}EHt8zQsDzqv?W4u5@QjItTMU9B9DQZu&E3=kYVeex<1Ag>-n^E5KOUm35v zK`{-GD`#>l&;G&5+Q~Qn2l>ou!6C+w7FK7XkfOP8DZ*cI@sJ*HP{0yIl>eqy6&-Z{ z<#r$JZ)H;1!nF@@p)Ob*-ViACg>|aHhSqNLhjZI1c!VfnIJ9EliULOCg+XgIRpv`C zet#&I4EeLiQ7FJwCSL^>j&2PaO(t2)>0~b6^hHtcJ&n19tG;2}Y90Z7E5e1zOkp_Y zfju*EA{zQ92=)r)EFC{|mgtnn_8aFeTYD|z5*6g{w{m=dX`Pg!n4k`S1 z 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�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

+j|^K9L=$yG+RpF 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 literal 0 HcmV?d00001 diff --git a/docs/dev/release.md b/docs/dev/release.md index dab1d0f9ec..88c7a7b320 100644 --- a/docs/dev/release.md +++ b/docs/dev/release.md @@ -38,148 +38,97 @@ The will update two Helm charts: Merge the PR - the chart will get released automatically. -## Create the Pull Request to publish the bundle to operatorhub.io +## Create Pull Requests to publish OLM bundles -All bundles/package manifests for Operators for operatorhub.io reside in: -* `https://github.com/k8s-operatorhub/community-operators` - for public Operators from operatorhub.io -* `https://github.com/redhat-openshift-ecosystem/community-operators-prod` - for Operators from "internal" operatorhub that are synchronized with Openshift clusters +All bundles/package manifests for Operators for operatorhub.io reside in the following repositories: +* https://github.com/k8s-operatorhub/community-operators - Kubernetes Operators that appear on [OperatorHub.io](https://operatorhub.io/) +* https://github.com/redhat-openshift-ecosystem/community-operators-prod - Kubernetes Operators that appear on [OpenShift](https://openshift.com/) and [OKD](https://www.okd.io/) +* https://github.com/redhat-openshift-ecosystem/certified-operators - Red Hat certified Kubernetes Operators ### Fork/Update the community operators repositories -**(First time only) Fork 2 separate repositories** +**Note**: this has to be done once only: +1. Clone each of the above forked OLM repositories from https://github.com/mongodb-forks +2. Add `upstream` remotes +3. Export each cloned repository directory in environment variables -#### 1. OperatorHub - -Clone, if not done before, the MongoDB fork of [the community operators repo](https://github.com/k8s-operatorhub/community-operators): - -```bash -git clone git@github.com:mongodb-forks/community-operators.git +#### community-operators repository ``` - -Add the upstream repository as a remote one: - -```bash +git clone git@github.com:mongodb-forks/community-operators.git git remote add upstream https://github.com/k8s-operatorhub/community-operators.git +export RH_COMMUNITY_OPERATORHUB_REPO_PATH=$PWD/community-operators ``` - -Assign the repo path to `RH_COMMUNITY_OPERATORHUB_REPO_PATH` env variable. - -#### 2. Openshift - -Clone, if not done before, the MongoDB fork of [the OpenShift Community Operators repo](https://github.com/redhat-openshift-ecosystem/community-operators-prod): - -```bash -git clone git@github.com:mongodb-forks/community-operators-prod.git +#### community-operators-prod repository ``` - -Add the upstream repository as a remote one: - -```bash +git clone git@github.com:mongodb-forks/community-operators-prod.git git remote add upstream https://github.com/redhat-openshift-ecosystem/community-operators-prod.git +export RH_COMMUNITY_OPENSHIFT_REPO_PATH=$PWD/community-operators-prod ``` - -Assign the repo path to `RH_COMMUNITY_OPENSHIFT_REPO_PATH` env variable. - -#### 3. OpenShift Certified - -Clone, if not done before, the MongoDB fork of [the Red Hat certified operators production catalog repo](https://github.com/redhat-openshift-ecosystem/certified-operators): - -```bash -git clone git@github.com:mongodb-forks/certified-operators.git +#### certified-operators repository ``` - -Add the upstream repository as a remote one: - -```bash +git clone git@github.com:mongodb-forks/certified-operators.git git remote add upstream https://github.com/redhat-openshift-ecosystem/certified-operators +export RH_CERTIFIED_OPENSHIFT_REPO_PATH=$PWD/certified-operators ``` -Assign the repo path to `RH_CERTIFIED_OPENSHIFT_REPO_PATH` env variable. - -### Create a Pull Request for `operatorhub` with a new bundle - -This is necessary for the Operator to appear on [operatorhub.io] site. -This step should be done after the previous PR is approved and merged. - -Ensure you have the `RH_COMMUNITY_OPERATORHUB_REPO_PATH` environment variable exported in `~/.bashrc` or `~/.zshrc` -pointing to the directory where `operatorhub-operator` repository was cloned in the previous step. - -For this PR the sources are copied from the `community-operators` folder instead of the one where the `mongodb-atlas-kubernetes` resides. - -Invoke with like `1.0.0` (never use the `v` prefix here, just the plain SEMVER version `x.y.z`): +### Create a Pull Request for the `community-operators` repository +1. Ensure the `RH_COMMUNITY_OPERATORHUB_REPO_PATH` environment variable is set. +2. Invoke the following script with `` set to `1.0.0` (don't use a `v` prefix): ``` ./scripts/release-redhat.sh ``` -Before posting the PR there is a manual change you need to make: - -* Ensure to add the `quay.io/` prefix in all Operator image references. - You can see an [example fixed PR here on Community Operators for version 1.9.1](https://github.com/k8s-operatorhub/community-operators/pull/3457). Create the PR to the main repository and wait until CI jobs get green. After the PR is approved and merged - it will soon get available on https://operatorhub.io -### Create a Pull Request for `openshift` with a new bundle +### Create a Pull Request for the `community-operators-prod` repository -This is necessary for the Operator to appear on "operators" tab in Openshift clusters - -Ensure you have the `RH_COMMUNITY_OPERATORHUB_REPO_PATH` environment variable exported in `~/.bashrc` or `~/.zshrc` -pointing to the directory where `community-operators-prod` repository was cloned in the previous step. - -*(This is temporary, to be fixed) -Change the `mongodb-atlas-kubernetes.clusterserviceversion.yaml` file and change the `replaces:` setting the previous version - -Invoke the following script with like `1.0.0` (no `v` prefix): +1. Ensure the `RH_COMMUNITY_OPENSHIFT_REPO_PATH` environment variable is set. +2. Invoke the following script with `` set to `1.0.0` (don't use a `v` prefix): ``` ./scripts/release-redhat-openshift.sh ``` -Before posting the PR there is a manual change you need to make: - -* Ensure to add the `quay.io/` prefix in all Operator image references. - -You can see an [example fixed PR here on OpenShift for version 1.9.1](https://github.com/redhat-openshift-ecosystem/community-operators-prod/pull/3521). - -Create the PR to the main repository and wait until CI jobs get green. +Submit the PR to the upstream repository and wait until CI jobs get green. -(note, that it's required that the PR consists of only one commit - you may need to do +**Note**: It is required that the PR consists of only one commit - you may need to do `git rebase -i HEAD~2; git push origin +mongodb-atlas-operator-community-` if you need to squash multiple commits into one and perform force push) After the PR is approved it will soon appear in the [Atlas Operator openshift cluster](https://console-openshift-console.apps.atlas.operator.mongokubernetes.com) -### Create a Pull Request for `openshift-certified-operators` with a new bundle +### Create a Pull Request for the `certified-operators` repository This is necessary for the Operator to appear on "operators" tab in Openshift clusters in the "certified" section. -**Prerequisites**: - - Ensure you have the `RH_CERTIFIED_OPENSHIFT_REPO_PATH` environment variable exported in `~/.bashrc` or `~/.zshrc` -pointing to the directory where `certified-operators` repository: https://github.com/redhat-openshift-ecosystem/certified-operators. - - Download (and build locally, if you're running MacOS) https://github.com/redhat-openshift-ecosystem/openshift-preflight and put the binary to your `$PATH` - - Use the image reference including the hash (`quay.io/mongodb/mongodb-atlas-kubernetes-operator:...@sha256:...`) from the [release process step "Push Atlas Operator to Quay.io"](https://github.com/mongodb/mongodb-atlas-kubernetes/actions/workflows/release-post-merge.yml) as `IMG_SHA` +1. Ensure the `RH_CERTIFIED_OPENSHIFT_REPO_PATH` environment variable is set. +2. Set the image SHA environment variables of the **certified** images. +To get the SHAs, go to https://connect.redhat.com/projects/63568bb95612f26f8db42d7a/images and copy the **certified** image SHAs of the **amd64** and the **arm64** image: + +![img.png](certified-image-sha.png) + +``` +export IMG_SHA_AMD64=sha256:c997f8ab49ed5680c258ee4a3e6a9e5bbd8d8d0eef26574345d4c78a4f728186 +export IMG_SHA_ARM64=sha256:aa3ed7b73f8409dda9ac32375dfddb25ee52d7ea172e08a54ecd144d52fe44da +``` + - Use the version of the release as `VERSION`, remember the SEMVER x.y.z version without the `v`prefix. +``` +export VERSION= +``` + Invoke the following script: ``` -IMG_SHA= \ -VERSION= \ ./scripts/release-redhat-certified.sh ``` -If script successfully finishes, you should be able to see new tag (e.g. 1.2.0) here https://connect.redhat.com/projects/63568bb95612f26f8db42d7a/images - Then go the GitHub and create a PR from the `mongodb-fork` repository to https://github.com/redhat-openshift-ecosystem/certified-operators (`origin`). -Before posting the PR there are manual changes you need to make: - -1. Ensure to add the `quay.io/` prefix in all Operator image references. -1. Add a missing `com.redhat.openshift.versions: "v4.8"` line at the end of `metadata/annotations.yaml`. -1. Ensure all image references, including `containerImage`, do NOT use the version *tag*. They **should only use the SHA of the AMD image**, NEVER the multi arch SHA. -1. Add the missing`spec.relatedImages` section in `manifests/mongodb-atlas-kubernetes.clusterserviceversion.yaml`, to pin all the images per architecture. - -For some reason, the certified OpenShift metadata does not use the multi arch image reference at all, and only understand direct architecture image references. +Note: For some reason, the certified OpenShift metadata does not use the multi arch image reference at all, and only understand direct architecture image references. You can see an [example fixed PR here for certified version 1.9.1](https://github.com/redhat-openshift-ecosystem/certified-operators/pull/3020). diff --git a/scripts/release-redhat-certified.sh b/scripts/release-redhat-certified.sh index 095a00540e..546448fe6f 100755 --- a/scripts/release-redhat-certified.sh +++ b/scripts/release-redhat-certified.sh @@ -15,15 +15,28 @@ pwd cp -r bundle.Dockerfile bundle/manifests bundle/metadata bundle/tests "${REPO}/${VERSION}" +# Replace deployment image version with SHA256 +value="${IMG_SHA_AMD64}" yq e -i '.spec.install.spec.deployments[0].spec.template.spec.containers[0].image = "quay.io/mongodb/mongodb-atlas-kubernetes-operator@" + env(value)' \ + "${REPO}/${VERSION}"/manifests/mongodb-atlas-kubernetes.clusterserviceversion.yaml + +# set related images +yq e -i '.spec = { "relatedImages": [ { "name": "mongodb-atlas-kubernetes-operator-arm64" }, { "name": "mongodb-atlas-kubernetes-operator-amd64" } ] } + .spec' \ + "${REPO}/${VERSION}"/manifests/mongodb-atlas-kubernetes.clusterserviceversion.yaml -# Replace image version with SHA256 -value="${IMG_SHA}" yq e -i '.spec.install.spec.deployments[0].spec.template.spec.containers[0].image = env(value)' \ +value="${IMG_SHA_ARM64}" yq e -i '.spec.relatedImages[0].image = "quay.io/mongodb/mongodb-atlas-kubernetes-operator@" + env(value)' \ "${REPO}/${VERSION}"/manifests/mongodb-atlas-kubernetes.clusterserviceversion.yaml -# Add skip range -value='">=0.8.0"' yq e -i '.spec.skipRange = env(value)' \ +value="${IMG_SHA_AMD64}" yq e -i '.spec.relatedImages[1].image = "quay.io/mongodb/mongodb-atlas-kubernetes-operator@" + env(value)' \ "${REPO}/${VERSION}"/manifests/mongodb-atlas-kubernetes.clusterserviceversion.yaml +# set containerImage annotation +value="${IMG_SHA_AMD64}" yq e -i '.metadata.annotations.containerImage = "quay.io/mongodb/mongodb-atlas-kubernetes-operator@" + env(value)' \ + "${REPO}/${VERSION}"/manifests/mongodb-atlas-kubernetes.clusterserviceversion.yaml + +# set openshift versions +yq e -i '.annotations = .annotations + { "com.redhat.openshift.versions": "v4.8" }' \ + "${REPO}/${VERSION}"/metadata/annotations.yaml + cd "${REPO}" git checkout -b origin main git pull --rebase upstream main @@ -32,4 +45,3 @@ git add "${REPO}/${VERSION}" git commit -m "operator mongodb-atlas-kubernetes (${VERSION})" --signoff git push -u origin "mongodb-atlas-kubernetes-operator-${VERSION}" cd - - diff --git a/scripts/release-redhat.sh b/scripts/release-redhat.sh index c385d55275..5dfa80bd8d 100755 --- a/scripts/release-redhat.sh +++ b/scripts/release-redhat.sh @@ -17,6 +17,12 @@ sed -i.bak 's/COPY bundle\/metadata/COPY metadata/' "${version}/bundle.Dockerfil sed -i.bak 's/COPY bundle\/tests\/scorecard/COPY tests\/scorecard/' "${version}/bundle.Dockerfile" rm "${version}/bundle.Dockerfile.bak" +yq e -i '.metadata.annotations.containerImage = "quay.io/" + .metadata.annotations.containerImage' \ + "${repo}/${version}"/manifests/mongodb-atlas-kubernetes.clusterserviceversion.yaml + +yq e -i '.spec.install.spec.deployments[0].spec.template.spec.containers[0].image = "quay.io/" + .spec.install.spec.deployments[0].spec.template.spec.containers[0].image' \ + "${repo}/${version}"/manifests/mongodb-atlas-kubernetes.clusterserviceversion.yaml + # commit git checkout -b "mongodb-atlas-operator-community-${version}" git add "${version}"