From 65e62b1fd5b3606d21bb245391d0e8d010a807de Mon Sep 17 00:00:00 2001 From: Franck Nijhof Date: Thu, 14 Jan 2021 03:01:42 +0100 Subject: [PATCH] Add GitHub Actions workflows (#41) * Add GitHub Actions workflows * Prettified Code! * Follow external sources in Shellchecks * Supress shellcheck in 2 files Co-authored-by: frenck --- .github/PULL_REQUEST_TEMPLATE.md | 2 +- .github/dependabot.yaml | 8 +++ .github/labels.yml | 85 ++++++++++++++++++++++++++ .github/release-drafter.yml | 57 +++++++++++++++++ .github/workflows/ci.yaml | 55 +++++++++++++++++ .github/workflows/labels.yaml | 22 +++++++ .github/workflows/lock.yaml | 21 +++++++ .github/workflows/release-drafter.yaml | 18 ++++++ .github/workflows/stale.yaml | 40 ++++++++++++ README.md | 8 +-- lib/bashio.sh | 1 + lib/const.sh | 1 + 12 files changed, 313 insertions(+), 5 deletions(-) create mode 100644 .github/dependabot.yaml create mode 100644 .github/labels.yml create mode 100644 .github/release-drafter.yml create mode 100644 .github/workflows/ci.yaml create mode 100644 .github/workflows/labels.yaml create mode 100644 .github/workflows/lock.yaml create mode 100644 .github/workflows/release-drafter.yaml create mode 100644 .github/workflows/stale.yaml diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md index cbd529a..14f7b5b 100755 --- a/.github/PULL_REQUEST_TEMPLATE.md +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -6,4 +6,4 @@ > ([Github link][autolink-references] to related issues or pull requests) -[autolink-references]: https://help.github.com/articles/autolinked-references-and-urls/ \ No newline at end of file +[autolink-references]: https://help.github.com/articles/autolinked-references-and-urls/ diff --git a/.github/dependabot.yaml b/.github/dependabot.yaml new file mode 100644 index 0000000..45dd97a --- /dev/null +++ b/.github/dependabot.yaml @@ -0,0 +1,8 @@ +--- +version: 2 +updates: + - package-ecosystem: "github-actions" + directory: "/" + schedule: + interval: daily + time: "06:00" diff --git a/.github/labels.yml b/.github/labels.yml new file mode 100644 index 0000000..2d0f68a --- /dev/null +++ b/.github/labels.yml @@ -0,0 +1,85 @@ +--- +- 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: "ci" + color: 1d76db + description: "Work that improves the continue integration." +- name: "dependencies" + color: 1d76db + description: "Upgrade or downgrade of project dependencies." + +- 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..." + +- name: "major" + color: b60205 + description: "This PR causes a major version bump in the version number." +- name: "minor" + color: 0e8a16 + description: "This PR causes a minor version bump in the version number." diff --git a/.github/release-drafter.yml b/.github/release-drafter.yml new file mode 100644 index 0000000..cb404ea --- /dev/null +++ b/.github/release-drafter.yml @@ -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: + - "maintenance" + - "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 diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml new file mode 100644 index 0000000..1c4e319 --- /dev/null +++ b/.github/workflows/ci.yaml @@ -0,0 +1,55 @@ +--- +name: CI + +# yamllint disable-line rule:truthy +on: + push: + pull_request: + types: + - opened + - reopened + - synchronize + workflow_dispatch: + +jobs: + lint-markdown: + name: MarkdownLint + runs-on: ubuntu-latest + steps: + - name: ‡️ Check out code from GitHub + uses: actions/checkout@v2.3.4 + - name: πŸš€ Run mdl + uses: actionshub/markdownlint@2.0.0 + + lint-shellcheck: + name: Shellcheck + runs-on: ubuntu-latest + steps: + - name: ‡️ Check out code from GitHub + uses: actions/checkout@v2.3.4 + - name: πŸš€ Run Shellcheck + uses: ludeeus/action-shellcheck@1.0.0 + env: + SHELLCHECK_OPTS: --external-sources -s bash + + lint-yamllint: + name: YAMLLint + runs-on: ubuntu-latest + steps: + - name: ‡️ Check out code from GitHub + uses: actions/checkout@v2.3.4 + - name: πŸš€ Run YAMLLint + uses: frenck/action-yamllint@v1.0.2 + + lint-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 }} diff --git a/.github/workflows/labels.yaml b/.github/workflows/labels.yaml new file mode 100644 index 0000000..5a6ab37 --- /dev/null +++ b/.github/workflows/labels.yaml @@ -0,0 +1,22 @@ +--- +name: Sync labels + +# yamllint disable-line rule:truthy +on: + push: + branches: + - main + paths: + - .github/labels.yml + +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 }} diff --git a/.github/workflows/lock.yaml b/.github/workflows/lock.yaml new file mode 100644 index 0000000..ff147a2 --- /dev/null +++ b/.github/workflows/lock.yaml @@ -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: "" diff --git a/.github/workflows/release-drafter.yaml b/.github/workflows/release-drafter.yaml new file mode 100644 index 0000000..25f9856 --- /dev/null +++ b/.github/workflows/release-drafter.yaml @@ -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 }} diff --git a/.github/workflows/stale.yaml b/.github/workflows/stale.yaml new file mode 100644 index 0000000..08b39ae --- /dev/null +++ b/.github/workflows/stale.yaml @@ -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. diff --git a/README.md b/README.md index 881b268..74ace5d 100644 --- a/README.md +++ b/README.md @@ -109,12 +109,12 @@ functionality. The format of the log is based on [Keep a Changelog][keepchangelog]. Releases are based on [Semantic Versioning][semver], and use the format -of ``MAJOR.MINOR.PATCH``. In a nutshell, the version will be incremented +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. +- `MAJOR`: Incompatible or major changes. +- `MINOR`: Backwards-compatible new features and enhancements. +- `PATCH`: Backwards-compatible bugfixes and package updates. ## Support diff --git a/lib/bashio.sh b/lib/bashio.sh index 7c45ff5..f5026ba 100644 --- a/lib/bashio.sh +++ b/lib/bashio.sh @@ -1,4 +1,5 @@ #!/usr/bin/env bash +# shellcheck disable=SC2034 # ============================================================================== # Home Assistant Community Add-ons: Bashio # Bashio is an bash function library for use with Home Assistant add-ons. diff --git a/lib/const.sh b/lib/const.sh index 336c9b7..6cf72e0 100644 --- a/lib/const.sh +++ b/lib/const.sh @@ -1,4 +1,5 @@ #!/usr/bin/env bash +# shellcheck disable=SC2034 # ============================================================================== # Home Assistant Community Add-ons: Bashio # Bashio is an bash function library for use with Home Assistant add-ons.