diff --git a/.github/workflows/github-pages.yml b/.github/workflows/github-pages.yml index 01c4e2b2..6b8705bf 100644 --- a/.github/workflows/github-pages.yml +++ b/.github/workflows/github-pages.yml @@ -1,19 +1,32 @@ -name: GitHub pages -on: push +name: GitHub Pages + +on: + push: + branches: + - master + pull_request: + branches: + - master + jobs: - build-and-deploy: - runs-on: ubuntu-latest + deploy: + name: Deploy + runs-on: ubuntu-20.04 + steps: - - name: Checkout - uses: actions/checkout@master - - name: Install dependencies - run: yarn - - name: Build - run: yarn run build - - name: Deploy - if: github.ref == 'refs/heads/master' - uses: peaceiris/actions-gh-pages@v3 - with: - github_token: ${{ secrets.GITHUB_TOKEN }} - publish_dir: ./.vuepress/dist - cname: pterodactyl.io + - name: Checkout + uses: actions/checkout@v3 + + - name: Install dependencies + run: yarn install --frozen-lockfile + + - name: Build + run: yarn run build + + - name: Deploy + if: github.ref == 'refs/heads/master' + uses: peaceiris/actions-gh-pages@v3 + with: + github_token: ${{ secrets.GITHUB_TOKEN }} + publish_dir: ./.vuepress/dist + cname: pterodactyl.io diff --git a/.snippets/gpg.txt b/.snippets/gpg.txt deleted file mode 100644 index ef22ada5..00000000 --- a/.snippets/gpg.txt +++ /dev/null @@ -1,50 +0,0 @@ ------BEGIN PGP PUBLIC KEY BLOCK----- -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 -gkSI5o2kam0QGYUhqg== -=rDb0 ------END PGP PUBLIC KEY BLOCK----- diff --git a/.vuepress/config.js b/.vuepress/config.js index 08b8b09c..2878fb67 100644 --- a/.vuepress/config.js +++ b/.vuepress/config.js @@ -186,13 +186,6 @@ module.exports = { '/guides/mounts.md', ], }, - { - title: 'Development & Ops', - collapsable: true, - children: [ - '/ops/publish_release.md', - ], - }, ], }, }, diff --git a/.vuepress/enhanceApp.js b/.vuepress/enhanceApp.js index d65ee682..2cf358aa 100644 --- a/.vuepress/enhanceApp.js +++ b/.vuepress/enhanceApp.js @@ -38,7 +38,8 @@ function findVersionedPaths(paths) { // https://stackoverflow.com/a/29855282/4430124 function pathJoin(...parts) { - var separator = '/'; - var replace = new RegExp(separator + '{1,}', 'g'); + const separator = '/'; + const replace = new RegExp(separator + '{1,}', 'g'); + return parts.join(separator).replace(replace, separator); } diff --git a/ops/publish_release.md b/ops/publish_release.md deleted file mode 100644 index dda24e94..00000000 --- a/ops/publish_release.md +++ /dev/null @@ -1,108 +0,0 @@ -# Publishing a Release - -::: tip -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. -::: - -[[toc]] - -## Pick a Codename -If this is going to be a major version release `0.X` or `1.X` (not `0.0.X`), 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. - -## Create the Release Branch -Releases should be created as their own branch on GitHub, following the GitFlow model. This means you'll need to create -a `release/vX.X.X` branch. Once the branch is created you need to update the version number for the software. For the Panel -this requires editing `config/app.php` and setting the specific `APP_VERSION` _without_ a preceding `v`. For the Daemon, -you need to edit `package.json` and set the `version` field, again _without_ a preceding `v`. - -Once you've created the branch and update the relevant file publish the branch to GitHub to begin the next steps. - -## Tag a Release -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 `v0.6.0` on the `release/v0.6.0` branch and sign it using your -GPG key. - -::: warning Sign Your Releases -All releases must be made with a GPG signed tag. Do not create a tag without signing it. -::: - -``` bash -git tag -asm "v0.6.0" -git push origin v0.6.0 -``` - -### Update the Release on GitHub -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 `v1.2.3 (Codename)`, 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. - -## Generate Signatures & Hashes -Once you've created the release on GitHub, view it and select the option to download the `.tar.gz` archive of the release. -Once downloaded, rename it to `panel.tar.gz` or `daemon.tar.gz`. - -``` bash -mv panel-v1.2.3.tar.gz panel.tar.gz -``` - -### Create Checksum -Then, create the SHA 256 checksum and write it to a file which will be uploaded to the release on GitHub. - -``` bash -shasum -a 256 panel.tar.gz > checksum.txt - -# Dump the output for easy pasting into the release -cat checksum.txt -``` - -### GPG Sign Release -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. - -``` bash -gpg --detach-sig --output panel.asc panel.tar.gz -``` - -### Attach to Release -Finally, upload `panel.tar.gz`, `checksum.txt`, and `panel.asc` 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 `#### SHA256 Checksum` with the content -of the checksum for people to verify with. - -## Update Documentation -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. - -## Update CDN -Dane will need to update the CDN `releases.json` 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. - -## Make Discord Announcement -The last step is to make an announcement on Discord letting `@everyone` know that a new release is available, and encouraging -them to update. Include relevant links to stem off the inevitable flood of "how 2 update" questions that will follow. - -## Example Process -The entire process, command wise, will probably look something like below: - -``` bash -git checkout -b release/v1.2.3 - -# make file edits -git push -u origin release/v1.2.3 - -git tag -as v1.2.3 -m "v1.2.3" -git push origin v1.2.3 - -# edit release on GitHub, download files - -mv panel-1.2.3.tar.gz panel.tar.gz -shasum -a 256 panel.tar.gz > checksum.txt -cat checksum.txt - -gpg --detach-sig --output panel.asc panel.tar.gz - -# attach to release -``` diff --git a/project/about.md b/project/about.md index 4250b5ed..ad6e0a86 100644 --- a/project/about.md +++ b/project/about.md @@ -5,7 +5,7 @@ ## Core Project Team | Name | Discord Name | Primary Role | -| --------------------------------------------- | -------------------- | ----------------------------------- | +|-----------------------------------------------|----------------------|-------------------------------------| | [Dane Everitt](https://daneeveritt.com/) | `Tactical Fish#8008` | Founder & Former Project Maintainer | | [Matthew Penner](https://matthewp.io/) | `matthewp#0001` | Project Maintainer | | Stepan Fedotov | `Trixter#0001` | WISP & WHMCS Module Maintainer | @@ -25,7 +25,7 @@ members can be found in our Discord server and are distinguished with a yellow u The following companies help to fund Pterodactyl's development. [Interested in becoming a sponsor?](https://github.com/sponsors/matthewpi) | Company | About | -| --------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +|-----------------------------------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| | [**WISP**](https://wisp.gg) | Extra features. | | [**Fragnet**](https://fragnet.net) | Providing low latency, high-end game hosting solutions to gamers, game studios and eSports platforms. | | [**RocketNode**](https://rocketnode.com/) | Innovative game server hosting combined with a straightforward control panel, affordable prices, and Rocket-Fast support. | @@ -42,12 +42,3 @@ The following companies help to fund Pterodactyl's development. [Interested in b Pterodactyl® Copyright © 2015 - 2022 Dane Everitt and contributors. Code released under the [MIT License](https://github.com/pterodactyl/panel/blob/develop/LICENSE.md). - -## GPG Signature - -Starting with Panel `v0.4.0` all releases are signed with the GPG key below. All releases include a detached key as -well to verify your download against. - -Releases also include a SHA256 checksum. - -<<< @/.snippets/gpg.txt