documentation/ops/publish_release.html
2021-10-10 18:32:29 +00:00

96 lines
24 KiB
HTML

<!DOCTYPE html>
<html lang="en-US">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1">
<title>Publishing a Release | Pterodactyl</title>
<meta name="generator" content="VuePress 1.8.2">
<link rel="apple-touch-icon" sizes="180x180" href="/favicons/apple-touch-icon.png">
<link rel="icon" type="image/png" href="/favicons/favicon-32x32.png" sizes="32x32">
<link rel="icon" type="image/png" href="/favicons/favicon-16x16.png" sizes="16x16">
<link rel="mask-icon" href="/favicons/safari-pinned-tab.svg" color="#0e4688">
<link rel="manifest" href="/favicons/site.webmanifest">
<link rel="shortcut icon" href="/favicons/favicon.ico">
<meta name="description" content="Pterodactyl is an open-source game server management panel built with PHP 7, React, and Go. Designed with security in mind, Pterodactyl runs all game servers in isolated Docker containers while exposing a beautiful and intuitive UI to end users.">
<meta name="msapplication-config" content="/favicons/browserconfig.xml">
<meta name="theme-color" content="#0e4688">
<link rel="preload" href="/assets/css/0.styles.b4cb0fef.css" as="style"><link rel="preload" href="/assets/js/app.590a4d0d.js" as="script"><link rel="preload" href="/assets/js/4.bff5ff58.js" as="script"><link rel="preload" href="/assets/js/1.79a56ae5.js" as="script"><link rel="preload" href="/assets/js/58.139108d1.js" as="script"><link rel="prefetch" href="/assets/js/10.27cec751.js"><link rel="prefetch" href="/assets/js/11.27ba30b0.js"><link rel="prefetch" href="/assets/js/12.2e01246c.js"><link rel="prefetch" href="/assets/js/13.bd04c4ec.js"><link rel="prefetch" href="/assets/js/14.f2be742e.js"><link rel="prefetch" href="/assets/js/15.a6802091.js"><link rel="prefetch" href="/assets/js/16.f2dea920.js"><link rel="prefetch" href="/assets/js/17.e3b378b0.js"><link rel="prefetch" href="/assets/js/18.fcb158a9.js"><link rel="prefetch" href="/assets/js/19.f9b16a1f.js"><link rel="prefetch" href="/assets/js/2.21e1a937.js"><link rel="prefetch" href="/assets/js/20.a31cd600.js"><link rel="prefetch" href="/assets/js/21.986dab58.js"><link rel="prefetch" href="/assets/js/22.01e99816.js"><link rel="prefetch" href="/assets/js/23.ab477db3.js"><link rel="prefetch" href="/assets/js/24.3db401dc.js"><link rel="prefetch" href="/assets/js/25.fb19183c.js"><link rel="prefetch" href="/assets/js/26.199e42e5.js"><link rel="prefetch" href="/assets/js/27.53b2955f.js"><link rel="prefetch" href="/assets/js/28.b1cca863.js"><link rel="prefetch" href="/assets/js/29.c234f3e0.js"><link rel="prefetch" href="/assets/js/30.61a90133.js"><link rel="prefetch" href="/assets/js/31.6cbb938e.js"><link rel="prefetch" href="/assets/js/32.7effab83.js"><link rel="prefetch" href="/assets/js/33.5cb72a20.js"><link rel="prefetch" href="/assets/js/34.f044669f.js"><link rel="prefetch" href="/assets/js/35.6b4fc97c.js"><link rel="prefetch" href="/assets/js/36.33b7916b.js"><link rel="prefetch" href="/assets/js/37.b81f7a4e.js"><link rel="prefetch" href="/assets/js/38.46b66006.js"><link rel="prefetch" href="/assets/js/39.a7036ff5.js"><link rel="prefetch" href="/assets/js/40.5561e292.js"><link rel="prefetch" href="/assets/js/41.8357cc2d.js"><link rel="prefetch" href="/assets/js/42.96d1acb1.js"><link rel="prefetch" href="/assets/js/43.9fd714d5.js"><link rel="prefetch" href="/assets/js/44.5250ac95.js"><link rel="prefetch" href="/assets/js/45.3ebbab0e.js"><link rel="prefetch" href="/assets/js/46.a3168226.js"><link rel="prefetch" href="/assets/js/47.7a0c0c49.js"><link rel="prefetch" href="/assets/js/48.8b4df094.js"><link rel="prefetch" href="/assets/js/49.1e699f40.js"><link rel="prefetch" href="/assets/js/5.407df260.js"><link rel="prefetch" href="/assets/js/50.fb545b0b.js"><link rel="prefetch" href="/assets/js/51.8bf819d3.js"><link rel="prefetch" href="/assets/js/52.c0fa38e2.js"><link rel="prefetch" href="/assets/js/53.acaa8c4b.js"><link rel="prefetch" href="/assets/js/54.01f718b6.js"><link rel="prefetch" href="/assets/js/55.0c83194a.js"><link rel="prefetch" href="/assets/js/56.488f03fe.js"><link rel="prefetch" href="/assets/js/57.6cdf7d48.js"><link rel="prefetch" href="/assets/js/59.2de63e9e.js"><link rel="prefetch" href="/assets/js/6.8999fd8a.js"><link rel="prefetch" href="/assets/js/60.a35a1994.js"><link rel="prefetch" href="/assets/js/61.c644eb6e.js"><link rel="prefetch" href="/assets/js/62.6d624b0b.js"><link rel="prefetch" href="/assets/js/63.08f06847.js"><link rel="prefetch" href="/assets/js/64.8d69a757.js"><link rel="prefetch" href="/assets/js/65.f54c400d.js"><link rel="prefetch" href="/assets/js/66.e3ae272d.js"><link rel="prefetch" href="/assets/js/67.4ddb259b.js"><link rel="prefetch" href="/assets/js/68.e7498700.js"><link rel="prefetch" href="/assets/js/69.bb730956.js"><link rel="prefetch" href="/assets/js/7.9f1ce256.js"><link rel="prefetch" href="/assets/js/70.da6650f2.js"><link rel="prefetch" href="/assets/js/71.f847d74c.js"><link rel="prefetch" href="/assets/js/72.7f5dd9c7.js"><link rel="prefetch" href="/assets/js/73.3c0e5aad.js"><link rel="prefetch" href="/assets/js/74.1351a3ef.js"><link rel="prefetch" href="/assets/js/75.6351ca99.js"><link rel="prefetch" href="/assets/js/76.0b5f8895.js"><link rel="prefetch" href="/assets/js/77.54ccbb7a.js"><link rel="prefetch" href="/assets/js/78.8bca8e5f.js"><link rel="prefetch" href="/assets/js/8.c1f22b35.js"><link rel="prefetch" href="/assets/js/9.7af626f7.js">
<link rel="stylesheet" href="/assets/css/0.styles.b4cb0fef.css">
</head>
<body>
<div id="app" data-server-rendered="true"><div class="theme-container"><header class="nav"><div class="sidebar-button block md:hidden flex-no-shrink"><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" role="img" viewBox="0 0 448 512" class="icon"><path fill="currentColor" d="M436 124H12c-6.627 0-12-5.373-12-12V80c0-6.627 5.373-12 12-12h424c6.627 0 12 5.373 12 12v32c0 6.627-5.373 12-12 12zm0 160H12c-6.627 0-12-5.373-12-12v-32c0-6.627 5.373-12 12-12h424c6.627 0 12 5.373 12 12v32c0 6.627-5.373 12-12 12zm0 160H12c-6.627 0-12-5.373-12-12v-32c0-6.627 5.373-12 12-12h424c6.627 0 12 5.373 12 12v32c0 6.627-5.373 12-12 12z"></path></svg></div> <div class="logo-container"><a href="/" class="home-link router-link-active"><img src="/logos/pterry.svg" class="logo"> <span class="site-name hidden md:inline can-hide">Pterodactyl</span></a></div> <div class="w-full"><div class="flex"><div class="search-box"><input aria-label="Search" placeholder="Search" autocomplete="off" spellcheck="false" value=""> <!----></div> <nav class="nav-links flex-no-shrink hidden md:flex"><div class="nav-item"><a href="/project/introduction.html" class="nav-link">Documentation
</a></div><div class="nav-item"><a href="/community/about.html" class="nav-link">Community Guides
</a></div><div class="nav-item"><a href="https://discord.gg/pterodactyl" target="_blank" rel="noopener noreferrer" class="nav-link external">
Get Help
<span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></a></div><div class="nav-item"><a href="https://dashflo.net/docs/api/pterodactyl/v1/" target="_blank" rel="noopener noreferrer" class="nav-link external">
API
<span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></a></div> <div class="nav-item"><a href="https://github.com/pterodactyl/panel" target="_blank" rel="noopener noreferrer" class="nav-link">
Contribute
<span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></a></div></nav></div></div></header> <div class="sidebar-mask"></div> <div class="sidebar"><nav class="nav-links flex-no-shrink block md:hidden"><div class="nav-item"><a href="/project/introduction.html" class="nav-link">Documentation
</a></div><div class="nav-item"><a href="/community/about.html" class="nav-link">Community Guides
</a></div><div class="nav-item"><a href="https://discord.gg/pterodactyl" target="_blank" rel="noopener noreferrer" class="nav-link external">
Get Help
<span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></a></div><div class="nav-item"><a href="https://dashflo.net/docs/api/pterodactyl/v1/" target="_blank" rel="noopener noreferrer" class="nav-link external">
API
<span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></a></div> <div class="nav-item"><a href="https://github.com/pterodactyl/panel" target="_blank" rel="noopener noreferrer" class="nav-link">
Contribute
<span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></a></div></nav> <ul class="sidebar-links"><li><div class="sidebar-group first"><p class="sidebar-heading"><span>Project Information</span> <!----> <!----></p> <ul class="sidebar-group-items"><li><a href="/project/introduction.html" class="sidebar-link">Introduction</a></li><li><a href="/project/about.html" class="sidebar-link">About</a></li><li><a href="/project/terms.html" class="sidebar-link">Terminology</a></li><li><a href="/project/community.html" class="sidebar-link">Community Standards</a></li></ul></div></li><li><div class="sidebar-group"><p class="sidebar-heading"><span>Panel</span> <!----> <div tabindex="0" class="version-select custom-select float-right"><div class="selected"><div class="inline-block">
1.6
<span class="rounded-full ml-2 text-green-dark">current</span></div> <span class="arrow"></span></div> <div class="items hidden"><div class="item"><div class="inline-block">
1.6
<span class="rounded-full ml-2 text-green-dark">current</span></div></div></div></div></p> <ul class="sidebar-group-items"><li><a href="/panel/1.0/getting_started.html" class="sidebar-link">Getting Started</a></li><li><a href="/panel/1.0/webserver_configuration.html" class="sidebar-link">Webserver Configuration</a></li><li><a href="/panel/1.0/additional_configuration.html" class="sidebar-link">Additional Configuration</a></li><li><a href="/panel/1.0/updating.html" class="sidebar-link">Updating the Panel</a></li><li><a href="/panel/1.0/troubleshooting.html" class="sidebar-link">Troubleshooting</a></li><li><a href="/panel/1.0/legacy_upgrade.html" class="sidebar-link">Legacy Upgrades</a></li></ul></div></li><li><div class="sidebar-group"><p class="sidebar-heading"><span>Wings</span> <!----> <div tabindex="0" class="version-select custom-select float-right"><div class="selected"><div class="inline-block">
1.5
<span class="rounded-full ml-2 text-green-dark">current</span></div> <span class="arrow"></span></div> <div class="items hidden"><div class="item"><div class="inline-block">
1.5
<span class="rounded-full ml-2 text-green-dark">current</span></div></div></div></div></p> <ul class="sidebar-group-items"><li><a href="/wings/1.0/installing.html" class="sidebar-link">Installing Wings</a></li><li><a href="/wings/1.0/upgrading.html" class="sidebar-link">Upgrading Wings</a></li><li><a href="/wings/1.0/migrating.html" class="sidebar-link">Migrating to Wings</a></li><li><a href="/wings/1.0/configuration.html" class="sidebar-link">Additional Configuration</a></li></ul></div></li><li><div class="sidebar-group"><p class="sidebar-heading"><span>Tutorials</span> <!----> <!----></p> <ul class="sidebar-group-items"><li><a href="/tutorials/mysql_setup.html" class="sidebar-link">Setting up MySQL</a></li><li><a href="/tutorials/creating_ssl_certificates.html" class="sidebar-link">Creating SSL Certificates</a></li></ul></div></li><li><div class="sidebar-group"><p class="sidebar-heading"><span>Guides</span> <!----> <!----></p> <ul class="sidebar-group-items"><li><a href="/guides/mounts.html" class="sidebar-link">Using Mounts</a></li></ul></div></li><li><div class="sidebar-group collapsable"><p class="sidebar-heading open"><span>Development &amp; Ops</span> <span class="arrow down"></span> <!----></p> <ul class="sidebar-group-items"><li><a href="/ops/publish_release.html" aria-current="page" class="active sidebar-link">Publishing a Release</a><ul class="sidebar-sub-headers"><li class="sidebar-sub-header"><a href="/ops/publish_release.html#pick-a-codename" class="sidebar-link">Pick a Codename</a></li><li class="sidebar-sub-header"><a href="/ops/publish_release.html#create-the-release-branch" class="sidebar-link">Create the Release Branch</a></li><li class="sidebar-sub-header"><a href="/ops/publish_release.html#tag-a-release" class="sidebar-link">Tag a Release</a></li><li class="sidebar-sub-header"><a href="/ops/publish_release.html#generate-signatures-hashes" class="sidebar-link">Generate Signatures &amp; Hashes</a></li><li class="sidebar-sub-header"><a href="/ops/publish_release.html#update-documentation" class="sidebar-link">Update Documentation</a></li><li class="sidebar-sub-header"><a href="/ops/publish_release.html#update-cdn" class="sidebar-link">Update CDN</a></li><li class="sidebar-sub-header"><a href="/ops/publish_release.html#make-discord-announcement" class="sidebar-link">Make Discord Announcement</a></li><li class="sidebar-sub-header"><a href="/ops/publish_release.html#example-process" class="sidebar-link">Example Process</a></li></ul></li></ul></div></li></ul> </div> <div class="page"> <div class="content content__default"><h1 id="publishing-a-release"><a href="#publishing-a-release" class="header-anchor">#</a> Publishing a Release</h1> <div class="custom-block tip"><p class="custom-block-title">TIP</p> <p>This documentation is specific to the core project team and serves to document how we create, deploy, and announce
releases of this software. It might be an interesting read, but you'll likely never use anything out of this on a
day-to-day basis.</p></div> <p></p><div class="table-of-contents"><ul><li><a href="#pick-a-codename">Pick a Codename</a></li><li><a href="#create-the-release-branch">Create the Release Branch</a></li><li><a href="#tag-a-release">Tag a Release</a><ul><li><a href="#update-the-release-on-github">Update the Release on GitHub</a></li></ul></li><li><a href="#generate-signatures-hashes">Generate Signatures &amp; Hashes</a><ul><li><a href="#create-checksum">Create Checksum</a></li><li><a href="#gpg-sign-release">GPG Sign Release</a></li><li><a href="#attach-to-release">Attach to Release</a></li></ul></li><li><a href="#update-documentation">Update Documentation</a></li><li><a href="#update-cdn">Update CDN</a></li><li><a href="#make-discord-announcement">Make Discord Announcement</a></li><li><a href="#example-process">Example Process</a></li></ul></div><p></p> <h2 id="pick-a-codename"><a href="#pick-a-codename" class="header-anchor">#</a> Pick a Codename</h2> <p>If this is going to be a major version release <code>0.X</code> or <code>1.X</code> (not <code>0.0.X</code>), you will need to have a codename picked
out for the release. This should be some type of rhyme or otherwise creative name, ideally using some type of Pterodactyl
related species name.</p> <h2 id="create-the-release-branch"><a href="#create-the-release-branch" class="header-anchor">#</a> Create the Release Branch</h2> <p>Releases should be created as their own branch on GitHub, following the GitFlow model. This means you'll need to create
a <code>release/vX.X.X</code> branch. Once the branch is created you need to update the version number for the software. For the Panel
this requires editing <code>config/app.php</code> and setting the specific <code>APP_VERSION</code> <em>without</em> a preceding <code>v</code>. For the Daemon,
you need to edit <code>package.json</code> and set the <code>version</code> field, again <em>without</em> a preceding <code>v</code>.</p> <p>Once you've created the branch and update the relevant file publish the branch to GitHub to begin the next steps.</p> <h2 id="tag-a-release"><a href="#tag-a-release" class="header-anchor">#</a> Tag a Release</h2> <p>Once the branch is pushed up you need to tag a release and then configure it on GitHub. To do so, run the command below
setting the version correctly. This will create a tag for <code>v0.6.0</code> on the <code>release/v0.6.0</code> branch and sign it using your
GPG key.</p> <div class="custom-block warning"><p class="custom-block-title">Sign Your Releases</p> <p>All releases must be made with a GPG signed tag. Do not create a tag without signing it.</p></div> <div class="language-bash extra-class"><pre class="language-bash"><code><span class="token function">git</span> tag -asm <span class="token string">&quot;v0.6.0&quot;</span>
<span class="token function">git</span> push origin v0.6.0
</code></pre></div><h3 id="update-the-release-on-github"><a href="#update-the-release-on-github" class="header-anchor">#</a> Update the Release on GitHub</h3> <p>Once you've created and pushed up the tag you need to then go to the GitHub releases, find the most recent tag, and create
a nice release from it. The title should be <code>v1.2.3 (Codename)</code>, and the content should be from the Changelog for that release.
All minor version releases should use the same codename as the major release version.</p> <h2 id="generate-signatures-hashes"><a href="#generate-signatures-hashes" class="header-anchor">#</a> Generate Signatures &amp; Hashes</h2> <p>Once you've created the release on GitHub, view it and select the option to download the <code>.tar.gz</code> archive of the release.
Once downloaded, rename it to <code>panel.tar.gz</code> or <code>daemon.tar.gz</code>.</p> <div class="language-bash extra-class"><pre class="language-bash"><code><span class="token function">mv</span> panel-v1.2.3.tar.gz panel.tar.gz
</code></pre></div><h3 id="create-checksum"><a href="#create-checksum" class="header-anchor">#</a> Create Checksum</h3> <p>Then, create the SHA 256 checksum and write it to a file which will be uploaded to the release on GitHub.</p> <div class="language-bash extra-class"><pre class="language-bash"><code>shasum -a <span class="token number">256</span> panel.tar.gz <span class="token operator">&gt;</span> checksum.txt
<span class="token comment"># Dump the output for easy pasting into the release</span>
<span class="token function">cat</span> checksum.txt
</code></pre></div><h3 id="gpg-sign-release"><a href="#gpg-sign-release" class="header-anchor">#</a> GPG Sign Release</h3> <p>Finally, create a GPG-signed file to verify the integrity of the release. This must be created using Pterodactyl's key,
so chances are that only Dane will be doing this part.</p> <div class="language-bash extra-class"><pre class="language-bash"><code>gpg --detach-sig --output panel.asc panel.tar.gz
</code></pre></div><h3 id="attach-to-release"><a href="#attach-to-release" class="header-anchor">#</a> Attach to Release</h3> <p>Finally, upload <code>panel.tar.gz</code>, <code>checksum.txt</code>, and <code>panel.asc</code> to the release as attachments. This will allow all of our
defined links to continue working. In addition, add a section to the release titled <code>#### SHA256 Checksum</code> with the content
of the checksum for people to verify with.</p> <h2 id="update-documentation"><a href="#update-documentation" class="header-anchor">#</a> Update Documentation</h2> <p>After the release is created and ready to go, update the relevant documentation to ensure it will be the version people
install or upgrade to. You should also make sure all of the documentation for installing or upgrading is squared away and
ready to go.</p> <h2 id="update-cdn"><a href="#update-cdn" class="header-anchor">#</a> Update CDN</h2> <p>Dane will need to update the CDN <code>releases.json</code> file to point to the most recent version of the Panel and Daemon so that
notifications show up on the Daemon and Panel encouraging people to update.</p> <h2 id="make-discord-announcement"><a href="#make-discord-announcement" class="header-anchor">#</a> Make Discord Announcement</h2> <p>The last step is to make an announcement on Discord letting <code>@everyone</code> know that a new release is available, and encouraging
them to update. Include relevant links to stem off the inevitable flood of &quot;how 2 update&quot; questions that will follow.</p> <h2 id="example-process"><a href="#example-process" class="header-anchor">#</a> Example Process</h2> <p>The entire process, command wise, will probably look something like below:</p> <div class="language-bash extra-class"><pre class="language-bash"><code><span class="token function">git</span> checkout -b release/v1.2.3
<span class="token comment"># make file edits</span>
<span class="token function">git</span> push -u origin release/v1.2.3
<span class="token function">git</span> tag -as v1.2.3 -m <span class="token string">&quot;v1.2.3&quot;</span>
<span class="token function">git</span> push origin v1.2.3
<span class="token comment"># edit release on GitHub, download files</span>
<span class="token function">mv</span> panel-1.2.3.tar.gz panel.tar.gz
shasum -a <span class="token number">256</span> panel.tar.gz <span class="token operator">&gt;</span> checksum.txt
<span class="token function">cat</span> checksum.txt
gpg --detach-sig --output panel.asc panel.tar.gz
<span class="token comment"># attach to release</span>
</code></pre></div></div> <div class="page-edit"><div class="edit-link"><a href="https://github.com/pterodactyl/documentation/edit/master/ops/publish_release.md" target="_blank" rel="noopener noreferrer">Help us improve this page.</a> <span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></div> <!----></div> <div class="page-nav"><p class="inner"></p> <div class="prev"><span>
<a href="/guides/mounts.html">Using Mounts</a></span></div> <div class="next"><!----></div></div> </div></div><div class="global-ui"></div></div>
<script src="/assets/js/app.590a4d0d.js" defer></script><script src="/assets/js/4.bff5ff58.js" defer></script><script src="/assets/js/1.79a56ae5.js" defer></script><script src="/assets/js/58.139108d1.js" defer></script>
</body>
</html>