[{"data":1,"prerenderedAt":605},["ShallowReactive",2],{"navigation_docs":3,"-engineering-release":209,"-engineering-release-surround":600},[4,8,50,75,133,149,162,171,205],{"title":5,"path":6,"stem":7},"Introduction","\u002Fintroduction","0.introduction",{"title":9,"path":10,"stem":11,"children":12,"page":49},"Company","\u002Fcompany","1.company",[13,17,21,25,29,33,37,41,45],{"title":14,"path":15,"stem":16},"About","\u002Fcompany\u002Fabout","1.company\u002F0.about",{"title":18,"path":19,"stem":20},"Values","\u002Fcompany\u002Fvalues","1.company\u002F1.values",{"title":22,"path":23,"stem":24},"Communication","\u002Fcompany\u002Fcommunication","1.company\u002Fcommunication",{"title":26,"path":27,"stem":28},"Competition","\u002Fcompany\u002Fcompetition","1.company\u002Fcompetition",{"title":30,"path":31,"stem":32},"Hybrid Working","\u002Fcompany\u002Fhybrid-working","1.company\u002Fhybrid-working",{"title":34,"path":35,"stem":36},"Operations","\u002Fcompany\u002Foperations","1.company\u002Foperations",{"title":38,"path":39,"stem":40},"Policies","\u002Fcompany\u002Fpolicies","1.company\u002Fpolicies",{"title":42,"path":43,"stem":44},"Product","\u002Fcompany\u002Fproduct","1.company\u002Fproduct",{"title":46,"path":47,"stem":48},"Security","\u002Fcompany\u002Fsecurity","1.company\u002Fsecurity",false,{"title":51,"path":52,"stem":53,"children":54,"page":49},"People Ops","\u002Fpeople-ops","2.people-ops",[55,59,63,67,71],{"title":56,"path":57,"stem":58},"Compensation","\u002Fpeople-ops\u002Fcompensation","2.people-ops\u002Fcompensation",{"title":60,"path":61,"stem":62},"Education","\u002Fpeople-ops\u002Feducation","2.people-ops\u002Feducation",{"title":64,"path":65,"stem":66},"Expenses","\u002Fpeople-ops\u002Fexpenses","2.people-ops\u002Fexpenses",{"title":68,"path":69,"stem":70},"Holiday & Leave","\u002Fpeople-ops\u002Fleave","2.people-ops\u002Fleave",{"title":72,"path":73,"stem":74},"Onboarding","\u002Fpeople-ops\u002Fonboarding","2.people-ops\u002Fonboarding",{"title":76,"path":77,"stem":78,"children":79,"page":49},"Engineering","\u002Fengineering","3.engineering",[80,84,88,92,96,117,121,125,129],{"title":81,"path":82,"stem":83},"Development Setup","\u002Fengineering\u002Fdevelopment-setup","3.engineering\u002F1.development-setup",{"title":85,"path":86,"stem":87},"Contributing","\u002Fengineering\u002Fcontributing","3.engineering\u002Fcontributing",{"title":89,"path":90,"stem":91},"Production Database","\u002Fengineering\u002Fdatabase-connection","3.engineering\u002Fdatabase-connection",{"title":93,"path":94,"stem":95},"Deployment","\u002Fengineering\u002Fdeployment","3.engineering\u002Fdeployment",{"title":97,"path":98,"stem":99,"children":100,"page":49},"Github","\u002Fengineering\u002Fgithub","3.engineering\u002Fgithub",[101,105,109,113],{"title":102,"path":103,"stem":104},"Packages","\u002Fengineering\u002Fgithub\u002Fpackages","3.engineering\u002Fgithub\u002Fpackages",{"title":106,"path":107,"stem":108},"Personal Access Token","\u002Fengineering\u002Fgithub\u002Fpersonal-access-token","3.engineering\u002Fgithub\u002Fpersonal-access-token",{"title":110,"path":111,"stem":112},"Troubleshooting","\u002Fengineering\u002Fgithub\u002Ftroubleshooting","3.engineering\u002Fgithub\u002Ftroubleshooting",{"title":114,"path":115,"stem":116},"Workflows","\u002Fengineering\u002Fgithub\u002Fworkflows","3.engineering\u002Fgithub\u002Fworkflows",{"title":118,"path":119,"stem":120},"Platform Ops","\u002Fengineering\u002Fplatform-ops","3.engineering\u002Fplatform-ops",{"title":122,"path":123,"stem":124},"Project Management","\u002Fengineering\u002Fproject-management","3.engineering\u002Fproject-management",{"title":126,"path":127,"stem":128},"Releases","\u002Fengineering\u002Frelease","3.engineering\u002Frelease",{"title":130,"path":131,"stem":132},"Tools","\u002Fengineering\u002Ftools","3.engineering\u002Ftools",{"title":134,"path":135,"stem":136,"children":137,"page":49},"Design","\u002Fdesign","4.design",[138,142,146],{"title":139,"path":140,"stem":141},"Branding","\u002Fdesign\u002Fbranding","4.design\u002Fbranding",{"title":143,"path":144,"stem":145},"Design Thinking","\u002Fdesign\u002Fdesign-thinking","4.design\u002Fdesign-thinking",{"title":130,"path":147,"stem":148},"\u002Fdesign\u002Ftools","4.design\u002Ftools",{"title":150,"path":151,"stem":152,"children":153,"page":49},"Sales","\u002Fsales","4.sales",[154,158],{"title":155,"path":156,"stem":157},"Customer Onboarding","\u002Fsales\u002Fonboarding","4.sales\u002Fonboarding",{"title":159,"path":160,"stem":161},"Sales Tools","\u002Fsales\u002Ftools","4.sales\u002Ftools",{"title":163,"path":164,"stem":165,"children":166,"page":49},"Marketing","\u002Fmarketing","5.marketing",[167],{"title":168,"path":169,"stem":170},"Messaging","\u002Fmarketing\u002Fmessaging","5.marketing\u002Fmessaging",{"title":172,"path":173,"stem":174,"children":175,"page":49},"Data Ops","\u002Fdata-ops","6.data-ops",[176,185,189,193,197,201],{"title":177,"path":178,"stem":179,"children":180,"page":49},"Capability Exchange","\u002Fdata-ops\u002Fcapability-exchange","6.data-ops\u002FCapability Exchange",[181],{"title":182,"path":183,"stem":184},"Leaderboard Calculation","\u002Fdata-ops\u002Fcapability-exchange\u002Fleaderboard-calculation","6.data-ops\u002FCapability Exchange\u002Fleaderboard-calculation",{"title":186,"path":187,"stem":188},"Account Portal (CAS)","\u002Fdata-ops\u002Faccount-portal","6.data-ops\u002Faccount-portal",{"title":190,"path":191,"stem":192},"Adding Products","\u002Fdata-ops\u002Faddin-products","6.data-ops\u002Faddin-products",{"title":194,"path":195,"stem":196},"Adding Vendors","\u002Fdata-ops\u002Fadding-vendors","6.data-ops\u002Fadding-vendors",{"title":198,"path":199,"stem":200},"Message Queues","\u002Fdata-ops\u002Fmessage-queues","6.data-ops\u002Fmessage-queues",{"title":202,"path":203,"stem":204},"Refreshing Vendors","\u002Fdata-ops\u002Frefreshing-vendors","6.data-ops\u002Frefreshing-vendors",{"title":206,"path":207,"stem":208},"Glossary","\u002Fglossary","glossary",{"id":210,"title":126,"body":211,"description":594,"extension":595,"links":596,"meta":597,"navigation":488,"path":127,"seo":598,"stem":128,"__hash__":599},"docs\u002F3.engineering\u002Frelease.md",{"type":212,"value":213,"toc":579},"minimark",[214,219,231,236,256,263,299,302,306,324,329,333,336,363,369,373,477,489,494,498,501,504,509,531,538,541,545,556,558,562,570,572,576],[215,216,218],"h2",{"id":217},"backend-services","Backend Services",[220,221,222,223,230],"p",{},"Before starting a release, please open a ",[224,225,229],"a",{"href":226,"rel":227},"https:\u002F\u002Fgithub.com\u002FES-Profiler\u002Fadmin\u002Fissues",[228],"nofollow","Back-End Release issue"," and append it to the Development Board with the appropriate Sprint\u002FIteration. Update the release issue as you make progress through the release.",[232,233,235],"h3",{"id":234},"step-1-github-release","Step 1: GitHub Release",[237,238,239,248],"ol",{},[240,241,242,243,247],"li",{},"The first step is to tag the branch (",[244,245,246],"code",{},"main",") from which the image will be built.",[240,249,250,251],{},"The tag can be created as part of the ",[224,252,255],{"href":253,"rel":254},"https:\u002F\u002Fgithub.com\u002FES-Profiler\u002Fplatform-api\u002Freleases\u002Fnew",[228],"GitHub Release UI",[257,258],"img",{"width":259,"height":260,"alt":261,"src":262},1094,658,"image","\u002Fimages\u002Fengineering\u002Fbackend-release\u002Ftag-release.png",[237,264,266,277,280,292],{"start":265},3,[240,267,268,269,272,273,276],{},"When you create a tag in the format ",[244,270,271],{},"v*"," (for example, ",[244,274,275],{},"v7.1.2","), a GitHub workflow will trigger to build and push an image to AWS ECR.",[240,278,279],{},"Select the branch that the tag will be attached to and add a release title",[240,281,282,283,287,288,291],{},"Please ",[284,285,286],"strong",{},"always"," click on the ",[244,289,290],{},"Generate release notes"," buttons to have GitHub create the release notes based on the commit messages added between the last release and this one",[240,293,294,295,298],{},"Then click ",[244,296,297],{},"Publish release"," to start the workflow that will build out the image and push it to AWS ECR",[257,300],{"width":259,"height":260,"alt":261,"src":301},"\u002Fimages\u002Fengineering\u002Fbackend-release\u002Ftag-release-2.png",[232,303,305],{"id":304},"step-2-run-release-workflow","Step 2: Run Release Workflow",[237,307,308,314,317],{},[240,309,310,311],{},"Next, from the Action tab, select the ",[244,312,313],{},"Release: Multi-Tenant Deployment",[240,315,316],{},"Click on the run workflow button, there will be three inputs to fill out, the only required one is the version tag that you created in the previous step (eg. v7.1.2). The other two inputs lets you run the release for specific tenants or to exclude specific tenants. If they are left blank, the release will run for all tenants. Also important to not that you can not use both the exclude and include inputs at the same time. The include input will always take precedence over the exclude input. Inputs are the service names on AWS of the tenants that you would like to include or exclude from the release.",[240,318,319,320,323],{},"Click on ",[244,321,322],{},"Run workflow",". You can view the progress of the releases from the ECS on AWS",[257,325],{"width":326,"height":327,"alt":261,"src":328},1306,779,"\u002Fimages\u002Fengineering\u002Fbackend-release\u002Frelease-action.png",[215,330,332],{"id":331},"frontend-applications","Frontend Applications",[220,334,335],{},"This section will cover the process of releasing a new version of a frontend application.",[337,338,339,347,355],"ul",{},[240,340,341,342],{},"Platform APP - ",[224,343,346],{"href":344,"rel":345},"https:\u002F\u002Fblackmesabank.own.esprofiler.com",[228],"*.own.esprofiler.com",[240,348,349,350],{},"Vendor Portal - ",[224,351,354],{"href":352,"rel":353},"https:\u002F\u002Fvendor.capability.exchange",[228],"vendor.capability.exchange",[240,356,357,358],{},"Account Portal - ",[224,359,362],{"href":360,"rel":361},"https:\u002F\u002Fmy.esprofiler.com",[228],"my.esprofiler.com",[220,364,222,365,230],{},[224,366,368],{"href":226,"rel":367},[228],"Front-End Release issue",[232,370,372],{"id":371},"step-1-production-build","Step 1: Production Build",[237,374,375,381,391,398,416,426,432,443,453,467,470],{},[240,376,377,378,380],{},"Ensure all code intended for production release is merged into the ",[244,379,246],{}," branch.",[240,382,383,384,386,387,390],{},"Navigate to the repository, and while on the ",[244,385,244],{}," tab, click ",[244,388,389],{},"tags"," found to the right of the branch selector.",[240,392,393,394,397],{},"Click the releases button, then click ",[244,395,396],{},"Draft a new release"," button.",[240,399,319,400,403,404,407,408,411,412,415],{},[244,401,402],{},"Select tag"," dropdown and at the bottom of the list, click ",[244,405,406],{},"Create new tag",", in the prompt enter the version number, ",[244,409,410],{},"vX.X.X"," and click ",[244,413,414],{},"create",".",[240,417,418,419,422,423,425],{},"For the ",[244,420,421],{},"Taget"," field, the ",[244,424,246],{}," branch should be selected by default.",[240,427,428,429],{},"Enter a release title ",[244,430,431],{},"Release vX.X.X",[240,433,434,435,438,439,442],{},"(Optional) Under ",[244,436,437],{},"Release Notes"," select the previously released version tag that comes immediately before this new tag if you don't trust the default ",[244,440,441],{},"Auto"," option (I don't).",[240,444,445,446,449,450,452],{},"Click ",[244,447,448],{},"Generate Release Notes"," -- this will populate the ",[284,451,437],{}," field with the commit messages since the last release.",[240,454,455,456,459,460,463,464,415],{},"Scroll down to the bottom of the page and click ",[244,457,458],{},"Publish Release",", this will trigger the ",[284,461,462],{},"Publish Tag"," workflow where it should be visibily running in ",[244,465,466],{},"Actions",[240,468,469],{},"Once the workflow completes, this will have created a new tag and pushed the build application to AWS Bucket in a folder reflecting the version number.",[240,471,472,473,415],{},"Inform the backend team that the new version is ready for ",[224,474,476],{"href":475},"\u002Fengineering\u002Frelease#tenant-rollout","Production Tenant Rollout",[478,479],"iframe",{"width":480,"height":481,"src":482,"className":483,"title":485,"frameBorder":486,"allow":487,"allowFullScreen":488},560,315,"https:\u002F\u002Fwww.youtube.com\u002Fembed\u002FRh3D3InVSDk",[484],"mx-auto","YouTube video player","0","accelerometer;",true,[220,490,491],{},[224,492],{"name":493},"tenant-rollout",[232,495,497],{"id":496},"step-2-tenant-rollout","Step 2: Tenant Rollout",[220,499,500],{},"Currently the backend configures the frontend that the user will see for a given tenant",[220,502,503],{},"In order to update the version of the frontend the tenant is using we have to update the SPA property in the SPAProperties class in the platform-api repo.",[257,505],{"width":506,"height":507,"alt":261,"src":508},1368,698,"\u002Fimages\u002Fengineering\u002Fbackend-release\u002Fspa-properties.png",[220,510,511,512,515,516,519,520,523,524,527,528],{},"In this case the frontend version is ",[244,513,514],{},"3.9.7"," to update it to, for example ",[244,517,518],{},"3.10.0"," we would replace the ",[244,521,522],{},"targetString"," value from ",[244,525,526],{},"v3-9-7"," to ",[244,529,530],{},"v3-10-0",[220,532,533,534,415],{},"The backend release process then has to be followed for the change to take effect. Please see ",[224,535,537],{"href":536},"#backend-services","Backend Release",[539,540],"hr",{},[232,542,544],{"id":543},"staging-release-candidate","Staging: Release Candidate",[220,546,547,548,550,551,415],{},"Upon merge of a pull request to ",[244,549,246],{},", a release candidate will be automatically built and deployed to ",[224,552,555],{"href":553,"rel":554},"https:\u002F\u002Fstaging.own.esprofiler.com",[228],"staging.own.esprofiler.com",[539,557],{},[232,559,561],{"id":560},"staging-review-apps-tbc","Staging: Review Apps (TBC)",[337,563,564,567],{},[240,565,566],{},"When to use",[240,568,569],{},"How to use",[539,571],{},[215,573,575],{"id":574},"frontend-websites","Frontend Websites",[220,577,578],{},"TBC",{"title":580,"searchDepth":581,"depth":581,"links":582},"",2,[583,587,593],{"id":217,"depth":581,"text":218,"children":584},[585,586],{"id":234,"depth":265,"text":235},{"id":304,"depth":265,"text":305},{"id":331,"depth":581,"text":332,"children":588},[589,590,591,592],{"id":371,"depth":265,"text":372},{"id":496,"depth":265,"text":497},{"id":543,"depth":265,"text":544},{"id":560,"depth":265,"text":561},{"id":574,"depth":581,"text":575},"This guide will walk you through the process of releasing a new version of the backend services or frontend applications and websites.","md",null,{},{"title":126,"description":594},"s-P1ffEVjV3BUGaJxtEE5ZzmdIUFOeLxDN3znXa-3lE",[601,603],{"title":122,"path":123,"stem":124,"description":602,"children":-1},"A comprehensive overview of project management processes and procedures that guide product development at ESProfiler.",{"title":130,"path":131,"stem":132,"description":604,"children":-1},"Recommended tooling we use in the Engineering organisation, and if required, how to go about requesting licenses.",1778263956048]