mirror of
https://github.com/Lissy93/dashy.git
synced 2026-03-18 02:32:13 +01:00
216 lines
No EOL
38 KiB
HTML
216 lines
No EOL
38 KiB
HTML
<!doctype html>
|
||
<html lang="en" dir="ltr" class="docs-wrapper plugin-docs plugin-id-default docs-version-current docs-doc-page docs-doc-id-release-workflow" data-has-hydrated="false">
|
||
<head>
|
||
<meta charset="UTF-8">
|
||
<meta name="generator" content="Docusaurus v3.9.2">
|
||
<title data-rh="true">Releases and Workflows | Dashy</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" property="og:locale" content="en"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearch:language" content="en"><meta data-rh="true" name="keywords" content="dashy, dashboard, homelab, self-hosted, docker, homepage"><meta data-rh="true" property="og:type" content="website"><meta data-rh="true" property="og:url" content="https://dashy.to"><meta data-rh="true" property="og:image" content="https://dashy.to/img/dashy.png"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" name="twitter:title" content="Dashy — The Ultimate Homepage for your Homelab"><meta data-rh="true" name="twitter:description" content="Dashy is a self-hosted dashboard app for your homelab. Manage all your services, with status checks, widgets, themes and more."><meta data-rh="true" name="twitter:image" content="https://dashy.to/img/dashy.png"><meta data-rh="true" name="docusaurus_version" content="current"><meta data-rh="true" name="docusaurus_tag" content="docs-default-current"><meta data-rh="true" name="docsearch:version" content="current"><meta data-rh="true" name="docsearch:docusaurus_tag" content="docs-default-current"><meta data-rh="true" property="og:title" content="Releases and Workflows | Dashy"><meta data-rh="true" name="description" content="- Release Schedule"><meta data-rh="true" property="og:description" content="- Release Schedule"><link data-rh="true" rel="icon" href="/img/favicon.ico"><link data-rh="true" rel="canonical" href="https://dashy.to/docs/release-workflow"><link data-rh="true" rel="alternate" href="https://dashy.to/docs/release-workflow" hreflang="en"><link data-rh="true" rel="alternate" href="https://dashy.to/docs/release-workflow" hreflang="x-default"><script data-rh="true" type="application/ld+json">{"@context":"https://schema.org","@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"name":"Releases and Workflows","item":"https://dashy.to/docs/release-workflow"}]}</script><link rel="preconnect" href="https://pixelflare.cc">
|
||
<link rel="preconnect" href="https://cdn.as93.net">
|
||
<link rel="dns-prefetch" href="https://api.github.com">
|
||
<link rel="dns-prefetch" href="https://no-track.as93.net">
|
||
<script type="application/ld+json">{"@context":"https://schema.org","@type":"WebSite","name":"Dashy","url":"https://dashy.to","description":"The Ultimate Homepage for your Homelab","publisher":{"@type":"Person","name":"Alicia Sykes","url":"https://aliciasykes.com"}}</script>
|
||
<link rel="manifest" href="/manifest.json">
|
||
<meta name="theme-color" content="#54bff7">
|
||
<script src="https://no-track.as93.net/js/script.js" defer="defer" data-domain="dashy.to"></script><link rel="stylesheet" href="/assets/css/styles.643115f2.css">
|
||
<script src="/assets/js/runtime~main.e7aa91cf.js" defer="defer"></script>
|
||
<script src="/assets/js/main.c9f7c5e0.js" defer="defer"></script>
|
||
</head>
|
||
<body class="navigation-with-keyboard">
|
||
<svg style="display: none;"><defs>
|
||
<symbol id="theme-svg-external-link" viewBox="0 0 24 24"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"/></symbol>
|
||
</defs></svg>
|
||
<script>!function(){var t=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();document.documentElement.setAttribute("data-theme",t||"dark"),document.documentElement.setAttribute("data-theme-choice",t||"dark")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.setAttribute(a,e)}}catch(t){}}()</script><div id="__docusaurus"><div class="banner_woPo"><a class="link_ecgS" title="View the changelog, to see what's new!" href="/updates">Dashy <!-- -->V3.1.9<!-- --> is now live 🚀</a><a class="link2_y3x6" title="View the changelog, to see what's new!" href="/updates">See what's new…</a><button class="closeBtn_fC0A" title="Dismiss update, and don't show again" aria-label="Dismiss update, and don't show again">×</button></div><div role="region" aria-label="Skip to main content"><a class="skipToContent_fXgn" href="#__docusaurus_skipToContent_fallback">Skip to main content</a></div><nav aria-label="Main" class="theme-layout-navbar navbar navbar--fixed-top"><div class="navbar__inner"><div class="theme-layout-navbar-left navbar__items"><button aria-label="Toggle navigation bar" aria-expanded="false" class="navbar__toggle clean-btn" type="button"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button><a class="navbar__brand" href="/"><div class="navbar__logo"><img src="/img/dashy.png" alt="Dashy Logo" class="themedComponent_mlkZ themedComponent--light_NVdE"><img src="/img/dashy.png" alt="Dashy Logo" class="themedComponent_mlkZ themedComponent--dark_xIcU"></div><b class="navbar__title text--truncate">Dashy</b></a><a href="https://github.com/lissy93/dashy" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link">GitHub<svg width="13.5" height="13.5" aria-label="(opens in new tab)" class="iconExternalLink_nPIU"><use href="#theme-svg-external-link"></use></svg></a><a href="https://demo.dashy.to" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link">Live Demo<svg width="13.5" height="13.5" aria-label="(opens in new tab)" class="iconExternalLink_nPIU"><use href="#theme-svg-external-link"></use></svg></a><a class="navbar__item navbar__link" href="/docs/quick-start">Quick Start</a><a aria-current="page" class="navbar__item navbar__link navbar__link--active" href="/docs">Documentation</a></div><div class="theme-layout-navbar-right navbar__items navbar__items--right"><div class="toggle_vylO colorModeToggle_DEke"><button class="clean-btn toggleButton_gllP toggleButtonDisabled_aARS" type="button" disabled="" title="system mode" aria-label="Switch between dark and light mode (currently system mode)"><svg viewBox="0 0 24 24" width="24" height="24" aria-hidden="true" class="toggleIcon_g3eP lightToggleIcon_pyhR"><path fill="currentColor" d="M12,9c1.65,0,3,1.35,3,3s-1.35,3-3,3s-3-1.35-3-3S10.35,9,12,9 M12,7c-2.76,0-5,2.24-5,5s2.24,5,5,5s5-2.24,5-5 S14.76,7,12,7L12,7z M2,13l2,0c0.55,0,1-0.45,1-1s-0.45-1-1-1l-2,0c-0.55,0-1,0.45-1,1S1.45,13,2,13z M20,13l2,0c0.55,0,1-0.45,1-1 s-0.45-1-1-1l-2,0c-0.55,0-1,0.45-1,1S19.45,13,20,13z M11,2v2c0,0.55,0.45,1,1,1s1-0.45,1-1V2c0-0.55-0.45-1-1-1S11,1.45,11,2z M11,20v2c0,0.55,0.45,1,1,1s1-0.45,1-1v-2c0-0.55-0.45-1-1-1C11.45,19,11,19.45,11,20z M5.99,4.58c-0.39-0.39-1.03-0.39-1.41,0 c-0.39,0.39-0.39,1.03,0,1.41l1.06,1.06c0.39,0.39,1.03,0.39,1.41,0s0.39-1.03,0-1.41L5.99,4.58z M18.36,16.95 c-0.39-0.39-1.03-0.39-1.41,0c-0.39,0.39-0.39,1.03,0,1.41l1.06,1.06c0.39,0.39,1.03,0.39,1.41,0c0.39-0.39,0.39-1.03,0-1.41 L18.36,16.95z M19.42,5.99c0.39-0.39,0.39-1.03,0-1.41c-0.39-0.39-1.03-0.39-1.41,0l-1.06,1.06c-0.39,0.39-0.39,1.03,0,1.41 s1.03,0.39,1.41,0L19.42,5.99z M7.05,18.36c0.39-0.39,0.39-1.03,0-1.41c-0.39-0.39-1.03-0.39-1.41,0l-1.06,1.06 c-0.39,0.39-0.39,1.03,0,1.41s1.03,0.39,1.41,0L7.05,18.36z"></path></svg><svg viewBox="0 0 24 24" width="24" height="24" aria-hidden="true" class="toggleIcon_g3eP darkToggleIcon_wfgR"><path fill="currentColor" d="M9.37,5.51C9.19,6.15,9.1,6.82,9.1,7.5c0,4.08,3.32,7.4,7.4,7.4c0.68,0,1.35-0.09,1.99-0.27C17.45,17.19,14.93,19,12,19 c-3.86,0-7-3.14-7-7C5,9.07,6.81,6.55,9.37,5.51z M12,3c-4.97,0-9,4.03-9,9s4.03,9,9,9s9-4.03,9-9c0-0.46-0.04-0.92-0.1-1.36 c-0.98,1.37-2.58,2.26-4.4,2.26c-2.98,0-5.4-2.42-5.4-5.4c0-1.81,0.89-3.42,2.26-4.4C12.92,3.04,12.46,3,12,3L12,3z"></path></svg><svg viewBox="0 0 24 24" width="24" height="24" aria-hidden="true" class="toggleIcon_g3eP systemToggleIcon_QzmC"><path fill="currentColor" d="m12 21c4.971 0 9-4.029 9-9s-4.029-9-9-9-9 4.029-9 9 4.029 9 9 9zm4.95-13.95c1.313 1.313 2.05 3.093 2.05 4.95s-0.738 3.637-2.05 4.95c-1.313 1.313-3.093 2.05-4.95 2.05v-14c1.857 0 3.637 0.737 4.95 2.05z"></path></svg></button></div><div class="navbarSearchContainer_Bca1"><div class="navbar__search searchBarContainer_NW3z" dir="ltr"><input placeholder="Search" aria-label="Search" class="navbar__search-input searchInput_YFbd" value=""><div class="loadingRing_RJI3 searchBarLoadingRing_YnHq"><div></div><div></div><div></div><div></div></div></div></div></div></div><div role="presentation" class="navbar-sidebar__backdrop"></div></nav><div id="__docusaurus_skipToContent_fallback" class="theme-layout-main main-wrapper mainWrapper_z2l0"><div class="docsWrapper_hBAB"><button aria-label="Scroll back to top" class="clean-btn theme-back-to-top-button backToTopButton_sjWU" type="button"></button><div class="docRoot_UBD9"><aside class="theme-doc-sidebar-container docSidebarContainer_YfHR"><div class="sidebarViewport_aRkj"><div class="sidebar_njMd"><nav aria-label="Docs sidebar" class="menu thin-scrollbar menu_SIkG"><ul class="theme-doc-sidebar-menu menu__list"><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item menu__list-item--collapsed"><div class="menu__list-item-collapsible"><a class="categoryLink_byQd menu__link menu__link--sublist menu__link--sublist-caret" role="button" aria-expanded="false" href="/docs/quick-start"><span title="Running Dashy" class="categoryLinkLabel_W154">Running Dashy</span></a></div></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item menu__list-item--collapsed"><div class="menu__list-item-collapsible"><a class="categoryLink_byQd menu__link menu__link--sublist menu__link--sublist-caret" role="button" aria-expanded="false" href="/docs/icons"><span title="Feature Docs" class="categoryLinkLabel_W154">Feature Docs</span></a></div></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item menu__list-item--collapsed"><div class="menu__list-item-collapsible"><a class="categoryLink_byQd menu__link menu__link--sublist menu__link--sublist-caret" role="button" aria-expanded="false" href="/docs/showcase"><span title="Community" class="categoryLinkLabel_W154">Community</span></a></div></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item"><div class="menu__list-item-collapsible"><a class="categoryLink_byQd menu__link menu__link--sublist menu__link--sublist-caret menu__link--active" role="button" aria-expanded="true" href="/docs/privacy"><span title="Misc" class="categoryLinkLabel_W154">Misc</span></a></div><ul class="menu__list"><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/docs/privacy"><span title="Privacy & Security" class="linkLabel_WmDU">Privacy & Security</span></a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/docs/credits"><span title="Credits" class="linkLabel_WmDU">Credits</span></a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/docs/license"><span title="License" class="linkLabel_WmDU">License</span></a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link menu__link--active" aria-current="page" tabindex="0" href="/docs/release-workflow"><span title="Releases and Workflows" class="linkLabel_WmDU">Releases and Workflows</span></a></li></ul></li></ul></nav></div><div class="sidebar-ad"><script async="" src="//cdn.carbonads.com/carbon.js?serve=CWYIC53L&placement=dashyto" id="_carbonads_js"></script></div></div></aside><main class="docMainContainer_TBSr"><div class="container padding-top--md padding-bottom--lg"><div class="row"><div class="col docItemCol_VOVn"><div class="docItemContainer_Djhp"><article><nav class="theme-doc-breadcrumbs breadcrumbsContainer_Z_bl" aria-label="Breadcrumbs"><ul class="breadcrumbs"><li class="breadcrumbs__item"><a aria-label="Home page" class="breadcrumbs__link" href="/"><svg viewBox="0 0 24 24" class="breadcrumbHomeIcon_YNFT"><path d="M10 19v-5h4v5c0 .55.45 1 1 1h3c.55 0 1-.45 1-1v-7h1.7c.46 0 .68-.57.33-.87L12.67 3.6c-.38-.34-.96-.34-1.34 0l-8.36 7.53c-.34.3-.13.87.33.87H5v7c0 .55.45 1 1 1h3c.55 0 1-.45 1-1z" fill="currentColor"></path></svg></a></li><li class="breadcrumbs__item"><span class="breadcrumbs__link">Misc</span></li><li class="breadcrumbs__item breadcrumbs__item--active"><span class="breadcrumbs__link">Releases and Workflows</span></li></ul></nav><div class="tocCollapsible_ETCw theme-doc-toc-mobile tocMobile_ITEo"><button type="button" class="clean-btn tocCollapsibleButton_TO0P">On this page</button></div><div class="theme-doc-markdown markdown"><header><h1>Releases and Workflows</h1></header>
|
||
<ul>
|
||
<li class=""><a href="#release-schedule" class="">Release Schedule</a></li>
|
||
<li class=""><a href="#deployment-process" class="">Deployment Process</a></li>
|
||
<li class=""><a href="#git-strategy" class="">Git Strategy</a></li>
|
||
<li class=""><a href="#automated-workflows" class="">Automated Workflows</a></li>
|
||
<li class=""><a href="#release-pipeline" class="">Release Pipeline</a></li>
|
||
</ul>
|
||
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="release-schedule">Release Schedule<a href="#release-schedule" class="hash-link" aria-label="Direct link to Release Schedule" title="Direct link to Release Schedule" translate="no"></a></h2>
|
||
<p>We're using <a href="https://semver.org/" target="_blank" rel="noopener noreferrer" class="">Semantic Versioning</a>, to indicate major, minor and patch versions. You can find the current version number in the readme, and check your apps version under the config menu. The version number is pulled from the <a href="https://github.com/Lissy93/dashy/blob/master/package.json#L3" target="_blank" rel="noopener noreferrer" class="">package.json</a> file.</p>
|
||
<p>Typically there is a new major release every 2 weeks, usually on Sunday, and you can view these under the <a href="https://github.com/Lissy93/dashy/releases" target="_blank" rel="noopener noreferrer" class="">Releases Page</a>. Each new version will also have a corresponding <a href="https://github.com/Lissy93/dashy/tags" target="_blank" rel="noopener noreferrer" class="">tag on GitHub</a>, and each major release will also result in the creation of a new <a href="https://hub.docker.com/r/lissy93/dashy/tags" target="_blank" rel="noopener noreferrer" class="">tag on DockerHub</a>, so that you can fix your container to a certain version.</p>
|
||
<p>For a full breakdown of each change, you can view the <a href="https://dashy.to/updates/" target="_blank" rel="noopener noreferrer" class="">Updates Page</a>. Each new feature or significant change needs to be submitted through a pull request, which makes it easy to review and track these changes, and roll back if needed.</p>
|
||
<hr>
|
||
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="deployment-process">Deployment Process<a href="#deployment-process" class="hash-link" aria-label="Direct link to Deployment Process" title="Direct link to Deployment Process" translate="no"></a></h2>
|
||
<p>All changes and new features are submitted as pull requests, which can then be tested, reviewed and (hopefully) merged into the master branch. Every time there is a change in the major version number, a new release is published. This usually happens every 2 weeks, on a Sunday.</p>
|
||
<p>When a PR is opened:</p>
|
||
<ul>
|
||
<li class="">A series of CI checks run against the new code (lint, test, build, Docker smoke test, security audit). The PR cannot be merged if any required check fails</li>
|
||
<li class="">If <code>yarn.lock</code> was modified, Liss-Bot adds a comment summarising which packages changed</li>
|
||
</ul>
|
||
<p>After the PR is merged into master:</p>
|
||
<ul>
|
||
<li class="">If code files changed and the version in package.json wasn't already bumped, the patch version is auto-incremented and committed (<a href="https://github.com/Lissy93/dashy/blob/master/.github/workflows/bump-and-tag.yml" target="_blank" rel="noopener noreferrer" class="">bump-and-tag.yml</a>)</li>
|
||
<li class="">A git tag is created and pushed for the new version</li>
|
||
<li class="">The tag push triggers Docker image builds for <code>linux/amd64</code>, <code>linux/arm64</code> and <code>linux/arm/v7</code>, published to both DockerHub and GHCR (<a href="https://github.com/Lissy93/dashy/blob/master/.github/workflows/docker-build-publish.yml" target="_blank" rel="noopener noreferrer" class="">docker-build-publish.yml</a>)</li>
|
||
<li class="">If the tag is a major or minor version bump, a draft GitHub release is created with auto-generated release notes (<a href="https://github.com/Lissy93/dashy/blob/master/.github/workflows/draft-release.yml" target="_blank" rel="noopener noreferrer" class="">draft-release.yml</a>). Patch-only bumps skip the release</li>
|
||
</ul>
|
||
<p>Manual tagging is also available via the <a href="https://github.com/Lissy93/dashy/blob/master/.github/workflows/manual-tag.yml" target="_blank" rel="noopener noreferrer" class="">manual-tag.yml</a> workflow. You can either provide a specific version (e.g. <code>3.2.0</code>) or leave it empty to auto-bump the patch version. This is useful if the automated flow didn't trigger or you need to cut a release outside the normal PR flow.</p>
|
||
<hr>
|
||
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="git-strategy">Git Strategy<a href="#git-strategy" class="hash-link" aria-label="Direct link to Git Strategy" title="Direct link to Git Strategy" translate="no"></a></h2>
|
||
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="git-flow">Git Flow<a href="#git-flow" class="hash-link" aria-label="Direct link to Git Flow" title="Direct link to Git Flow" translate="no"></a></h3>
|
||
<p>Like most Git repos, we are following the <a href="https://guides.github.com/introduction/flow" target="_blank" rel="noopener noreferrer" class="">Github Flow</a> standard.</p>
|
||
<ol>
|
||
<li class="">Create a branch (or fork if you don'd have write access)</li>
|
||
<li class="">Code some awesome stuff, then add and commit your changes</li>
|
||
<li class="">Create a Pull Request, complete the checklist and ensure the build succeeds</li>
|
||
<li class="">Follow up with any reviews on your code</li>
|
||
<li class="">Merge 🎉</li>
|
||
</ol>
|
||
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="git-branch-naming">Git Branch Naming<a href="#git-branch-naming" class="hash-link" aria-label="Direct link to Git Branch Naming" title="Direct link to Git Branch Naming" translate="no"></a></h3>
|
||
<p>The format of your branch name should be something similar to: <code>[TYPE]/[TICKET]_[TITLE]</code>
|
||
For example, <code>FEATURE/420_Awesome-feature</code> or <code>FIX/690_login-server-error</code></p>
|
||
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="commit-emojis">Commit Emojis<a href="#commit-emojis" class="hash-link" aria-label="Direct link to Commit Emojis" title="Direct link to Commit Emojis" translate="no"></a></h3>
|
||
<p>Using a single emoji at the start of each commit message, to indicate the type task, makes the commit ledger easier to understand, plus it looks cool.</p>
|
||
<ul>
|
||
<li class="">🎨 <code>:art:</code> - Improve structure / format of the code.</li>
|
||
<li class="">⚡️ <code>:zap:</code> - Improve performance.</li>
|
||
<li class="">🔥 <code>:fire:</code> - Remove code or files.</li>
|
||
<li class="">🐛 <code>:bug:</code> - Fix a bug.</li>
|
||
<li class="">🚑️ <code>:ambulance:</code> - Critical hotfix</li>
|
||
<li class="">✨ <code>:sparkles:</code> - Introduce new features.</li>
|
||
<li class="">📝 <code>:memo:</code> - Add or update documentation.</li>
|
||
<li class="">🚀 <code>:rocket:</code> - Deploy stuff.</li>
|
||
<li class="">💄 <code>:lipstick:</code> - Add or update the UI and style files.</li>
|
||
<li class="">🎉 <code>:tada:</code> - Begin a project.</li>
|
||
<li class="">✅ <code>:white_check_mark:</code> - Add, update, or pass tests.</li>
|
||
<li class="">🔒️ <code>:lock:</code> - Fix security issues.</li>
|
||
<li class="">🔖 <code>:bookmark:</code> - Make a Release or Version tag.</li>
|
||
<li class="">🚨 <code>:rotating_light:</code> - Fix compiler / linter warnings.</li>
|
||
<li class="">🚧 <code>:construction:</code> - Work in progress.</li>
|
||
<li class="">⬆️ <code>:arrow_up:</code> - Upgrade dependencies.</li>
|
||
<li class="">👷 <code>:construction_worker:</code> - Add or update CI build system.</li>
|
||
<li class="">♻️ <code>:recycle:</code> - Refactor code.</li>
|
||
<li class="">🩹 <code>:adhesive_bandage:</code> - Simple fix for a non-critical issue.</li>
|
||
<li class="">🔧 <code>:wrench:</code> - Add or update configuration files.</li>
|
||
<li class="">🍱 <code>:bento:</code> - Add or update assets.</li>
|
||
<li class="">🗃️ <code>:card_file_box:</code> - Perform database schema related changes.</li>
|
||
<li class="">✏️ <code>:pencil2:</code> - Fix typos.</li>
|
||
<li class="">🌐 <code>:globe_with_meridians:</code> - Internationalization and translations.</li>
|
||
</ul>
|
||
<p>For a full list of options, see <a href="https://gitmoji.dev/" target="_blank" rel="noopener noreferrer" class="">gitmoji.dev</a></p>
|
||
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="pr-guidelines">PR Guidelines<a href="#pr-guidelines" class="hash-link" aria-label="Direct link to PR Guidelines" title="Direct link to PR Guidelines" translate="no"></a></h3>
|
||
<p>Once you've made your changes, and pushed them to your fork or branch, you're ready to open a pull request!</p>
|
||
<p>For a pull request to be merged, it must:</p>
|
||
<ul>
|
||
<li class="">Must be backwards compatible</li>
|
||
<li class="">The build, lint and tests (run by GH actions) must pass</li>
|
||
<li class="">There must not be any merge conflicts</li>
|
||
</ul>
|
||
<p>When you submit your PR, include the required info, by filling out the PR template. Including:</p>
|
||
<ul>
|
||
<li class="">A brief description of your changes</li>
|
||
<li class="">The issue, ticket or discussion number (if applicable)</li>
|
||
<li class="">For UI relate updates include a screenshot</li>
|
||
<li class="">If any dependencies were added, explain why it was needed, state the cost associated, and confirm it does not introduce any security issues</li>
|
||
<li class="">Finally, check the checkboxes, to confirm that the standards are met, and hit submit!</li>
|
||
</ul>
|
||
<hr>
|
||
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="automated-workflows">Automated Workflows<a href="#automated-workflows" class="hash-link" aria-label="Direct link to Automated Workflows" title="Direct link to Automated Workflows" translate="no"></a></h2>
|
||
<p>Dashy makes heavy use of <a href="https://github.com/features/actions" target="_blank" rel="noopener noreferrer" class="">GitHub Actions</a> to fully automate the checking, testing, building, deploying of the project, as well as administration tasks like management of issues, tags, releases and documentation. The following section outlines each workflow, along with a link the the action file, current status and short description. A lot of these automations were made possible using community actions contributed to GH marketplace by some amazing people.</p>
|
||
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="ci-checks">CI Checks<a href="#ci-checks" class="hash-link" aria-label="Direct link to CI Checks" title="Direct link to CI Checks" translate="no"></a></h3>
|
||
<p>These run on every pull request targeting master. All required checks must pass before merging.</p>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<table><thead><tr><th>Action</th><th>Description</th></tr></thead><tbody><tr><td><strong>PR Quality Check</strong> <br><a href="https://github.com/Lissy93/dashy/actions/workflows/pr-quality-check.yml" target="_blank" rel="noopener noreferrer" class=""><img decoding="async" loading="lazy" src="https://github.com/Lissy93/dashy/actions/workflows/pr-quality-check.yml/badge.svg" alt="pr-quality-check.yml" class="img_ev3q"></a></td><td>Runs lint, unit tests, a full build and Docker smoke test against every PR. Also runs a security audit on dependencies</td></tr><tr><td><strong>Dependency Update Summary</strong> <br><a href="https://github.com/Lissy93/dashy/actions/workflows/dependency-updates-summary.yml" target="_blank" rel="noopener noreferrer" class=""><img decoding="async" loading="lazy" src="https://github.com/Lissy93/dashy/actions/workflows/dependency-updates-summary.yml/badge.svg" alt="dependency-updates-summary.yml" class="img_ev3q"></a></td><td>When yarn.lock is modified in a PR, Liss-Bot comments with a summary of which packages changed</td></tr></tbody></table>
|
||
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="releases">Releases<a href="#releases" class="hash-link" aria-label="Direct link to Releases" title="Direct link to Releases" translate="no"></a></h3>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<table><thead><tr><th>Action</th><th>Description</th></tr></thead><tbody><tr><td><strong>Auto Version & Tag</strong> <br><a href="https://github.com/Lissy93/dashy/actions/workflows/bump-and-tag.yml" target="_blank" rel="noopener noreferrer" class=""><img decoding="async" loading="lazy" src="https://github.com/Lissy93/dashy/actions/workflows/bump-and-tag.yml/badge.svg" alt="bump-and-tag.yml" class="img_ev3q"></a></td><td>When a PR with code changes is merged into master, auto-bumps the patch version (if not already bumped) and creates a git tag</td></tr><tr><td><strong>Manual Tag</strong> <br><a href="https://github.com/Lissy93/dashy/actions/workflows/manual-tag.yml" target="_blank" rel="noopener noreferrer" class=""><img decoding="async" loading="lazy" src="https://github.com/Lissy93/dashy/actions/workflows/manual-tag.yml/badge.svg" alt="manual-tag.yml" class="img_ev3q"></a></td><td>Manual dispatch workflow. Provide a version to tag, or leave empty to auto-bump patch. Updates package.json, commits and creates the tag</td></tr><tr><td><strong>Docker Publish</strong> <br><a href="https://github.com/Lissy93/dashy/actions/workflows/docker-build-publish.yml" target="_blank" rel="noopener noreferrer" class=""><img decoding="async" loading="lazy" src="https://github.com/Lissy93/dashy/actions/workflows/docker-build-publish.yml/badge.svg" alt="docker-build-publish.yml" class="img_ev3q"></a></td><td>Triggered by tag pushes. Builds multi-arch Docker images and publishes to DockerHub and GHCR with semver tags</td></tr><tr><td><strong>Draft Release</strong> <br><a href="https://github.com/Lissy93/dashy/actions/workflows/draft-release.yml" target="_blank" rel="noopener noreferrer" class=""><img decoding="async" loading="lazy" src="https://github.com/Lissy93/dashy/actions/workflows/draft-release.yml/badge.svg" alt="draft-release.yml" class="img_ev3q"></a></td><td>Triggered by tag pushes. Creates a draft GitHub release with auto-generated notes for major or minor version bumps. Patch-only bumps are skipped</td></tr></tbody></table>
|
||
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="issue-management">Issue Management<a href="#issue-management" class="hash-link" aria-label="Direct link to Issue Management" title="Direct link to Issue Management" translate="no"></a></h3>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<table><thead><tr><th>Action</th><th>Description</th></tr></thead><tbody><tr><td><strong>Close Stale Issues</strong> <br><a href="https://github.com/Lissy93/dashy/actions/workflows/close-stale-issues.yml" target="_blank" rel="noopener noreferrer" class=""><img decoding="async" loading="lazy" src="https://github.com/Lissy93/dashy/actions/workflows/close-stale-issues.yml/badge.svg" alt="close-stale-issues.yml" class="img_ev3q"></a></td><td>Issues which have not been updated for a long time will have a comment posted to them. If the author does not reply, the issue will be marked as stale and closed. Also handles issues awaiting user response and pings the maintainer when needed</td></tr></tbody></table>
|
||
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="documentation">Documentation<a href="#documentation" class="hash-link" aria-label="Direct link to Documentation" title="Direct link to Documentation" translate="no"></a></h3>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<table><thead><tr><th>Action</th><th>Description</th></tr></thead><tbody><tr><td><strong>Wiki Sync</strong> <br><a href="https://github.com/Lissy93/dashy/actions/workflows/wiki-sync.yml" target="_blank" rel="noopener noreferrer" class=""><img decoding="async" loading="lazy" src="https://github.com/Lissy93/dashy/actions/workflows/wiki-sync.yml/badge.svg" alt="wiki-sync.yml" class="img_ev3q"></a></td><td>Publishes the repository wiki from the markdown files in the docs directory. Runs weekly and on manual dispatch</td></tr><tr><td><strong>Update Docs Site</strong> <br><a href="https://github.com/Lissy93/dashy/actions/workflows/update-docs-site.yml" target="_blank" rel="noopener noreferrer" class=""><img decoding="async" loading="lazy" src="https://github.com/Lissy93/dashy/actions/workflows/update-docs-site.yml/badge.svg" alt="update-docs-site.yml" class="img_ev3q"></a></td><td>When docs change on master, copies them to the website branch and processes them for the docs site</td></tr><tr><td><strong>Build Docs Site</strong> <br><a href="https://github.com/Lissy93/dashy/actions/workflows/build-docs-site.yml" target="_blank" rel="noopener noreferrer" class=""><img decoding="async" loading="lazy" src="https://github.com/Lissy93/dashy/actions/workflows/build-docs-site.yml/badge.svg" alt="build-docs-site.yml" class="img_ev3q"></a></td><td>Builds and deploys the documentation website from the WEBSITE/docs-site-source branch</td></tr></tbody></table>
|
||
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="other">Other<a href="#other" class="hash-link" aria-label="Direct link to Other" title="Direct link to Other" translate="no"></a></h3>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<table><thead><tr><th>Action</th><th>Description</th></tr></thead><tbody><tr><td><strong>Mirror to Codeberg</strong> <br><a href="https://github.com/Lissy93/dashy/actions/workflows/mirror.yml" target="_blank" rel="noopener noreferrer" class=""><img decoding="async" loading="lazy" src="https://github.com/Lissy93/dashy/actions/workflows/mirror.yml/badge.svg" alt="mirror.yml" class="img_ev3q"></a></td><td>Pushes a copy of the repo to Codeberg weekly and on manual dispatch</td></tr></tbody></table>
|
||
<hr>
|
||
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="release-pipeline">Release Pipeline<a href="#release-pipeline" class="hash-link" aria-label="Direct link to Release Pipeline" title="Direct link to Release Pipeline" translate="no"></a></h2>
|
||
<!-- -->
|
||
<hr></div><footer class="theme-doc-footer docusaurus-mt-lg"><div class="row margin-top--sm theme-doc-footer-edit-meta-row"><div class="col noPrint_WFHX"><a href="https://github.com/Lissy93/dashy/edit/gh-pages/docs/docs/release-workflow.md" target="_blank" rel="noopener noreferrer" class="theme-edit-this-page"><svg fill="currentColor" height="20" width="20" viewBox="0 0 40 40" class="iconEdit_Z9Sw" aria-hidden="true"><g><path d="m34.5 11.7l-3 3.1-6.3-6.3 3.1-3q0.5-0.5 1.2-0.5t1.1 0.5l3.9 3.9q0.5 0.4 0.5 1.1t-0.5 1.2z m-29.5 17.1l18.4-18.5 6.3 6.3-18.4 18.4h-6.3v-6.2z"></path></g></svg>Edit this page</a></div><div class="col lastUpdated_JAkA"><span class="theme-last-updated">Last updated<!-- --> on <b><time datetime="2026-03-13T09:25:41.000Z" itemprop="dateModified">Mar 13, 2026</time></b></span></div></div></footer></article><nav class="docusaurus-mt-lg pagination-nav" aria-label="Docs pages"><a class="pagination-nav__link pagination-nav__link--prev" href="/docs/license"><div class="pagination-nav__sublabel">Previous</div><div class="pagination-nav__label">License</div></a></nav></div></div><div class="col col--3"><div class="tableOfContents_bqdL thin-scrollbar theme-doc-toc-desktop"><ul class="table-of-contents table-of-contents__left-border"><li><a href="#release-schedule" class="table-of-contents__link toc-highlight">Release Schedule</a></li><li><a href="#deployment-process" class="table-of-contents__link toc-highlight">Deployment Process</a></li><li><a href="#git-strategy" class="table-of-contents__link toc-highlight">Git Strategy</a><ul><li><a href="#git-flow" class="table-of-contents__link toc-highlight">Git Flow</a></li><li><a href="#git-branch-naming" class="table-of-contents__link toc-highlight">Git Branch Naming</a></li><li><a href="#commit-emojis" class="table-of-contents__link toc-highlight">Commit Emojis</a></li><li><a href="#pr-guidelines" class="table-of-contents__link toc-highlight">PR Guidelines</a></li></ul></li><li><a href="#automated-workflows" class="table-of-contents__link toc-highlight">Automated Workflows</a><ul><li><a href="#ci-checks" class="table-of-contents__link toc-highlight">CI Checks</a></li><li><a href="#releases" class="table-of-contents__link toc-highlight">Releases</a></li><li><a href="#issue-management" class="table-of-contents__link toc-highlight">Issue Management</a></li><li><a href="#documentation" class="table-of-contents__link toc-highlight">Documentation</a></li><li><a href="#other" class="table-of-contents__link toc-highlight">Other</a></li></ul></li><li><a href="#release-pipeline" class="table-of-contents__link toc-highlight">Release Pipeline</a></li></ul></div></div></div></div></main></div></div></div><footer class="theme-layout-footer footer footer--dark"><div class="container container-fluid"><div class="row footer__links"><div class="theme-layout-footer-column col footer__col"><div class="footer__title">Intro</div><ul class="footer__items clean-list"><li class="footer__item"><a href="https://github.com/lissy93/dashy" target="_blank" rel="noopener noreferrer" class="footer__link-item">GitHub<svg width="13.5" height="13.5" aria-label="(opens in new tab)" class="iconExternalLink_nPIU"><use href="#theme-svg-external-link"></use></svg></a></li><li class="footer__item"><a href="https://demo.dashy.to" target="_blank" rel="noopener noreferrer" class="footer__link-item">Live Demo<svg width="13.5" height="13.5" aria-label="(opens in new tab)" class="iconExternalLink_nPIU"><use href="#theme-svg-external-link"></use></svg></a></li><li class="footer__item"><a class="footer__link-item" href="/docs/quick-start">Quick Start</a></li><li class="footer__item"><a class="footer__link-item" href="/docs">Documentation</a></li></ul></div><div class="theme-layout-footer-column col footer__col"><div class="footer__title">Setup Guide</div><ul class="footer__items clean-list"><li class="footer__item"><a class="footer__link-item" href="/docs/deployment">Deploying</a></li><li class="footer__item"><a class="footer__link-item" href="/docs/configuring">Configuring</a></li><li class="footer__item"><a class="footer__link-item" href="/docs/management">Management</a></li><li class="footer__item"><a class="footer__link-item" href="/docs/troubleshooting">Troubleshooting</a></li></ul></div><div class="theme-layout-footer-column col footer__col"><div class="footer__title">Feature Docs Pt 1</div><ul class="footer__items clean-list"><li class="footer__item"><a class="footer__link-item" href="/docs/authentication">Authentication</a></li><li class="footer__item"><a class="footer__link-item" href="/docs/alternate-views">Alternate Views</a></li><li class="footer__item"><a class="footer__link-item" href="/docs/backup-restore">Backup & Restore</a></li><li class="footer__item"><a class="footer__link-item" href="/docs/icons">Icons</a></li></ul></div><div class="theme-layout-footer-column col footer__col"><div class="footer__title">Feature Docs Pt 2</div><ul class="footer__items clean-list"><li class="footer__item"><a class="footer__link-item" href="/docs/multi-language-support">Language Switching</a></li><li class="footer__item"><a class="footer__link-item" href="/docs/status-indicators">Status Indicators</a></li><li class="footer__item"><a class="footer__link-item" href="/docs/searching">Searching & Shortcuts</a></li><li class="footer__item"><a class="footer__link-item" href="/docs/theming">Theming</a></li></ul></div><div class="theme-layout-footer-column col footer__col"><div class="footer__title">Community</div><ul class="footer__items clean-list"><li class="footer__item"><a class="footer__link-item" href="/docs/developing">Developing</a></li><li class="footer__item"><a class="footer__link-item" href="/docs/development-guides">Development Guides</a></li><li class="footer__item"><a class="footer__link-item" href="/docs/contributing">Contributing</a></li><li class="footer__item"><a class="footer__link-item" href="/docs/showcase">Showcase</a></li><li class="footer__item"><a class="footer__link-item" href="/docs/credits">Credits</a></li></ul></div><div class="theme-layout-footer-column col footer__col"><div class="footer__title">Misc</div><ul class="footer__items clean-list"><li class="footer__item"><a class="footer__link-item" href="/docs/privacy">Privacy & Security</a></li><li class="footer__item"><a class="footer__link-item" href="/docs/license">License</a></li><li class="footer__item"><a href="https://github.com/Lissy93/dashy/blob/master/.github/LEGAL.md" target="_blank" rel="noopener noreferrer" class="footer__link-item">Legal<svg width="13.5" height="13.5" aria-label="(opens in new tab)" class="iconExternalLink_nPIU"><use href="#theme-svg-external-link"></use></svg></a></li><li class="footer__item"><a href="https://github.com/Lissy93/dashy/blob/master/.github/CODE_OF_CONDUCT.md" target="_blank" rel="noopener noreferrer" class="footer__link-item">Code of Conduct<svg width="13.5" height="13.5" aria-label="(opens in new tab)" class="iconExternalLink_nPIU"><use href="#theme-svg-external-link"></use></svg></a></li><li class="footer__item"><a href="https://github.com/Lissy93/dashy/blob/master/.github/CHANGELOG.md" target="_blank" rel="noopener noreferrer" class="footer__link-item">Changelog<svg width="13.5" height="13.5" aria-label="(opens in new tab)" class="iconExternalLink_nPIU"><use href="#theme-svg-external-link"></use></svg></a></li></ul></div></div><div class="footer__bottom text--center"><div class="footer__copyright"><a href="https://dashy.to">Dashy</a> - The Self-Hosted Dashboard for your Homelab<br>License under <a href="https://github.com/Lissy93/dashy/blob/master/LICENSE">MIT</a>. Copyright © 2026 <a href="https://aliciasykes.com">Alicia Sykes</a></div></div></div></footer></div>
|
||
</body>
|
||
</html> |