Add initial GitHub Action
This commit is contained in:
@@ -0,0 +1 @@
|
|||||||
|
* @frenck
|
||||||
@@ -0,0 +1,4 @@
|
|||||||
|
---
|
||||||
|
github: frenck
|
||||||
|
patreon: frenck
|
||||||
|
custom: https://frenck.dev/donate/
|
||||||
@@ -0,0 +1,8 @@
|
|||||||
|
---
|
||||||
|
version: 2
|
||||||
|
updates:
|
||||||
|
- package-ecosystem: "github-actions"
|
||||||
|
directory: "/"
|
||||||
|
schedule:
|
||||||
|
interval: daily
|
||||||
|
time: "06:00"
|
||||||
@@ -0,0 +1,87 @@
|
|||||||
|
---
|
||||||
|
- name: "breaking-change"
|
||||||
|
color: ee0701
|
||||||
|
description: "A breaking change for existing users."
|
||||||
|
- name: "bugfix"
|
||||||
|
color: ee0701
|
||||||
|
description:
|
||||||
|
"Inconsistencies or issues which will cause a problem for users or
|
||||||
|
implementors."
|
||||||
|
- name: "documentation"
|
||||||
|
color: 0052cc
|
||||||
|
description: "Solely about the documentation of the project."
|
||||||
|
- name: "enhancement"
|
||||||
|
color: 1d76db
|
||||||
|
description: "Enhancement of the code, not introducing new features."
|
||||||
|
- name: "refactor"
|
||||||
|
color: 1d76db
|
||||||
|
description: "Improvement of existing code, not introducing new features."
|
||||||
|
- name: "performance"
|
||||||
|
color: 1d76db
|
||||||
|
description: "Improving performance, not introducing new features."
|
||||||
|
- name: "new-feature"
|
||||||
|
color: 0e8a16
|
||||||
|
description: "New features or options."
|
||||||
|
- name: "maintenance"
|
||||||
|
color: 2af79e
|
||||||
|
description: "Generic maintenance tasks."
|
||||||
|
- name: "chore"
|
||||||
|
color: 2af79e
|
||||||
|
description: "Generic chore."
|
||||||
|
- name: "ci"
|
||||||
|
color: 1d76db
|
||||||
|
description: "Work that improves the continue integration."
|
||||||
|
|
||||||
|
- name: "in-progress"
|
||||||
|
color: fbca04
|
||||||
|
description: "Issue is currently being resolved by a developer."
|
||||||
|
- name: "stale"
|
||||||
|
color: fef2c0
|
||||||
|
description:
|
||||||
|
"There has not been activity on this issue or PR for quite some time."
|
||||||
|
- name: "no-stale"
|
||||||
|
color: fef2c0
|
||||||
|
description: "This issue or PR is exempted from the stable bot."
|
||||||
|
|
||||||
|
- name: "security"
|
||||||
|
color: ee0701
|
||||||
|
description: "Marks a security issue that needs to be resolved asap."
|
||||||
|
- name: "incomplete"
|
||||||
|
color: fef2c0
|
||||||
|
description: "Marks a PR or issue that is missing information."
|
||||||
|
- name: "invalid"
|
||||||
|
color: fef2c0
|
||||||
|
description: "Marks a PR or issue that is missing information."
|
||||||
|
|
||||||
|
- name: "beginner-friendly"
|
||||||
|
color: 0e8a16
|
||||||
|
description:
|
||||||
|
"Good first issue for people wanting to contribute to the project."
|
||||||
|
- name: "help-wanted"
|
||||||
|
color: 0e8a16
|
||||||
|
description:
|
||||||
|
"We need some extra helping hands or expertise in order to resolve this."
|
||||||
|
|
||||||
|
- name: "hacktoberfest"
|
||||||
|
description: "Issues/PRs are participating in the Hacktoberfest."
|
||||||
|
color: fbca04
|
||||||
|
- name: "hacktoberfest-accepted"
|
||||||
|
description: "Issues/PRs are participating in the Hacktoberfest."
|
||||||
|
color: fbca04
|
||||||
|
|
||||||
|
- name: "priority-critical"
|
||||||
|
color: ee0701
|
||||||
|
description:
|
||||||
|
"This should be dealt with ASAP. Not fixing this issue would be a serious
|
||||||
|
error."
|
||||||
|
- name: "priority-high"
|
||||||
|
color: b60205
|
||||||
|
description:
|
||||||
|
"After critical issues are fixed, these should be dealt with before any
|
||||||
|
further issues."
|
||||||
|
- name: "priority-medium"
|
||||||
|
color: 0e8a16
|
||||||
|
description: "This issue may be useful, and needs some attention."
|
||||||
|
- name: "priority-low"
|
||||||
|
color: e4ea8a
|
||||||
|
description: "Nice addition, maybe... someday..."
|
||||||
@@ -0,0 +1,57 @@
|
|||||||
|
---
|
||||||
|
name-template: "v$RESOLVED_VERSION"
|
||||||
|
tag-template: "v$RESOLVED_VERSION"
|
||||||
|
change-template: "- $TITLE @$AUTHOR (#$NUMBER)"
|
||||||
|
sort-direction: ascending
|
||||||
|
|
||||||
|
categories:
|
||||||
|
- title: "🚨 Breaking changes"
|
||||||
|
labels:
|
||||||
|
- "breaking-change"
|
||||||
|
- title: "✨ New features"
|
||||||
|
labels:
|
||||||
|
- "new-feature"
|
||||||
|
- title: "🐛 Bug fixes"
|
||||||
|
labels:
|
||||||
|
- "bugfix"
|
||||||
|
- title: "🚀 Enhancements"
|
||||||
|
labels:
|
||||||
|
- "enhancement"
|
||||||
|
- "refactor"
|
||||||
|
- "performance"
|
||||||
|
- title: "🧰 Maintenance"
|
||||||
|
labels:
|
||||||
|
- "chore"
|
||||||
|
- "ci"
|
||||||
|
- title: "📚 Documentation"
|
||||||
|
labels:
|
||||||
|
- "documentation"
|
||||||
|
- title: "⬆️ Dependency updates"
|
||||||
|
labels:
|
||||||
|
- "dependencies"
|
||||||
|
|
||||||
|
version-resolver:
|
||||||
|
major:
|
||||||
|
labels:
|
||||||
|
- "major"
|
||||||
|
- "breaking-change"
|
||||||
|
minor:
|
||||||
|
labels:
|
||||||
|
- "minor"
|
||||||
|
- "new-feature"
|
||||||
|
patch:
|
||||||
|
labels:
|
||||||
|
- "bugfix"
|
||||||
|
- "chore"
|
||||||
|
- "ci"
|
||||||
|
- "dependencies"
|
||||||
|
- "documentation"
|
||||||
|
- "enhancement"
|
||||||
|
- "performance"
|
||||||
|
- "refactor"
|
||||||
|
default: patch
|
||||||
|
|
||||||
|
template: |
|
||||||
|
## What’s changed
|
||||||
|
|
||||||
|
$CHANGES
|
||||||
@@ -0,0 +1,23 @@
|
|||||||
|
---
|
||||||
|
name: Sync labels
|
||||||
|
|
||||||
|
# yamllint disable-line rule:truthy
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches:
|
||||||
|
- main
|
||||||
|
paths:
|
||||||
|
- .github/labels.yml
|
||||||
|
workflow_dispatch:
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
labels:
|
||||||
|
name: ♻️ Sync labels
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- name: ⤵️ Check out code from GitHub
|
||||||
|
uses: actions/checkout@v2.3.4
|
||||||
|
- name: 🚀 Run Label Syncer
|
||||||
|
uses: micnncim/action-label-syncer@v1.2.0
|
||||||
|
env:
|
||||||
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||||
@@ -0,0 +1,39 @@
|
|||||||
|
---
|
||||||
|
name: Lint
|
||||||
|
|
||||||
|
# yamllint disable-line rule:truthy
|
||||||
|
on: [push, pull_request]
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
build:
|
||||||
|
name: 🧹 yamllint
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- name: ⤵️ Check out code from GitHub
|
||||||
|
uses: actions/checkout@v2
|
||||||
|
- name: 🚀 Run yamllint
|
||||||
|
uses: frenck/action-yamllint@v1.0.1
|
||||||
|
|
||||||
|
json:
|
||||||
|
name: 🧹 JSON Lint
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- name: ⤵️ Check out code from GitHub
|
||||||
|
uses: actions/checkout@v2.3.4
|
||||||
|
- name: 🚀 Run JQ
|
||||||
|
run: |
|
||||||
|
shopt -s globstar
|
||||||
|
cat **/*.json | jq '.'
|
||||||
|
|
||||||
|
prettier:
|
||||||
|
name: 🧹 Prettier
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- name: ⤵️ Check out code from GitHub
|
||||||
|
uses: actions/checkout@v2.3.4
|
||||||
|
- name: 🚀 Run Prettier
|
||||||
|
uses: creyD/prettier_action@v3.3
|
||||||
|
with:
|
||||||
|
prettier_options: --write **/*.{json,js,md,yaml}
|
||||||
|
env:
|
||||||
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||||
@@ -0,0 +1,21 @@
|
|||||||
|
---
|
||||||
|
name: Lock
|
||||||
|
|
||||||
|
# yamllint disable-line rule:truthy
|
||||||
|
on:
|
||||||
|
schedule:
|
||||||
|
- cron: "0 9 * * *"
|
||||||
|
workflow_dispatch:
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
lock:
|
||||||
|
name: 🔒 Lock closed issues and PRs
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- uses: dessant/lock-threads@v2.0.3
|
||||||
|
with:
|
||||||
|
github-token: ${{ github.token }}
|
||||||
|
issue-lock-inactive-days: "30"
|
||||||
|
issue-lock-reason: ""
|
||||||
|
pr-lock-inactive-days: "1"
|
||||||
|
pr-lock-reason: ""
|
||||||
@@ -0,0 +1,18 @@
|
|||||||
|
---
|
||||||
|
name: Release Drafter
|
||||||
|
|
||||||
|
# yamllint disable-line rule:truthy
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches:
|
||||||
|
- main
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
update_release_draft:
|
||||||
|
name: ✏️ Draft release
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- name: 🚀 Run Release Drafter
|
||||||
|
uses: release-drafter/release-drafter@v5.13.0
|
||||||
|
env:
|
||||||
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||||
@@ -0,0 +1,40 @@
|
|||||||
|
---
|
||||||
|
name: Stale
|
||||||
|
|
||||||
|
# yamllint disable-line rule:truthy
|
||||||
|
on:
|
||||||
|
schedule:
|
||||||
|
- cron: "0 8 * * *"
|
||||||
|
workflow_dispatch:
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
stale:
|
||||||
|
name: 🧹 Clean up stale issues and PRs
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- name: 🚀 Run stale
|
||||||
|
uses: actions/stale@v3.0.14
|
||||||
|
with:
|
||||||
|
repo-token: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
days-before-stale: 30
|
||||||
|
days-before-close: 7
|
||||||
|
remove-stale-when-updated: true
|
||||||
|
stale-issue-label: "stale"
|
||||||
|
exempt-issue-labels: "no-stale,help-wanted"
|
||||||
|
stale-issue-message: >
|
||||||
|
There hasn't been any activity on this issue recently, so we clean
|
||||||
|
up some of the older and inactive issues.
|
||||||
|
|
||||||
|
Please make sure to update to the latest version and check if that
|
||||||
|
solves the issue. Let us know if that works for you by leaving a
|
||||||
|
comment 👍
|
||||||
|
|
||||||
|
This issue has now been marked as stale and will be closed if no
|
||||||
|
further activity occurs. Thanks!
|
||||||
|
stale-pr-label: "stale"
|
||||||
|
exempt-pr-labels: "no-stale"
|
||||||
|
stale-pr-message: >
|
||||||
|
There hasn't been any activity on this pull request recently. This
|
||||||
|
pull request has been automatically marked as stale because of that
|
||||||
|
and will be closed if no further activity occurs within 7 days.
|
||||||
|
Thank you for your contributions.
|
||||||
@@ -0,0 +1,15 @@
|
|||||||
|
name: Test
|
||||||
|
on: [push, pull_request]
|
||||||
|
jobs:
|
||||||
|
build:
|
||||||
|
name: Home Assistant Core Configuration Check
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- name: ⤵️ Check out code from GitHub
|
||||||
|
uses: actions/checkout@v2
|
||||||
|
- name: 🚀 Run Home Assistant Configuration Check
|
||||||
|
uses: frenck/action-home-assistant@v1
|
||||||
|
with:
|
||||||
|
path: "./test"
|
||||||
|
secrets: fakesecrets.yaml
|
||||||
|
version: stable
|
||||||
@@ -0,0 +1,133 @@
|
|||||||
|
# Contributor Covenant Code of Conduct
|
||||||
|
|
||||||
|
## Our Pledge
|
||||||
|
|
||||||
|
We as members, contributors, and leaders pledge to make participation in our
|
||||||
|
community a harassment-free experience for everyone, regardless of age, body
|
||||||
|
size, visible or invisible disability, ethnicity, sex characteristics, gender
|
||||||
|
identity and expression, level of experience, education, socio-economic status,
|
||||||
|
nationality, personal appearance, race, religion, or sexual identity
|
||||||
|
and orientation.
|
||||||
|
|
||||||
|
We pledge to act and interact in ways that contribute to an open, welcoming,
|
||||||
|
diverse, inclusive, and healthy community.
|
||||||
|
|
||||||
|
## Our Standards
|
||||||
|
|
||||||
|
Examples of behavior that contributes to a positive environment for our
|
||||||
|
community include:
|
||||||
|
|
||||||
|
- Demonstrating empathy and kindness toward other people
|
||||||
|
- Being respectful of differing opinions, viewpoints, and experiences
|
||||||
|
- Giving and gracefully accepting constructive feedback
|
||||||
|
- Accepting responsibility and apologizing to those affected by our mistakes,
|
||||||
|
and learning from the experience
|
||||||
|
- Focusing on what is best not just for us as individuals, but for the
|
||||||
|
overall community
|
||||||
|
|
||||||
|
Examples of unacceptable behavior include:
|
||||||
|
|
||||||
|
- The use of sexualized language or imagery, and sexual attention or
|
||||||
|
advances of any kind
|
||||||
|
- Trolling, insulting or derogatory comments, and personal or political attacks
|
||||||
|
- Public or private harassment
|
||||||
|
- Publishing others' private information, such as a physical or email
|
||||||
|
address, without their explicit permission
|
||||||
|
- Other conduct which could reasonably be considered inappropriate in a
|
||||||
|
professional setting
|
||||||
|
|
||||||
|
## Enforcement Responsibilities
|
||||||
|
|
||||||
|
Community leaders are responsible for clarifying and enforcing our standards of
|
||||||
|
acceptable behavior and will take appropriate and fair corrective action in
|
||||||
|
response to any behavior that they deem inappropriate, threatening, offensive,
|
||||||
|
or harmful.
|
||||||
|
|
||||||
|
Community leaders have the right and responsibility to remove, edit, or reject
|
||||||
|
comments, commits, code, wiki edits, issues, and other contributions that are
|
||||||
|
not aligned to this Code of Conduct, and will communicate reasons for moderation
|
||||||
|
decisions when appropriate.
|
||||||
|
|
||||||
|
## Scope
|
||||||
|
|
||||||
|
This Code of Conduct applies within all community spaces, and also applies when
|
||||||
|
an individual is officially representing the community in public spaces.
|
||||||
|
Examples of representing our community include using an official e-mail address,
|
||||||
|
posting via an official social media account, or acting as an appointed
|
||||||
|
representative at an online or offline event.
|
||||||
|
|
||||||
|
## Enforcement
|
||||||
|
|
||||||
|
Instances of abusive, harassing, or otherwise unacceptable behavior may be
|
||||||
|
reported to the community leaders responsible for enforcement at
|
||||||
|
frenck@frenck.dev.
|
||||||
|
|
||||||
|
All complaints will be reviewed and investigated promptly and fairly.
|
||||||
|
|
||||||
|
All community leaders are obligated to respect the privacy and security of the
|
||||||
|
reporter of any incident.
|
||||||
|
|
||||||
|
## Enforcement Guidelines
|
||||||
|
|
||||||
|
Community leaders will follow these Community Impact Guidelines in determining
|
||||||
|
the consequences for any action they deem in violation of this Code of Conduct:
|
||||||
|
|
||||||
|
### 1. Correction
|
||||||
|
|
||||||
|
**Community Impact**: Use of inappropriate language or other behavior deemed
|
||||||
|
unprofessional or unwelcome in the community.
|
||||||
|
|
||||||
|
**Consequence**: A private, written warning from community leaders, providing
|
||||||
|
clarity around the nature of the violation and an explanation of why the
|
||||||
|
behavior was inappropriate. A public apology may be requested.
|
||||||
|
|
||||||
|
### 2. Warning
|
||||||
|
|
||||||
|
**Community Impact**: A violation through a single incident or series
|
||||||
|
of actions.
|
||||||
|
|
||||||
|
**Consequence**: A warning with consequences for continued behavior. No
|
||||||
|
interaction with the people involved, including unsolicited interaction with
|
||||||
|
those enforcing the Code of Conduct, for a specified period of time. This
|
||||||
|
includes avoiding interactions in community spaces as well as external channels
|
||||||
|
like social media. Violating these terms may lead to a temporary or
|
||||||
|
permanent ban.
|
||||||
|
|
||||||
|
### 3. Temporary Ban
|
||||||
|
|
||||||
|
**Community Impact**: A serious violation of community standards, including
|
||||||
|
sustained inappropriate behavior.
|
||||||
|
|
||||||
|
**Consequence**: A temporary ban from any sort of interaction or public
|
||||||
|
communication with the community for a specified period of time. No public or
|
||||||
|
private interaction with the people involved, including unsolicited interaction
|
||||||
|
with those enforcing the Code of Conduct, is allowed during this period.
|
||||||
|
Violating these terms may lead to a permanent ban.
|
||||||
|
|
||||||
|
### 4. Permanent Ban
|
||||||
|
|
||||||
|
**Community Impact**: Demonstrating a pattern of violation of community
|
||||||
|
standards, including sustained inappropriate behavior, harassment of an
|
||||||
|
individual, or aggression toward or disparagement of classes of individuals.
|
||||||
|
|
||||||
|
**Consequence**: A permanent ban from any sort of public interaction within
|
||||||
|
the community.
|
||||||
|
|
||||||
|
## Attribution
|
||||||
|
|
||||||
|
This Code of Conduct is adapted from the [Contributor Covenant][homepage],
|
||||||
|
version 2.0, available at
|
||||||
|
[https://www.contributor-covenant.org/version/2/0/code_of_conduct.html][v2.0].
|
||||||
|
|
||||||
|
Community Impact Guidelines were inspired by
|
||||||
|
[Mozilla's code of conduct enforcement ladder][mozilla coc].
|
||||||
|
|
||||||
|
For answers to common questions about this code of conduct, see the FAQ at
|
||||||
|
[https://www.contributor-covenant.org/faq][faq]. Translations are available
|
||||||
|
at [https://www.contributor-covenant.org/translations][translations].
|
||||||
|
|
||||||
|
[homepage]: https://www.contributor-covenant.org
|
||||||
|
[v2.0]: https://www.contributor-covenant.org/version/2/0/code_of_conduct.html
|
||||||
|
[mozilla coc]: https://github.com/mozilla/diversity
|
||||||
|
[faq]: https://www.contributor-covenant.org/faq
|
||||||
|
[translations]: https://www.contributor-covenant.org/translations
|
||||||
@@ -0,0 +1,29 @@
|
|||||||
|
# Contributing
|
||||||
|
|
||||||
|
When contributing to this repository, please first discuss the change you wish
|
||||||
|
to make via issue, email, or any other method with the owners of this repository
|
||||||
|
before making a change.
|
||||||
|
|
||||||
|
Please note we have a code of conduct, please follow it in all your interactions
|
||||||
|
with the project.
|
||||||
|
|
||||||
|
## Issues and feature requests
|
||||||
|
|
||||||
|
You've found a bug in the source code, a mistake in the documentation or maybe
|
||||||
|
you'd like a new feature? You can help us by submitting an issue to our
|
||||||
|
[GitHub Repository][github]. Before you create an issue, make sure you search
|
||||||
|
the archive, maybe your question was already answered.
|
||||||
|
|
||||||
|
Even better: You could submit a pull request with a fix / new feature!
|
||||||
|
|
||||||
|
## Pull request process
|
||||||
|
|
||||||
|
1. Search our repository for open or closed [pull requests][prs] that relates
|
||||||
|
to your submission. You don't want to duplicate effort.
|
||||||
|
|
||||||
|
1. You may merge the pull request in once you have the sign-off of two other
|
||||||
|
developers, or if you do not have permission to do that, you may request
|
||||||
|
the second reviewer to merge it for you.
|
||||||
|
|
||||||
|
[github]: https://github.com/frenck/action-home-assistant/issues
|
||||||
|
[prs]: https://github.com/frenck/action-home-assistant/pulls
|
||||||
+21
@@ -0,0 +1,21 @@
|
|||||||
|
# MIT License
|
||||||
|
|
||||||
|
Copyright (c) 2021 Franck Nijhof
|
||||||
|
|
||||||
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
in the Software without restriction, including without limitation the rights
|
||||||
|
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
|
copies of the Software, and to permit persons to whom the Software is
|
||||||
|
furnished to do so, subject to the following conditions:
|
||||||
|
|
||||||
|
The above copyright notice and this permission notice shall be included in all
|
||||||
|
copies or substantial portions of the Software.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
|
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||||
|
SOFTWARE.
|
||||||
@@ -0,0 +1,205 @@
|
|||||||
|
# 🚀 Frenck's Github Action: Home Assistant Core Configuration Check
|
||||||
|
|
||||||
|
[![GitHub Release][releases-shield]][releases]
|
||||||
|
![Project Stage][project-stage-shield]
|
||||||
|
![Project Maintenance][maintenance-shield]
|
||||||
|
[![License][license-shield]](LICENSE.md)
|
||||||
|
|
||||||
|
[![Sponsor Frenck via GitHub Sponsors][github-sponsors-shield]][github-sponsors]
|
||||||
|
|
||||||
|
🚀 Frenck's GitHub Action for running a Home Assistant Core configuration check.
|
||||||
|
|
||||||
|
## About
|
||||||
|
|
||||||
|
This GitHub action runs a Home Assistant Core configuration check against your
|
||||||
|
repository.
|
||||||
|
|
||||||
|
Please note; that this Action is useable for all Home Assistant installation
|
||||||
|
types, and thus **NOT** limited to Home Assistant Core users. It also works
|
||||||
|
if you are running Home Assistant Container, Supervised or OS.
|
||||||
|
|
||||||
|
## Usage
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
name: Check
|
||||||
|
on: [push, pull_request]
|
||||||
|
jobs:
|
||||||
|
home-assistant:
|
||||||
|
name: Home Assistant Core Configuration Check
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- name: ⤵️ Check out configuration from GitHub
|
||||||
|
uses: actions/checkout@v2
|
||||||
|
- name: 🚀 Run Home Assistant Configuration Check
|
||||||
|
uses: frenck/action-home-assistant@v1
|
||||||
|
with:
|
||||||
|
path: "./config"
|
||||||
|
secrets: fakesecrets.yaml
|
||||||
|
version: stable
|
||||||
|
```
|
||||||
|
|
||||||
|
## Arguments
|
||||||
|
|
||||||
|
| Input | Description | Usage |
|
||||||
|
| :---------: | :-----------------------------------------------------------------: | :----------: |
|
||||||
|
| `path` | Path to the folder containing the Home Assistant Core configuration. | _Optional_ |
|
||||||
|
| `secrets` | Alternative secrets file to use, e.g., "fakesecrets.yaml". | _Optional_ |
|
||||||
|
| `version` | Version to use; dev/beta/stable or a specific version number. | _Optional_ |
|
||||||
|
|
||||||
|
### Specific configuration folder
|
||||||
|
|
||||||
|
By default, this GitHub Action will use the root folder as the Home Assistant
|
||||||
|
Core configuration folder. If you store your Home Assistant configuration in a
|
||||||
|
subfolder, the `path` argument can be used to inform the Action about that.
|
||||||
|
|
||||||
|
For example, if you configuration is in the `config` folder:
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
- name: 🚀 Run Home Assistant Core Configuration Check
|
||||||
|
uses: frenck/action-home-assistant@v1
|
||||||
|
with:
|
||||||
|
path: "./config"
|
||||||
|
```
|
||||||
|
|
||||||
|
### Using a fake secrets file
|
||||||
|
|
||||||
|
Of course, you don't want to commit your secrets file. However, without a
|
||||||
|
secrets file, your configuration check will most likely not pass.
|
||||||
|
|
||||||
|
This GitHub Action offers a way around that, but using a fake secrets file.
|
||||||
|
|
||||||
|
To use this, add a fake secrets file to your repository (e.g.,
|
||||||
|
`fakesecrets.yaml`) and make sure the content is the same as your real
|
||||||
|
`secrets.yaml` (with, of course, fake credentials/data). The GitHub Action
|
||||||
|
will use this file during checking your configuration.
|
||||||
|
|
||||||
|
For example, if you fake secrets file is `fakesecrets.yaml`:
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
- name: 🚀 Run Home Assistant Core Configuration Check
|
||||||
|
uses: frenck/action-home-assistant@v1
|
||||||
|
with:
|
||||||
|
secrets: "fakesecrets.yaml"
|
||||||
|
```
|
||||||
|
|
||||||
|
### Running against a specific version
|
||||||
|
|
||||||
|
This GitHub Action allows you to specify a specific version to run
|
||||||
|
your Home Assistant Core configuration against. However, by default, the
|
||||||
|
integration will try to find the `.HA_VERSION` file in your configuration
|
||||||
|
folder.
|
||||||
|
|
||||||
|
If the `.HA_VERSION` file is found, the version in that file is used. If
|
||||||
|
the `.HA_VERSION` file is not found; the Action will use the latest stable
|
||||||
|
version of Home Assistant to test your configuration with.
|
||||||
|
|
||||||
|
However, you can specify/override any version you like to check against,
|
||||||
|
for example, check with Home Assistant Core `2021.1.0`:
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
- name: 🚀 Run Home Assistant Core Configuration Check
|
||||||
|
uses: frenck/action-home-assistant@v1
|
||||||
|
with:
|
||||||
|
version: "2021.1.0"
|
||||||
|
```
|
||||||
|
|
||||||
|
Alternatively, you can also use `stable`, `beta` or `dev` to run against
|
||||||
|
latest versions of those stability channels.
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
- name: 🚀 Run Home Assistant Core Configuration Check
|
||||||
|
uses: frenck/action-home-assistant@v1
|
||||||
|
with:
|
||||||
|
version: beta
|
||||||
|
```
|
||||||
|
|
||||||
|
## More extensive example
|
||||||
|
|
||||||
|
A more extensive example, that runs your configuration against the latest
|
||||||
|
development, beta and stable versions:
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
name: Check
|
||||||
|
on: [push, pull_request]
|
||||||
|
jobs:
|
||||||
|
home-assistant:
|
||||||
|
name: "Home Assistant Core ${{ matrix.version }} Configuration Check"
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
strategy:
|
||||||
|
matrix:
|
||||||
|
version: ["stable", "beta", "dev"]
|
||||||
|
steps:
|
||||||
|
- name: ⤵️ Check out configuration from GitHub
|
||||||
|
uses: actions/checkout@v2
|
||||||
|
- name: 🚀 Run Home Assistant Configuration Check
|
||||||
|
uses: frenck/action-home-assistant@v1
|
||||||
|
with:
|
||||||
|
path: "./config"
|
||||||
|
secrets: fakesecrets.yaml
|
||||||
|
version: "${{ matrix.version }}"
|
||||||
|
```
|
||||||
|
|
||||||
|
## Changelog & Releases
|
||||||
|
|
||||||
|
This repository keeps a change log using [GitHub's releases][releases]
|
||||||
|
functionality.
|
||||||
|
|
||||||
|
Releases are based on [Semantic Versioning][semver], and use the format
|
||||||
|
of `MAJOR.MINOR.PATCH`. In a nutshell, the version will be incremented
|
||||||
|
based on the following:
|
||||||
|
|
||||||
|
- `MAJOR`: Incompatible or major changes.
|
||||||
|
- `MINOR`: Backwards-compatible new features and enhancements.
|
||||||
|
- `PATCH`: Backwards-compatible bugfixes and package updates.
|
||||||
|
|
||||||
|
## Contributing
|
||||||
|
|
||||||
|
This is an active open-source project. We are always open to people who want to
|
||||||
|
use the code or contribute to it.
|
||||||
|
|
||||||
|
We've set up a separate document for our
|
||||||
|
[contribution guidelines](CONTRIBUTING.md).
|
||||||
|
|
||||||
|
Thank you for being involved! :heart_eyes:
|
||||||
|
|
||||||
|
## Authors & contributors
|
||||||
|
|
||||||
|
The original setup of this repository is by [Franck Nijhof][frenck].
|
||||||
|
|
||||||
|
For a full list of all authors and contributors,
|
||||||
|
check [the contributor's page][contributors].
|
||||||
|
|
||||||
|
## License
|
||||||
|
|
||||||
|
MIT License
|
||||||
|
|
||||||
|
Copyright (c) 2021 Franck Nijhof
|
||||||
|
|
||||||
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
in the Software without restriction, including without limitation the rights
|
||||||
|
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
|
copies of the Software, and to permit persons to whom the Software is
|
||||||
|
furnished to do so, subject to the following conditions:
|
||||||
|
|
||||||
|
The above copyright notice and this permission notice shall be included in all
|
||||||
|
copies or substantial portions of the Software.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
|
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||||
|
SOFTWARE.
|
||||||
|
|
||||||
|
[contributors]: https://github.com/frenck/action-home-assistant/graphs/contributors
|
||||||
|
[frenck]: https://github.com/frenck
|
||||||
|
[github-sponsors-shield]: https://frenck.dev/wp-content/uploads/2019/12/github_sponsor.png
|
||||||
|
[github-sponsors]: https://github.com/sponsors/frenck
|
||||||
|
[license-shield]: https://img.shields.io/github/license/frenck/action-home-assistant.svg
|
||||||
|
[maintenance-shield]: https://img.shields.io/maintenance/yes/2021.svg
|
||||||
|
[project-stage-shield]: https://img.shields.io/badge/project%20stage-production%20ready-brightgreen.svg
|
||||||
|
[releases-shield]: https://img.shields.io/github/release/frenck/action-home-assistant.svg
|
||||||
|
[releases]: https://github.com/frenck/action-home-assistant/releases
|
||||||
|
[semver]: http://semver.org/spec/v2.0.0.html
|
||||||
+104
@@ -0,0 +1,104 @@
|
|||||||
|
---
|
||||||
|
name: "Frenck's Home Assistant Core Configuration Check"
|
||||||
|
description:
|
||||||
|
🚀 Frenck's GitHub Action for running a Home Assistant config check.
|
||||||
|
author: frenck
|
||||||
|
|
||||||
|
branding:
|
||||||
|
color: red
|
||||||
|
icon: thumbs-up
|
||||||
|
|
||||||
|
inputs:
|
||||||
|
path:
|
||||||
|
description: Path to the folder containing the Home Assistant configuration
|
||||||
|
default: "."
|
||||||
|
required: false
|
||||||
|
secrets:
|
||||||
|
description: Alternative secrets file to use
|
||||||
|
required: false
|
||||||
|
version:
|
||||||
|
description: Version to use; dev/beta/stable or a specific version number
|
||||||
|
required: false
|
||||||
|
|
||||||
|
runs:
|
||||||
|
using: "composite"
|
||||||
|
steps:
|
||||||
|
- name: 🏗 Check if the configuration is actually there
|
||||||
|
id: check
|
||||||
|
shell: bash
|
||||||
|
run: |
|
||||||
|
path="${{ inputs.path }}"
|
||||||
|
path="${path%/}"
|
||||||
|
if [[ -d "${path}" ]]; then
|
||||||
|
echo "::error ::Could not find specified configuration path: ${path}"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [[ -f "${path}/configuration.yaml" ]]; then
|
||||||
|
echo "::error ::Could not find configuration.yaml file in: ${path}"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "::set-output name=path::${path}"
|
||||||
|
|
||||||
|
- name: 🏗 Ensure secrets are in place
|
||||||
|
shell: bash
|
||||||
|
run: |
|
||||||
|
if [[ -z "${{ inputs.secrets }}" ]]; then
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
secrets="${{ inputs.secrets }}"
|
||||||
|
secrets="${secrets%/}"
|
||||||
|
|
||||||
|
if [[ -d "${secrets}" ]] && [[ -f "${secrets}/secrets.yaml" ]];
|
||||||
|
then
|
||||||
|
secrets="${secrets}/secrets.yaml"
|
||||||
|
elif [[ -d "${{ steps.check.outputs.path }}/${secrets}" ]] && \
|
||||||
|
[[ -f "${{ steps.check.outputs.path }}/${secrets}/secrets.yaml" ]];
|
||||||
|
then
|
||||||
|
secrets="${{ steps.check.outputs.path }}/${secrets}/secrets.yaml"
|
||||||
|
elif [[ -f "${{ steps.check.outputs.path }}/${secrets}" ]];
|
||||||
|
then
|
||||||
|
secrets="${{ steps.check.outputs.path }}/${secrets}"
|
||||||
|
elif [[ ! -f "${secrets}" ]];
|
||||||
|
then
|
||||||
|
echo "::error ::Could not find specified secrets file: ${{ inputs.secrets }}"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
cp "${secrets}" "${{ steps.check.outputs.path }}/secrets.yaml"
|
||||||
|
|
||||||
|
- name: 🏗 Determine & download requested Home Assistant version
|
||||||
|
shell: bash
|
||||||
|
id: version
|
||||||
|
run: |
|
||||||
|
version="${{ inputs.version }}"
|
||||||
|
if [[ -z "${version}" ]]; then
|
||||||
|
if [[ -f "${{ steps.check.outputs.path }}/.HA_VERSION" ]]; then
|
||||||
|
version=$(<"${{ steps.check.outputs.path }}/.HA_VERSION")
|
||||||
|
else
|
||||||
|
echo "::warning ::No specific version found or specified;"\
|
||||||
|
"Using 'stable' instead. Specify the version in the GitHub"\
|
||||||
|
"Action or ensure the '.HA_VERSION' file is in your repository."
|
||||||
|
version="stable"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
echo "::set-output name=version::${version}"
|
||||||
|
|
||||||
|
docker pull "homeassistant/home-assistant:${{ version }}"
|
||||||
|
|
||||||
|
- name: 🚀 Run Home Assistant Configuration Check
|
||||||
|
shell: bash
|
||||||
|
run: |
|
||||||
|
docker run --rm \
|
||||||
|
"homeassistant/home-assistant:${{ steps.version.outputs.version }}" \
|
||||||
|
python -m homeassistant --version
|
||||||
|
|
||||||
|
docker run --rm \
|
||||||
|
-v $(pwd):/github/workspace \
|
||||||
|
--workdir /github/workspace \
|
||||||
|
"homeassistant/home-assistant:${{ steps.version.outputs.version }}" \
|
||||||
|
python -m homeassistant \
|
||||||
|
--config "${{ steps.check.outputs.path }}" \
|
||||||
|
--script check_config
|
||||||
@@ -0,0 +1,3 @@
|
|||||||
|
---
|
||||||
|
# Empty, which is fine for this example
|
||||||
|
[]
|
||||||
@@ -0,0 +1,18 @@
|
|||||||
|
---
|
||||||
|
# Configure a default setup of Home Assistant (frontend, api, etc)
|
||||||
|
default_config:
|
||||||
|
|
||||||
|
# Automations to test an include
|
||||||
|
automation: !include automations.yaml
|
||||||
|
|
||||||
|
# Text to speech
|
||||||
|
tts:
|
||||||
|
- platform: google_translate
|
||||||
|
|
||||||
|
# Demo integration
|
||||||
|
demo:
|
||||||
|
|
||||||
|
# A sensor, useless, but ensures the fake secrets are loaded
|
||||||
|
sensor:
|
||||||
|
- platform: otp
|
||||||
|
token: !secret frenck
|
||||||
@@ -0,0 +1,2 @@
|
|||||||
|
---
|
||||||
|
frenck: SuperSecretPassword!123
|
||||||
@@ -0,0 +1,3 @@
|
|||||||
|
---
|
||||||
|
# This secrets file should be overwritten by the fake secret file.
|
||||||
|
some_password: welcome
|
||||||
Reference in New Issue
Block a user