PageSourceSearch

https://www.silverile.com/_next/static/chunks/pages/release-templates-how-to-e1c46c4a76552f15.js

js silverile.com collected 2026-10-09 23:00:09 UTC 9,579 bytes, 1 lines download raw bytes

1(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[2058],{23068:(e,t,s)=>{(window.__NEXT_P=window.__NEXT_P||[]).push(["/release-templates-how-to",function(){return s(48311)}])},48311:(e,t,s)=>{"use strict";s.r(t),s.d(t,{default:()=>ReleaseTemplatesHowToPage});var a=s(37876),l=(s(14232),s(69851));const r=(0,s(49932).A)((0,a.jsx)("path",{d:"M16 1H4c-1.1 0-2 .9-2 2v14h2V3h12zm-1 4 6 6v10c0 1.1-.9 2-2 2H7.99C6.89 23 6 22.1 6 21l.01-14c0-1.1.89-2 1.99-2zm-1 7h5.5L14 6.5z"}),"FileCopy");var n=s(12553),i=s.n(n);const o=[{field:"Template Name",required:!0,note:'A descriptive name — e.g. "Standard Web Release" or "Hotfix Template".'},{field:"Description",required:!1,note:"Explains when to use this template."},{field:"Checklist Items",required:!1,note:"A list of tasks that must be completed before the release can be published. Each item can be assigned to a role."},{field:"Default Environments",required:!1,note:"Pre-selects the environments that are typically used for this type of release."},{field:"Approval Steps",required:!1,note:"Named approval gates — e.g. QA Sign-off, Product Owner Approval, Change Advisory Board."},{field:"Notes Template",required:!1,note:"A pre-filled deployment notes template that appears when adding a deployment note for releases created from this template."}],d=[{name:"Standard Feature Release",use:"Regular sprint-based releases with full QA, UAT, and stakeholder sign-off."},{name:"Hotfix Release",use:"Fast-track deployment for critical production bugs. Minimal checklist, expedited approvals."}
1,{name:"Infrastructure Release",use:"Platform or infrastructure changes with no application code changes. Different checklist, ops team approval."},{name:"Internal / Beta Release",use:"Limited release to internal users or beta group. No full QA cycle required."}],c=[{q:"I don't see a Templates section under Releases",a:"Release templates are configured under Project Settings → Releases → Templates. If the option isn't visible, release management may not be fully enabled for your project."},{q:"I applied a template but the checklist is empty",a:"Templates only populate fields at the point of applying them during release creation. If you apply a template to an existing release, manually add the checklist items — they won't auto-populate on existing releases."},{q:"I want to update a template without affecting existing releases",a:"Template changes apply only to new releases created after the change. Existing releases that were created from the template are independent copies — they are not affected by template updates."},{q:"An approval step is blocking the release from being published",a:"Each approval step must be marked as approved by the designated approver before the release can be published. Open the release, go to the Approvals section, and ask the relevant person to approve their step."}],Static_ReleaseTemplatesHowTo=()=>(0,a.jsxs)(a.Fragment,{children:[(0,a.jsxs)("div",{className:i().detailHeader,children:[(0,a.jsx)(r,{style:{fontSize:22}}),(0,a.jsx)("h1",{className:i().detailTitle,children:"Release Templates"}),(0,a.jsx)("span",{className:i().badge,children:"Releases"})]}),(0,a.jsx)("h2",{id:"overview","data-section":"overview",className:i().sectionTitle,children:"Overview"}),(0,a.jsx)("p",{className:i().body,children:"Release templates define the standard structure for a type of release — its checklist, approval steps, target environments, and deployment note format. When a new release is created from a template, it inherits all of these, so nothing gets skipped."}),(0,a.jsx)("p",{className:i().body,children:"Templates are especially useful when you have different release types with different requirements — a hotfix has a much shorter checklist than a major feature release, and a template ensures each type follows the right process consistently."}),(0,a.jsx)("h2",{id:"getting-there","data-section":"getting-there",className:i().sectionTitle,children:"Managing templates"}),[(0,a.jsxs)(a.Fragment,{children:["Select your project and open ",(0,a.jsx)("strong",{children:"Settings"})]}),(0,a.jsxs)(a.Fragment,{children:["Go to the ",(0,a.jsx)("strong",{children:"Releases"})," tab"]}),(0,a.jsxs)(a.Fragment,{children:["Select ",(0,a.jsx)("strong",{children:"Templates"})]}),(0,a.jsxs)(a.Fragment,{children:["Click ",(0,a.jsx)("strong",{children:"Add Template"})," to create a new one, or click an existing template to edit it"]})].map((e,t)=>(0,a.jsxs)("div",{className:i().stepRow,children:[(0,a.jsx)("span",{className:i().stepNum,children:t+1}),(0,a.jsx)("span",{className:i().stepBody,children:e})]},t)),(0,a.jsx)("h2",{id:"common-templates","data-section":"common-templates",className:i().sectionTitle,children:"Common template types"}),(0,a.jsx)("div",{className:i().tableWrap,children:(0,a.jsxs)("table",{className:i().table,children:[(0,a.jsx)("thead",{children:(0,a.jsxs)("tr",{children:[(0,a.jsx)("th",{children:"Template"}),(0,a.jsx)("th",{children:"When to use it"})]})}),(0,a.jsx)("tbody",{children:d.map(e=>(0,a.jsxs)("tr",{children:[(0,a.jsx)("td",{style:{fontWeight:600,whiteSpace:"nowrap"},children:e.name}),(0,a.jsx)("td",{children:e.use})]},e.name))})]})}),(0,a.jsx)("h2",{id:"building","data-section":"building",className:i().sectionTitle,children:"Building a template"}),(0,a.jsx)("div",{className:i().tableWrap,children:(0,a.jsxs)("table",{className:i().table,children:[(0,a.jsx)("thead",{children:(0,a.jsxs)("tr",{children:[(0,a.jsx)("th",{children:"Field"}),(0,a.jsx)("th",{children:"Required"}),(0,a.jsx)("th",{children:"Notes"})]})}),(0,a.jsx)("tbody",{children:o.map(e=>(0,a.jsxs)("tr",{children:[(0,a.jsx)("td",{style:{fontWeight:600,whiteSpace:"nowrap"},children:e.field}),(0,a.jsx)("td",{children:(0,a.jsx)("span",{className:e.required?i().requiredYes:i().requiredNo,children:e.required?"Yes":"No"})}),(0,a.jsx)("td",{children:e.note})]},e.field))})]})}),(0,a.jsx)("h2",{id:"checklist","data-section":"checklist",className:i().sectionTitle,children:"Building a release checklist"}),(0,a.jsx)("p",{className:i().body,children:"The checklist is the most valuable part of a release template. Each item is a task that must be marked complete before the release can be published. Good checklist items are:"}
1),(0,a.jsx)("ul",{style:{paddingLeft:"20px",marginBottom:"16px"},children:['Specific and verifiable — "Regression test suite passed" not "Testing done"','Assigned to a role — "QA Lead", "DevOps", "Product Owner"','In pipeline order — early items like "All stories in Accepted status" before later items like "Production deployment note logged"'].map((e,t)=>(0,a.jsx)("li",{className:i().body,style:{marginBottom:"6px"},children:e},t))}),(0,a.jsx)("p",{className:i().body,children:"Example checklist for a standard feature release:"}),(0,a.jsx)("ul",{style:{paddingLeft:"20px",marginBottom:"16px"},children:["All stories assigned to the release are in Accepted status","Regression test run completed — pass rate ≥ 95%","No open Critical or High defects linked to this release","UAT sign-off received from Product Owner","Deployment note logged for Staging environment","Rollback plan documented","Production deployment note logged","Post-deployment smoke test passed"].map((e,t)=>(0,a.jsx)("li",{className:i().body,style:{marginBottom:"4px"},children:e},t))}),(0,a.jsx)("h2",{id:"using-template","data-section":"using-template",className:i().sectionTitle,children:"Using a template when creating a release"}),[(0,a.jsxs)(a.Fragment,{children:["Click ",(0,a.jsx)("strong",{children:"Add Release"})]}),(0,a.jsxs)(a.Fragment,{children:["In the creation form, select a ",(0,a.jsx)("strong",{children:"Template"})," from the dropdown"]}),(0,a.jsx)(a.Fragment,{children:"The checklist, environments, and approval steps are pre-populated"}),(0,a.jsxs)(a.Fragment,{children:["Fill in the release name and date, then click ",(0,a.jsx)("strong",{children:"Create Release"})]})].map((e,t)=>(0,a.jsxs)("div",{className:i().stepRow,children:[(0,a.jsx)("span",{className:i().stepNum,children:t+1}),(0,a.jsx)("span",{className:i().stepBody,children:e})]},t)),(0,a.jsx)("div",{className:i().callout,children:"Template content is copied into the release at creation time. Subsequent changes to the template do not affect releases already created from it."}),(0,a.jsx)("h2",{id:"approvals","data-section":"approvals",className:i().sectionTitle,children:"Approval steps"}),(0,a.jsx)("p",{className:i().body,children:"Approval steps are gates in the release process that require sign-off from a named role before the release can progress. Once defined in a template, they appear in every release created from it as a sequential approval chain."}),(0,a.jsxs)("p",{className:i().body,children:["To approve a step: open the release, go to the ",(0,a.jsx)("strong",{children:"Approvals"})," panel, and click ",(0,a.jsx)("strong",{children:"Approve"})," on your step. You can add a comment explaining your sign-off decision. The release can only be published once all steps are approved."]}),(0,a.jsx)("h2",{id:"troubleshooting","data-section":"troubleshooting",className:i().sectionTitle,children:"Troubleshooting"}),(0,a.jsx)("div",{className:i().troubleList,children:c.map((e,t)=>(0,a.jsxs)("div",{className:i().troubleCard,children:[(0,a.jsx)("p",{className:i().troubleQ,children:e.q}),(0,a.jsx)("p",{className:i().troubleA,children:e.a})]},t))})]});function ReleaseTemplatesHowToPage(){return(0,a.jsx)(l.A,{children:(0,a.jsx)(Static_ReleaseTemplatesHowTo,{})})}}},e=>{e.O(0,[9851,6593,636,8792],()=>{return t=23068,e(e.s=t);var t});var t=e.O();_N_E=t}]);

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.