From 018041d025deffe7626ad24f43ecfba1025283fa Mon Sep 17 00:00:00 2001 From: Alicia Sykes Date: Sat, 18 Sep 2021 21:36:20 +0100 Subject: [PATCH 1/8] :sparkles: Writes a cloud function to wrap the status-check endpoint --- services/serverless-functions/cloud-status-check.js | 12 ++++++++++++ 1 file changed, 12 insertions(+) create mode 100644 services/serverless-functions/cloud-status-check.js diff --git a/services/serverless-functions/cloud-status-check.js b/services/serverless-functions/cloud-status-check.js new file mode 100644 index 00000000..4959bc93 --- /dev/null +++ b/services/serverless-functions/cloud-status-check.js @@ -0,0 +1,12 @@ +/* A cloud function that wraps the status checking method, for use on Netlify */ +const statusCheck = require('../status-check'); + +exports.handler = (event, context, callback) => { + const paramStr = event.rawQuery; + statusCheck(paramStr, (results) => { + callback(null, { + statusCode: 200, + body: results, + }); + }); +}; From 4900bf320020b5be8f6943b9be33e0868657c7ac Mon Sep 17 00:00:00 2001 From: Alicia Sykes Date: Sat, 18 Sep 2021 21:36:46 +0100 Subject: [PATCH 2/8] :sparkles: Adds a cloud function for unsupported endpoints --- services/serverless-functions/not-supported.js | 8 ++++++++ 1 file changed, 8 insertions(+) create mode 100644 services/serverless-functions/not-supported.js diff --git a/services/serverless-functions/not-supported.js b/services/serverless-functions/not-supported.js new file mode 100644 index 00000000..255d5d94 --- /dev/null +++ b/services/serverless-functions/not-supported.js @@ -0,0 +1,8 @@ +/* A Netlify cloud function to return a message endpoints that are not available */ +exports.handler = async () => ({ + statusCode: 200, + body: JSON.stringify({ + success: false, + error: 'This action is not supported on Netlify', + }), +}); From 7e3f42d5c765649b19d24d7063a608ba2ba3468f Mon Sep 17 00:00:00 2001 From: Alicia Sykes Date: Sat, 18 Sep 2021 21:37:30 +0100 Subject: [PATCH 3/8] :wrench: Specify cloud functions path for Netlify --- netlify.toml | 1 + 1 file changed, 1 insertion(+) diff --git a/netlify.toml b/netlify.toml index a0bf50ec..6601257e 100644 --- a/netlify.toml +++ b/netlify.toml @@ -7,6 +7,7 @@ base = "/" command = "yarn build" publish = "dist" + functions = "./services/serverless-functions" # Site info, used for the 1-Click deploy page [template.environment] From c2f99d6d7f2b4368ac5913ed2b08dc203da0df00 Mon Sep 17 00:00:00 2001 From: Alicia Sykes Date: Sat, 18 Sep 2021 21:54:38 +0100 Subject: [PATCH 4/8] :wrench: Specify edge handlers for redirect to serverless functions --- netlify.toml | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/netlify.toml b/netlify.toml index 6601257e..fd0b562d 100644 --- a/netlify.toml +++ b/netlify.toml @@ -15,7 +15,18 @@ STATUSKIT_COMPANY_LOGO = "https://raw.githubusercontent.com/Lissy93/dashy/master/docs/assets/logo.png" STATUSKIT_SUPPORT_CONTACT_LINK = "https://dashy.to" STATUSKIT_RESOURCES_LINK = "https://github.com/Lissy93/dashy/tree/master/docs" - + +# Specify handlers to redirect to serverless functions instead of Node API endpoints +[[edge_handlers]] + path = "/status-check" + handler = "cloud-status-check" +[[edge_handlers]] + path = "/config-manager/save" + handler = "not-supported" +[[edge_handlers]] + path = "/config-manager/rebuild" + handler = "not-supported" + # Set any security headers here [[headers]] for = "/*" From 96d4deefa1deba16f3a6a27a86a2cc5ac402fde1 Mon Sep 17 00:00:00 2001 From: Alicia Sykes Date: Sun, 19 Sep 2021 13:36:12 +0100 Subject: [PATCH 5/8] :wrench: Redirect node endpoints to cloud functions, for Netlify --- netlify.toml | 29 +++++++++++++++-------------- 1 file changed, 15 insertions(+), 14 deletions(-) diff --git a/netlify.toml b/netlify.toml index fd0b562d..79c7438a 100644 --- a/netlify.toml +++ b/netlify.toml @@ -7,29 +7,30 @@ base = "/" command = "yarn build" publish = "dist" - functions = "./services/serverless-functions" + functions = "services/serverless-functions" # Site info, used for the 1-Click deploy page [template.environment] STATUSKIT_PAGE_TITLE = "Dashy" STATUSKIT_COMPANY_LOGO = "https://raw.githubusercontent.com/Lissy93/dashy/master/docs/assets/logo.png" - STATUSKIT_SUPPORT_CONTACT_LINK = "https://dashy.to" - STATUSKIT_RESOURCES_LINK = "https://github.com/Lissy93/dashy/tree/master/docs" + STATUSKIT_SUPPORT_CONTACT_LINK = "https://github.com/lissy93/dashy" + STATUSKIT_RESOURCES_LINK = "https://dashy.to/docs" -# Specify handlers to redirect to serverless functions instead of Node API endpoints -[[edge_handlers]] - path = "/status-check" - handler = "cloud-status-check" -[[edge_handlers]] - path = "/config-manager/save" - handler = "not-supported" -[[edge_handlers]] - path = "/config-manager/rebuild" - handler = "not-supported" +# Redirect the Node endpoints to serverless functions +[[redirects]] + from = "/status-check" + to = "/.netlify/functions/cloud-status-check" + status = 301 + force = true +[[redirects]] + from = "/config-manager/*" + to = "/.netlify/functions/not-supported" + status = 301 + force = true # Set any security headers here [[headers]] for = "/*" [headers.values] # Uncomment to enable Netlify user control. You must have a paid plan. - # Basic-Auth = "someuser:somepassword anotheruser:anotherpassword" \ No newline at end of file + # Basic-Auth = "someuser:somepassword anotheruser:anotherpassword" From 5231bfde3bff8509be6b5943f1894d8d44dd93ed Mon Sep 17 00:00:00 2001 From: Alicia Sykes Date: Sun, 19 Sep 2021 14:18:44 +0100 Subject: [PATCH 6/8] :memo: Adds Netlify functions tutorial, and documens release workflow --- docs/development-guides.md | 34 ++++++++++++++++++++++++++++++++++ docs/release-workflow.md | 24 ++++++++++++++++++++++++ 2 files changed, 58 insertions(+) diff --git a/docs/development-guides.md b/docs/development-guides.md index bdde1b9e..5547654a 100644 --- a/docs/development-guides.md +++ b/docs/development-guides.md @@ -141,6 +141,40 @@ Running `yarn upgrade` will updated all dependencies based on the ranges specifi --- +## Developing Netlify Cloud Functions + +When Dashy is deployed to Netlify, it is effectively running as a static app, and therefore the server-side code for the Node.js endpoints is not available. However Netlify now supports serverless cloud lambda functions, which can be used to replace most functionality. + +#### 1. Run Netlify Dev Server + +First off, install the Netlify CLI: `npm install netlify-cli -g` +Then, from within the root of Dashy's directory, start the server, by running: `netlify dev` + +#### 2. Create a lambda function + +This should be saved it in the [`./services/serverless-functions`](https://github.com/Lissy93/dashy/tree/master/services/serverless-functions) directory + +```javascript +exports.handler = async () => ({ + statusCode: 200, + body: 'Return some data here...', +}); +``` + +#### 3. Redirect the Node endpoint to the function + +In the [`netlify.toml`](https://github.com/Lissy93/dashy/blob/FEATURE/serverless-functions/netlify.toml) file, add a 301 redirect, with the path to the original Node.js endpoint, and the name of your cloud function + +```toml +[[redirects]] + from = "/status-check" + to = "/.netlify/functions/cloud-status-check" + status = 301 + force = true +``` + +--- + ## Hiding Page Furniture on Certain Routes For some pages (such as the login page, the minimal start page, etc) the basic page furniture, (like header, footer, nav, etc) is not needed. This section explains how you can hide furniture on a new view (step 1), or add a component that should be hidden on certain views (step 2). diff --git a/docs/release-workflow.md b/docs/release-workflow.md index 82995bea..b25c5019 100644 --- a/docs/release-workflow.md +++ b/docs/release-workflow.md @@ -15,6 +15,30 @@ For a full breakdown of each change, you can view the [Changelog](https://github --- +## Deployment Process + +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. + +When a PR is opened: +- The feature branch is built, and deployed as a Netlify instance. This can be accessed at: `https://deploy-preview-[pr-number]--dashy-dev.netlify.app`, and this URL as well as a link to the build logs are added as a comment on the PR by Netlify bot +- Depending on what files were modified, the bot may also add a comment to remind the author of useful info +- A series of checks will run on the new code, using GH Actions, and prevent merging if they fail. This includes: linting, testing, code quality and complexity checking, security scanning and a spell check +- If a new dependency was added, liss-bot will comment with a summary of those changes, as well as the cost of the module, version, and any security concerns. If the bundle size has increased, this will also be added as a comment + +After the PR is merged: +- The app is build, and deployed to: https://dev.dashy.to +- A new tag in GitHub is created, using the apps version number (from the package.json) +- The Docker container is built, and published under the `:latest` tag on DockerHub and GHCR + +When a new major version is released: +- A new GitHub release is created and published, under new versions tag, with info from the changelog +- The container is built and published under a new tag will be created on DockerHub, called `:release-[version]` +- An announcement is opened in GitHub discussions, outlining the main changes, where users can comment and ask questions + +[![Netlify Status](https://api.netlify.com/api/v1/badges/3a0216c3-1ed0-40f5-ad90-ff68b1c96c09/deploy-status)](https://app.netlify.com/sites/dashy-dev/deploys) + +--- + ## Automated Workflows Dashy makes heavy use of [GitHub Actions](https://github.com/features/actions) 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. From 5a5d4e3e55c93097d4d4ff601437db6a56bd94ba Mon Sep 17 00:00:00 2001 From: Alicia Sykes Date: Sun, 19 Sep 2021 14:19:22 +0100 Subject: [PATCH 7/8] :bookmark: Bumps to V 1.8.2 and updates changelog --- .github/CHANGELOG.md | 4 ++++ package.json | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/.github/CHANGELOG.md b/.github/CHANGELOG.md index 9f897635..899b7da7 100644 --- a/.github/CHANGELOG.md +++ b/.github/CHANGELOG.md @@ -1,5 +1,9 @@ # Changelog +## ✨ 1.8.2 - Serverless Functions for Netlify Instances [PR #235](https://github.com/Lissy93/dashy/pull/235) +- Previously when Dashy was deployed as a static site to Netlify, it was not possible to use several features, which required server-side code +- This PR adds serverless cloud functions to provide most of this functionality + ## 🩹 1.8.1 - Additional Languages, Bug Fix, and more [PR #234](https://github.com/Lissy93/dashy/pull/234) - Merges 5 additional languages - Adds RickyCZ's dashboard to showcase diff --git a/package.json b/package.json index 0415ed1f..8ceda392 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "Dashy", - "version": "1.8.1", + "version": "1.8.2", "license": "MIT", "main": "server", "scripts": { From cd036785ba6d5c5c3c1f4cadbc9627053856e1cc Mon Sep 17 00:00:00 2001 From: Alicia Sykes Date: Sun, 19 Sep 2021 14:24:04 +0100 Subject: [PATCH 8/8] :memo: Documents the deployment process --- docs/release-workflow.md | 119 ++++++++++++++++++++------------------- 1 file changed, 61 insertions(+), 58 deletions(-) diff --git a/docs/release-workflow.md b/docs/release-workflow.md index b25c5019..99401c5e 100644 --- a/docs/release-workflow.md +++ b/docs/release-workflow.md @@ -2,14 +2,15 @@ # Releases and Workflows - [Release Schedule](#release-schedule) -- [Automated Workflows](#automated-workflows) +- [Deployment Process](#deployment-process) - [Git Strategy](#git-strategy) +- [Automated Workflows](#automated-workflows) ## Release Schedule We're using [Semantic Versioning](https://semver.org/), 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 [package.json](https://github.com/Lissy93/dashy/blob/master/package.json#L3) file. -Typically there is a new major release every 2 weeks, usually on Sunday, and you can view these under the [Releases Page](https://github.com/Lissy93/dashy/releases). Each release will create a new [tag on GitHub](https://github.com/Lissy93/dashy/tags), and each major release will also result in the creation of a new [tag on DockerHub](https://hub.docker.com/r/lissy93/dashy/tags), so that you can fix your container to a certain version. +Typically there is a new major release every 2 weeks, usually on Sunday, and you can view these under the [Releases Page](https://github.com/Lissy93/dashy/releases). Each new version will also have a corresponding [tag on GitHub](https://github.com/Lissy93/dashy/tags), and each major release will also result in the creation of a new [tag on DockerHub](https://hub.docker.com/r/lissy93/dashy/tags), so that you can fix your container to a certain version. For a full breakdown of each change, you can view the [Changelog](https://github.com/Lissy93/dashy/blob/master/.github/CHANGELOG.md). 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. @@ -39,61 +40,6 @@ When a new major version is released: --- -## Automated Workflows - -Dashy makes heavy use of [GitHub Actions](https://github.com/features/actions) 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. - - -### Code Processing - -Action | Description ---- | --- -**Code Linter**
[![code-linter.yml](https://github.com/Lissy93/dashy/actions/workflows/code-linter.yml/badge.svg)](https://github.com/Lissy93/dashy/actions/workflows/code-linter.yml) | After a pull request is created, all new code changes will be linted, and the CI will fail with a helpful message if the code has any formatting inconsistencies -**Code Spell Check**
[![code-spell-check.yml](https://github.com/Lissy93/dashy/actions/workflows/code-spell-check.yml/badge.svg)](https://github.com/Lissy93/dashy/actions/workflows/code-spell-check.yml) | After a PR submitted, all auto-fixable spelling errors will be detected, then Liss-Bot will create a separate PR to propose the fixes -**Dependency Update Summary**
[![dependency-updates-summary.yml](https://github.com/Lissy93/dashy/actions/workflows/dependency-updates-summary.yml/badge.svg)](https://github.com/Lissy93/dashy/actions/workflows/dependency-updates-summary.yml) | After a PR is submitted, if any of the dependencies are modified, then Liss-Bot will add a comment, explaining which packages have been added, removed, updated or downgraded, as well as other helpful info -**Get Size**
[![get-size.yml](https://github.com/Lissy93/dashy/actions/workflows/get-size.yml/badge.svg)](https://github.com/Lissy93/dashy/actions/workflows/get-size.yml) | Adds comment to PR if the size of the built + bundled application has changed compared to the previous version -**Security Scan**
[![security-scanning.yml](https://github.com/Lissy93/dashy/actions/workflows/security-scanning.yml/badge.svg)](https://github.com/Lissy93/dashy/actions/workflows/security-scanning.yml) | Uses Snyk to scan the code and dependencies after a PR. Will add a comment and cause the build to fail if a new vulnerability or potential issue is present - -### Releases - -Action | Description ---- | --- -**Create Tag**
[![auto-tag-pr.yml](https://github.com/Lissy93/dashy/actions/workflows/auto-tag-pr.yml/badge.svg)](https://github.com/Lissy93/dashy/actions/workflows/auto-tag-pr.yml) | Whenever the version indicated in package.json is updates, a new GitHub tag will be created for that point in time -**Build App**
[![build-app.yml](https://github.com/Lissy93/dashy/actions/workflows/build-app.yml/badge.svg)](https://github.com/Lissy93/dashy/actions/workflows/build-app.yml) | After changes are merged into the master branch, the app will be build, with output pushed to the `dev-demo` branch -**Cache Artifacts**
[![cache-artifacts.yml](https://github.com/Lissy93/dashy/actions/workflows/cache-artifacts.yml/badge.svg)](https://github.com/Lissy93/dashy/actions/workflows/cache-artifacts.yml) | After build, returned files will be cached for future actions for that commit -**Docker Publish**
[![docker-publish.yml](https://github.com/Lissy93/dashy/actions/workflows/docker-publish.yml/badge.svg)](https://github.com/Lissy93/dashy/actions/workflows/docker-publish.yml) | After PR is merged, the multi-architecture Docker container will be built, and then published to GHCR - -### Issue Management - -Action | Description ---- | --- -**Close Incomplete Issues**
[![close-incomplete-issues.yml](https://github.com/Lissy93/dashy/actions/workflows/close-incomplete-issues.yml/badge.svg)](https://github.com/Lissy93/dashy/actions/workflows/close-incomplete-issues.yml) | Issues which do not match any of the issue templates will be closed, and a comment posted explaining why -**Close Stale Issues**
[![close-stale-issues.yml](https://github.com/Lissy93/dashy/actions/workflows/close-stale-issues.yml/badge.svg)](https://github.com/Lissy93/dashy/actions/workflows/close-stale-issues.yml) | Issues which have not been updated for 6 weeks will have a comment posted to them. If the author does not reply within the next week, then the issue will be marked as stale and closed. The original author may still reopen the issue at any time -**Close Potential Spam Issues**
[![issue-spam-control.yml](https://github.com/Lissy93/dashy/actions/workflows/issue-spam-control.yml/badge.svg)](https://github.com/Lissy93/dashy/actions/workflows/issue-spam-control.yml) | Auto-closes issues, and adds a comment if it was submitted by a user who hasn't yet interacted with the repo, is new to GitHub and has not starred the repository. The comment will advise them to check their issue is complete, and then allow them to reopen it -**Issue Translator**
[![issue-translator.yml](https://github.com/Lissy93/dashy/actions/workflows/issue-translator.yml/badge.svg)](https://github.com/Lissy93/dashy/actions/workflows/issue-translator.yml) | Auto-translates any comments and issues that were written in any language other than English, and posts the translation as a comment below -**Label Sponsors**
[![label-sponsors.yml](https://github.com/Lissy93/dashy/actions/workflows/label-sponsors.yml/badge.svg)](https://github.com/Lissy93/dashy/actions/workflows/label-sponsors.yml) | Adds a special label to any issues or pull requests raised by users who are sponsoring the project via GitHub, so that they can get priority support -**LGTM Comment**
[![lgtm-comment.yml](https://github.com/Lissy93/dashy/actions/workflows/lgtm-comment.yml/badge.svg)](https://github.com/Lissy93/dashy/actions/workflows/lgtm-comment.yml) | When a PR review contains the words LGTM (looks good to me), the Liss-Bot will reply with a random celebratory or thumbs up GIF, just as a bit of fun -**Mind your Language**
[![mind-your-language.yml](https://github.com/Lissy93/dashy/actions/workflows/mind-your-language.yml/badge.svg)](https://github.com/Lissy93/dashy/actions/workflows/mind-your-language.yml) | Replies to any comment (on issue or PR) that contains profanities, offensive or inappropriate language with a polite note reminding the user of the code of conduct -**Release Notifier**
[![release-commenter.yml](https://github.com/Lissy93/dashy/actions/workflows/release-commenter.yml/badge.svg)](https://github.com/Lissy93/dashy/actions/workflows/release-commenter.yml) | Once a release has been published which fixes an issue, a comment will be added to the relevant issues informing the user who raised it that it was fixed in the current release -**Update Issue after Merge**
[![update-issue-after-pr.yml](https://github.com/Lissy93/dashy/actions/workflows/update-issue-after-pr.yml/badge.svg)](https://github.com/Lissy93/dashy/actions/workflows/update-issue-after-pr.yml) | After a PR which fixes an issue is merged, Liss-Bot will add a comment to said issue based on the git commit message -**Auto Add Comment Based on Tag**
[![add-comment-from-tag.yml](https://github.com/Lissy93/dashy/actions/workflows/add-comment-from-tag.yml/badge.svg)](https://github.com/Lissy93/dashy/actions/workflows/add-comment-from-tag.yml) | Will add comment with useful info to certain issues, based on the tag applied - -### PR Management - -Action | Description ---- | --- -**PR Commenter**
[![pr-commenter.yml](https://github.com/Lissy93/dashy/actions/workflows/pr-commenter.yml/badge.svg)](https://github.com/Lissy93/dashy/actions/workflows/pr-commenter.yml) | Adds comment with helpful info to pull requests, based on which files have been changes -**Issue from Todo Code**
[![raise-issue-from-todo.yml](https://github.com/Lissy93/dashy/actions/workflows/raise-issue-from-todo.yml/badge.svg)](https://github.com/Lissy93/dashy/actions/workflows/raise-issue-from-todo.yml) | When a `todo` note is found in the code after a PR, then Liss-Bot will automatically raise an issue, so that the todo can be addressed/ implemented. The issue will be closed once the todo has been implemented or removed - -### Documentation & Reports - -Action | Description ---- | --- -**Generate Credits**
[![generate-credits.yml](https://github.com/Lissy93/dashy/actions/workflows/generate-credits.yml/badge.svg)](https://github.com/Lissy93/dashy/actions/workflows/generate-credits.yml) | Generates a report, including contributors, collaborators, sponsors, bots and helpful users. Will then insert a markdown table with thanks to these GitHub users and links to their profiles into the Credits page, as well as a summary of sponsors and top contributors into the main readme -**Wiki Sync**
[![wiki-sync.yml](https://github.com/Lissy93/dashy/actions/workflows/wiki-sync.yml/badge.svg)](https://github.com/Lissy93/dashy/actions/workflows/wiki-sync.yml) | Generates and publishes the repositories wiki page using the markdown files within the docs directory - ---- - ## Git Strategy ### Git Flow @@ -152,4 +98,61 @@ When you submit your PR, include the required info, by filling out the PR templa - The issue, ticket or discussion number (if applicable) - For UI relate updates include a screenshot - If any dependencies were added, explain why it was needed, state the cost associated, and confirm it does not introduce any security issues -- Finally, check the checkboxes, to confirm that the standards are met, and hit submit! \ No newline at end of file +- Finally, check the checkboxes, to confirm that the standards are met, and hit submit! + +--- + +## Automated Workflows + +Dashy makes heavy use of [GitHub Actions](https://github.com/features/actions) 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. + + +### Code Processing + +Action | Description +--- | --- +**Code Linter**
[![code-linter.yml](https://github.com/Lissy93/dashy/actions/workflows/code-linter.yml/badge.svg)](https://github.com/Lissy93/dashy/actions/workflows/code-linter.yml) | After a pull request is created, all new code changes will be linted, and the CI will fail with a helpful message if the code has any formatting inconsistencies +**Code Spell Check**
[![code-spell-check.yml](https://github.com/Lissy93/dashy/actions/workflows/code-spell-check.yml/badge.svg)](https://github.com/Lissy93/dashy/actions/workflows/code-spell-check.yml) | After a PR submitted, all auto-fixable spelling errors will be detected, then Liss-Bot will create a separate PR to propose the fixes +**Dependency Update Summary**
[![dependency-updates-summary.yml](https://github.com/Lissy93/dashy/actions/workflows/dependency-updates-summary.yml/badge.svg)](https://github.com/Lissy93/dashy/actions/workflows/dependency-updates-summary.yml) | After a PR is submitted, if any of the dependencies are modified, then Liss-Bot will add a comment, explaining which packages have been added, removed, updated or downgraded, as well as other helpful info +**Get Size**
[![get-size.yml](https://github.com/Lissy93/dashy/actions/workflows/get-size.yml/badge.svg)](https://github.com/Lissy93/dashy/actions/workflows/get-size.yml) | Adds comment to PR if the size of the built + bundled application has changed compared to the previous version +**Security Scan**
[![security-scanning.yml](https://github.com/Lissy93/dashy/actions/workflows/security-scanning.yml/badge.svg)](https://github.com/Lissy93/dashy/actions/workflows/security-scanning.yml) | Uses Snyk to scan the code and dependencies after a PR. Will add a comment and cause the build to fail if a new vulnerability or potential issue is present + +### Releases + +Action | Description +--- | --- +**Create Tag**
[![auto-tag-pr.yml](https://github.com/Lissy93/dashy/actions/workflows/auto-tag-pr.yml/badge.svg)](https://github.com/Lissy93/dashy/actions/workflows/auto-tag-pr.yml) | Whenever the version indicated in package.json is updates, a new GitHub tag will be created for that point in time +**Build App**
[![build-app.yml](https://github.com/Lissy93/dashy/actions/workflows/build-app.yml/badge.svg)](https://github.com/Lissy93/dashy/actions/workflows/build-app.yml) | After changes are merged into the master branch, the app will be build, with output pushed to the `dev-demo` branch +**Cache Artifacts**
[![cache-artifacts.yml](https://github.com/Lissy93/dashy/actions/workflows/cache-artifacts.yml/badge.svg)](https://github.com/Lissy93/dashy/actions/workflows/cache-artifacts.yml) | After build, returned files will be cached for future actions for that commit +**Docker Publish**
[![docker-publish.yml](https://github.com/Lissy93/dashy/actions/workflows/docker-publish.yml/badge.svg)](https://github.com/Lissy93/dashy/actions/workflows/docker-publish.yml) | After PR is merged, the multi-architecture Docker container will be built, and then published to GHCR + +### Issue Management + +Action | Description +--- | --- +**Close Incomplete Issues**
[![close-incomplete-issues.yml](https://github.com/Lissy93/dashy/actions/workflows/close-incomplete-issues.yml/badge.svg)](https://github.com/Lissy93/dashy/actions/workflows/close-incomplete-issues.yml) | Issues which do not match any of the issue templates will be closed, and a comment posted explaining why +**Close Stale Issues**
[![close-stale-issues.yml](https://github.com/Lissy93/dashy/actions/workflows/close-stale-issues.yml/badge.svg)](https://github.com/Lissy93/dashy/actions/workflows/close-stale-issues.yml) | Issues which have not been updated for 6 weeks will have a comment posted to them. If the author does not reply within the next week, then the issue will be marked as stale and closed. The original author may still reopen the issue at any time +**Close Potential Spam Issues**
[![issue-spam-control.yml](https://github.com/Lissy93/dashy/actions/workflows/issue-spam-control.yml/badge.svg)](https://github.com/Lissy93/dashy/actions/workflows/issue-spam-control.yml) | Auto-closes issues, and adds a comment if it was submitted by a user who hasn't yet interacted with the repo, is new to GitHub and has not starred the repository. The comment will advise them to check their issue is complete, and then allow them to reopen it +**Issue Translator**
[![issue-translator.yml](https://github.com/Lissy93/dashy/actions/workflows/issue-translator.yml/badge.svg)](https://github.com/Lissy93/dashy/actions/workflows/issue-translator.yml) | Auto-translates any comments and issues that were written in any language other than English, and posts the translation as a comment below +**Label Sponsors**
[![label-sponsors.yml](https://github.com/Lissy93/dashy/actions/workflows/label-sponsors.yml/badge.svg)](https://github.com/Lissy93/dashy/actions/workflows/label-sponsors.yml) | Adds a special label to any issues or pull requests raised by users who are sponsoring the project via GitHub, so that they can get priority support +**LGTM Comment**
[![lgtm-comment.yml](https://github.com/Lissy93/dashy/actions/workflows/lgtm-comment.yml/badge.svg)](https://github.com/Lissy93/dashy/actions/workflows/lgtm-comment.yml) | When a PR review contains the words LGTM (looks good to me), the Liss-Bot will reply with a random celebratory or thumbs up GIF, just as a bit of fun +**Mind your Language**
[![mind-your-language.yml](https://github.com/Lissy93/dashy/actions/workflows/mind-your-language.yml/badge.svg)](https://github.com/Lissy93/dashy/actions/workflows/mind-your-language.yml) | Replies to any comment (on issue or PR) that contains profanities, offensive or inappropriate language with a polite note reminding the user of the code of conduct +**Release Notifier**
[![release-commenter.yml](https://github.com/Lissy93/dashy/actions/workflows/release-commenter.yml/badge.svg)](https://github.com/Lissy93/dashy/actions/workflows/release-commenter.yml) | Once a release has been published which fixes an issue, a comment will be added to the relevant issues informing the user who raised it that it was fixed in the current release +**Update Issue after Merge**
[![update-issue-after-pr.yml](https://github.com/Lissy93/dashy/actions/workflows/update-issue-after-pr.yml/badge.svg)](https://github.com/Lissy93/dashy/actions/workflows/update-issue-after-pr.yml) | After a PR which fixes an issue is merged, Liss-Bot will add a comment to said issue based on the git commit message +**Auto Add Comment Based on Tag**
[![add-comment-from-tag.yml](https://github.com/Lissy93/dashy/actions/workflows/add-comment-from-tag.yml/badge.svg)](https://github.com/Lissy93/dashy/actions/workflows/add-comment-from-tag.yml) | Will add comment with useful info to certain issues, based on the tag applied + +### PR Management + +Action | Description +--- | --- +**PR Commenter**
[![pr-commenter.yml](https://github.com/Lissy93/dashy/actions/workflows/pr-commenter.yml/badge.svg)](https://github.com/Lissy93/dashy/actions/workflows/pr-commenter.yml) | Adds comment with helpful info to pull requests, based on which files have been changes +**Issue from Todo Code**
[![raise-issue-from-todo.yml](https://github.com/Lissy93/dashy/actions/workflows/raise-issue-from-todo.yml/badge.svg)](https://github.com/Lissy93/dashy/actions/workflows/raise-issue-from-todo.yml) | When a `todo` note is found in the code after a PR, then Liss-Bot will automatically raise an issue, so that the todo can be addressed/ implemented. The issue will be closed once the todo has been implemented or removed + +### Documentation & Reports + +Action | Description +--- | --- +**Generate Credits**
[![generate-credits.yml](https://github.com/Lissy93/dashy/actions/workflows/generate-credits.yml/badge.svg)](https://github.com/Lissy93/dashy/actions/workflows/generate-credits.yml) | Generates a report, including contributors, collaborators, sponsors, bots and helpful users. Will then insert a markdown table with thanks to these GitHub users and links to their profiles into the Credits page, as well as a summary of sponsors and top contributors into the main readme +**Wiki Sync**
[![wiki-sync.yml](https://github.com/Lissy93/dashy/actions/workflows/wiki-sync.yml/badge.svg)](https://github.com/Lissy93/dashy/actions/workflows/wiki-sync.yml) | Generates and publishes the repositories wiki page using the markdown files within the docs directory + +--- \ No newline at end of file