From 9807d6fb196b095a0d5f34aa2360996d022e5704 Mon Sep 17 00:00:00 2001 From: Paul Sinclair Date: Wed, 20 Jan 2021 16:45:20 -0500 Subject: [PATCH] =?UTF-8?q?=F0=9F=94=A8=20Update=20CI?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/.gitattributes | 3 + .github/CODEOWNERS | 3 - .github/PULL_REQUEST_TEMPLATE.md | 2 +- .github/autolabeler.yml | 2 - .github/config.yml | 50 ------ .github/dependabot.yaml | 8 + .github/invite-contributors.yml | 10 -- .github/labels.yml | 85 ++++++++++ .github/lock.yml | 20 --- .github/move.yml | 20 --- .github/no-response.yml | 13 -- .github/potential-duplicates.yml | 14 -- .github/release-drafter.yml | 57 +++++++ .github/settings.yml | 150 ------------------ .github/stale.yml | 61 -------- .github/support.yml | 22 --- .github/workflows/ci.yaml | 182 ++++++++++++++++++++++ .github/workflows/deploy.yaml | 206 +++++++++++++++++++++++++ .github/workflows/labels.yaml | 22 +++ .github/workflows/lock.yaml | 21 +++ .github/workflows/release-drafter.yaml | 18 +++ .github/workflows/stale.yaml | 40 +++++ .gitignore | 0 .gitlab-ci.yml | 13 -- renovate.json | 11 -- 25 files changed, 643 insertions(+), 390 deletions(-) create mode 100644 .github/.gitattributes delete mode 100644 .github/autolabeler.yml delete mode 100644 .github/config.yml create mode 100644 .github/dependabot.yaml delete mode 100644 .github/invite-contributors.yml create mode 100644 .github/labels.yml delete mode 100644 .github/lock.yml delete mode 100644 .github/move.yml delete mode 100644 .github/no-response.yml delete mode 100644 .github/potential-duplicates.yml create mode 100644 .github/release-drafter.yml delete mode 100644 .github/settings.yml delete mode 100644 .github/stale.yml delete mode 100644 .github/support.yml create mode 100644 .github/workflows/ci.yaml create mode 100644 .github/workflows/deploy.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 delete mode 100644 .gitignore delete mode 100644 .gitlab-ci.yml delete mode 100644 renovate.json diff --git a/.github/.gitattributes b/.github/.gitattributes new file mode 100644 index 0000000..b02a657 --- /dev/null +++ b/.github/.gitattributes @@ -0,0 +1,3 @@ +* text=auto eol=lf +*. eol=lf +*.sh eol=lf diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index 3fbad49..771559a 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -1,4 +1 @@ -# Require maintainer's :+1: for changes to the .github/ repo-config files -# mainly due to https://github.com/probot/settings privilege escalation .github/* @frenck -.gitlab-ci.yml @frenck diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md index cbd529a..14f7b5b 100644 --- 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/autolabeler.yml b/.github/autolabeler.yml deleted file mode 100644 index 3ce5703..0000000 --- a/.github/autolabeler.yml +++ /dev/null @@ -1,2 +0,0 @@ ---- -"Type: Documentation": ["*.md", "*.j2"] diff --git a/.github/config.yml b/.github/config.yml deleted file mode 100644 index f5828bb..0000000 --- a/.github/config.yml +++ /dev/null @@ -1,50 +0,0 @@ ---- -# Configuration for request-info - https://github.com/behaviorbot/request-info - -# *OPTIONAL* Comment to reply with -# Can be either a string : -requestInfoReplyComment: - - "We would appreciate it if you could provide us with more info about this issue/pr!" - - "Hmmm... That issue/PR is kinda low on text. Could you please provide some more content?" - -# *OPTIONAL* default titles to check against for lack of descriptiveness -# MUST BE ALL LOWERCASE -requestInfoDefaultTitles: [] - -# *OPTIONAL* Label to be added to Issues and Pull Requests with insufficient information given -requestInfoLabelToAdd: "Incomplete" - -# *OPTIONAL* Require Pull Requests to contain more information than what is provided in the PR template -# Will fail if the pull request's body is equal to the provided template -checkPullRequestTemplate: true - -# *OPTIONAL* Only warn about insufficient information on these events type -# Keys must be lowercase. Valid values are 'issue' and 'pullRequest' -requestInfoOn: - pullRequest: true - issue: true - -# *OPTIONAL* Add a list of people whose Issues/PRs will not be commented on -# keys must be GitHub usernames -requestInfoUserstoExclude: [] - -# Configuration for new-issue-welcome - https://github.com/behaviorbot/new-issue-welcome - -# Comment to be posted to on first time issues -newIssueWelcomeComment: > - :wave: Thanks for opening your first issue here! - If you're reporting a :bug: bug, please make sure you include steps to reproduce it. - Also, logs, error messages and information about your hardware might be useful. - -# Configuration for new-pr-welcome - https://github.com/behaviorbot/new-pr-welcome - -# Comment to be posted to on PRs from first time contributors in your repository -newPRWelcomeComment: > - :sparkling_heart: Thanks for opening this pull request! :sparkling_heart: - If your PR gets accepted and merged in, we will invite you to the project :tada: - -# Configuration for first-pr-merge - https://github.com/behaviorbot/first-pr-merge - -# Comment to be posted to on pull requests merged by a first time user -firstPRMergeComment: > - Congrats on merging your first pull request! :tada::tada::tada: 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/invite-contributors.yml b/.github/invite-contributors.yml deleted file mode 100644 index 25eb31a..0000000 --- a/.github/invite-contributors.yml +++ /dev/null @@ -1,10 +0,0 @@ ---- -# If true, this will add new contributors as outside collaborators -# to the repo their PR was merged in. Team name is ignored if this -# flag is set to true. -isOutside: false - -# Specify team name to add new contributors to a specific team -# within your organization. -# Use team name or team-name-slug -team: Contributors 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/lock.yml b/.github/lock.yml deleted file mode 100644 index 4b1e816..0000000 --- a/.github/lock.yml +++ /dev/null @@ -1,20 +0,0 @@ ---- -# Configuration for lock-threads - https://github.com/dessant/lock-threads -# Number of days of inactivity before a closed issue or pull request is locked -daysUntilLock: 30 - -# Comment to post before locking. Set to `false` to disable -lockComment: > - This thread has been automatically locked because it has not had recent - activity. Please open a new issue for related bugs and link to relevant - comments in this thread. - -# Issues or pull requests with these labels will not be locked -# exemptLabels: -# - no-locking - -# Limit to only `issues` or `pulls` -# only: issues - -# Add a label when locking. Set to `false` to disable -lockLabel: false diff --git a/.github/move.yml b/.github/move.yml deleted file mode 100644 index 0c2276a..0000000 --- a/.github/move.yml +++ /dev/null @@ -1,20 +0,0 @@ ---- -# Delete the command comment when it contains no other content -deleteCommand: true - -# Close the source issue after moving -closeSourceIssue: true - -# Lock the source issue after moving -lockSourceIssue: true - -# Mention issue and comment authors -mentionAuthors: true - -# Preserve mentions in the issue content -keepContentMentions: false - -# Set custom aliases for targets -# aliases: -# r: repo -# or: owner/repo diff --git a/.github/no-response.yml b/.github/no-response.yml deleted file mode 100644 index bb9f0f2..0000000 --- a/.github/no-response.yml +++ /dev/null @@ -1,13 +0,0 @@ ---- -# Configuration for probot-no-response - https://github.com/probot/no-response -# Number of days of inactivity before an Issue is closed for lack of response -daysUntilClose: 14 -# Label requiring a response -responseRequiredLabel: "Status: Awaiting response" -# Comment to post when closing an Issue for lack of response. Set to `false` to disable -closeComment: > - This issue has been automatically closed because there has been no response - to our request for more information from the original author. With only the - information that is currently in the issue, we don't have enough information - to take action. Please reach out if you have or find the answers we need so - that we can investigate further. diff --git a/.github/potential-duplicates.yml b/.github/potential-duplicates.yml deleted file mode 100644 index 00c7c0f..0000000 --- a/.github/potential-duplicates.yml +++ /dev/null @@ -1,14 +0,0 @@ ---- -# Label name and color to set, when potential duplicates are detected -issueLabel: "Potential duplicate" -labelColor: e6e6e6 - -# If similarity is higher than this threshold, issue will be marked as duplicate -threshold: 0.70 - -# Comment to post when potential duplicates are detected -referenceComment: > - Potential duplicates found: - {{#issues}} - - [#{{ number }}] {{ title }} ({{ accuracy }}%) - {{/issues}} 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/settings.yml b/.github/settings.yml deleted file mode 100644 index f97060f..0000000 --- a/.github/settings.yml +++ /dev/null @@ -1,150 +0,0 @@ ---- -repository: - description: "chrony - Home Assistant Community Add-ons" - homepage: https://addons.community - topics: ntp, chrony, addon, addons, home-assistant, homeassistant - private: false - has_issues: true - has_projects: false - has_wiki: false - has_downloads: false - default_branch: master - allow_squash_merge: true - allow_merge_commit: false - allow_rebase_merge: true -labels: - # Priority labels - - 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..." - - # Type labels - - name: "Type: Bug" - color: ee0701 - description: "Inconsistencies or issues which will cause a problem for users or implementors." - - name: "Type: Documentation" - color: 0052cc - description: "Solely about the documentation of the project." - - name: "Type: Enhancement" - color: 1d76db - description: "Enhancement of the code, not introducing new features." - - name: "Type: Feature" - color: 0e8a16 - description: "New features or options." - - name: "Type: Support" - color: 5319e7 - description: "Marks an issue as a support ticket." - - name: "Type: Discussion" - color: d4c5f9 - description: "Marks an issue as a generic discussion ticket." - - name: "Type: Maintenance" - color: 2af79e - description: "Generic Maintenance tasks, e.g., package updates." - - # Additional markers - - name: "Security" - color: ee0701 - description: "Marks a security issue that needs to be resolved asap." - - name: "Idea" - color: fef2c0 - description: "Marks an idea, which might be excepted and implemented." - - name: "Incomplete" - color: fef2c0 - description: "Marks a PR or issue that is missing information." - - name: "Pull request" - color: fbca04 - description: "There is an PR opened for this issue." - - name: "Accepted" - color: c2e0c6 - description: "This issue or PR has been accepted." - - name: "Declined" - color: f9d0c4 - description: "This issue or PR has been declined." - - name: "Potential duplicate" - color: e6e6e6 - description: "This issue has been automatically marked as a potential duplicate." - - # Ongoing Status labels - - name: "Status: Triage" - color: fbca04 - description: "This issue needs to be triaged." - - name: "Status: On hold" - color: cccccc - description: "Issue or PR that has been placed on hold for now." - - name: "Status: In progress" - color: fbca04 - description: "Issue is currently being resolved by a developer." - - name: "Status: Stale" - color: fef2c0 - description: "There has not been activity on this issue or PR for quite some time." - - name: "Status: Awaiting response" - color: fef2c0 - description: "Issue or PR awaits response from the creator." - - name: "Status: Blocked" - color: fef2c0 - description: "Progress on this issue is currently not possible." - - # Closing status labels - - name: "Closed: Known limitation" - color: e6e6e6 - description: "Issue is closed, it is a known limitation." - - name: "Closed: Expected behavior" - color: e6e6e6 - description: "Issues is closed, it is expected behavior." - - name: "Closed: Duplicate" - color: e6e6e6 - description: "Issue is closed, duplicate of an existing issue." - - name: "Closed: Invalid" - color: e6e6e6 - description: "Issue is closed, marked as not a valid issue (e.g., an user error)." - - name: "Closed: Wrong repository" - color: e6e6e6 - description: "Issue is closed, was created in the wrong repository." - - name: "Closed: Won't Fix" - color: e6e6e6 - description: "Issue is closed, it won't be fixed." - - name: "Closed: Done" - color: c2e0c6 - description: "Issue closed, work on this issue has been marked complete." - - # Others - - 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 - -branches: - - name: master - protection: - required_pull_request_reviews: - # required_approving_review_count: 1 - dismiss_stale_reviews: true - require_code_owner_reviews: true - dismissal_restrictions: - users: [] - teams: - - Admins - - Masters - required_status_checks: - strict: false - contexts: [] - enforce_admins: false - restrictions: - users: [] - teams: - - Admins - - Masters diff --git a/.github/stale.yml b/.github/stale.yml deleted file mode 100644 index 36938bb..0000000 --- a/.github/stale.yml +++ /dev/null @@ -1,61 +0,0 @@ ---- -# Configuration for probot-stale - https://github.com/probot/stale - -# Number of days of inactivity before an Issue or Pull Request becomes stale -daysUntilStale: 60 - -# Number of days of inactivity before a stale Issue or Pull Request is closed. -# Set to false to disable. If disabled, issues still need to be closed manually, but will remain marked as stale. -daysUntilClose: 7 - -# Issues or Pull Requests with these labels will never be considered stale. Set to `[]` to disable -exemptLabels: - - "Status: On hold" - - "Status: In progress" - - "Status: Awaiting response" - - "Status: Blocked" - - "Idea" - - "Security" - -# Set to true to ignore issues in a project (defaults to false) -exemptProjects: false - -# Set to true to ignore issues in a milestone (defaults to false) -exemptMilestones: false - -# Label to use when marking as stale -staleLabel: "Status: Stale" - -# Comment to post when marking as stale. Set to `false` to disable -markComment: > - This issue has been automatically marked as stale because it has not had - recent activity. It will be closed if no further activity occurs. Thank you - for your contributions. - -# Comment to post when removing the stale label. -# unmarkComment: > -# Your comment here. -unmarkComment: false - -# Comment to post when closing a stale Issue or Pull Request. -# closeComment: > -# Your comment here. -closeComment: false - -# Limit the number of actions per hour, from 1-30. Default is 30 -limitPerRun: 30 - -# Limit to only `issues` or `pulls` -only: issues - -# Optionally, specify configuration settings that are specific to just 'issues' or 'pulls': -# pulls: -# daysUntilStale: 30 -# markComment: > -# This pull request has been automatically marked as stale because it has not had -# recent activity. It will be closed if no further activity occurs. Thank you -# for your contributions. - -# issues: -# exemptLabels: -# - confirmed diff --git a/.github/support.yml b/.github/support.yml deleted file mode 100644 index 27e688f..0000000 --- a/.github/support.yml +++ /dev/null @@ -1,22 +0,0 @@ ---- -# Configuration for support-requests - https://github.com/dessant/support-requests - -# Label used to mark issues as support requests -supportLabel: "Type: Support" - -# Comment to post on issues marked as support requests. Add a link -# to a support page, or set to `false` to disable -supportComment: > - :wave: We use the issue tracker exclusively for bug reports and feature requests. - However, this issue appears to be a support request. Please use our - support channels to get help with the project. - - Head over to the - [Home Assistant community forum](https://community.home-assistant.io/?u=frenck) - or join our [Discord](https://discord.me/hassioaddons) chat. - -# Close issues marked as support requests -close: true - -# Lock issues marked as support requests -lock: false diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml new file mode 100644 index 0000000..a7f0cc2 --- /dev/null +++ b/.github/workflows/ci.yaml @@ -0,0 +1,182 @@ +--- +name: CI + +# yamllint disable-line rule:truthy +on: + push: + pull_request: + types: + - opened + - reopened + - synchronize + workflow_dispatch: + +jobs: + information: + name: Gather add-on information + runs-on: ubuntu-latest + outputs: + architectures: ${{ steps.information.outputs.architectures }} + build: ${{ steps.information.outputs.build }} + description: ${{ steps.information.outputs.description }} + name: ${{ steps.information.outputs.name }} + slug: ${{ steps.information.outputs.slug }} + target: ${{ steps.information.outputs.target }} + steps: + - name: ‡️ Check out code from GitHub + uses: actions/checkout@v2.3.4 + - name: πŸš€ Run add-on information action + id: information + uses: frenck/action-addon-information@v1.0.0 + + lint-addon: + name: Lint Add-on + needs: + - information + runs-on: ubuntu-latest + steps: + - name: ‡️ Check out code from GitHub + uses: actions/checkout@v2.3.4 + - name: πŸš€ Run Add-on Lint + uses: frenck/action-addon-linter@v1.3.0 + with: + community: true + path: "./${{ needs.information.outputs.target }}" + + lint-hadolint: + name: Hadolint + needs: + - information + runs-on: ubuntu-latest + steps: + - name: ‡️ Check out code from GitHub + uses: actions/checkout@v2.3.4 + - name: πŸš€ Run Hadolint + uses: brpaz/hadolint-action@v1.3.1 + with: + dockerfile: "./${{ needs.information.outputs.target }}/Dockerfile" + + lint-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 '.' + + 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: -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 }} + + build: + name: Build ${{ matrix.architecture }} + needs: + - information + - lint-addon + - lint-hadolint + - lint-json + - lint-markdown + - lint-prettier + - lint-shellcheck + - lint-yamllint + runs-on: ubuntu-latest + strategy: + matrix: + architecture: ${{ fromJson(needs.information.outputs.architectures) }} + steps: + - name: ‡️ Check out code from GitHub + uses: actions/checkout@v2.3.4 + - name: πŸ— Set up build cache + id: cache + uses: actions/cache@v2.1.3 + with: + path: /tmp/.docker-cache + key: docker-${{ github.ref }}-${{ matrix.architecture }}-${{ github.sha }} + restore-keys: | + docker-${{ github.ref }}-${{ matrix.architecture }} + - name: πŸ— Set up QEMU + uses: docker/setup-qemu-action@v1.0.1 + - name: πŸ— Set up Docker Buildx + uses: docker/setup-buildx-action@v1.1.1 + - name: ℹ️ Compose build flags + id: flags + run: | + echo "::set-output name=date::$(date +"%Y-%m-%dT%H:%M:%SZ")" + from=$(jq --raw-output ".build_from.${{ matrix.architecture }}" "${{ needs.information.outputs.build }}") + echo "::set-output name=from::${from}" + + if [[ "${{ matrix.architecture}}" = "amd64" ]]; then + echo "::set-output name=platform::linux/amd64" + elif [[ "${{ matrix.architecture }}" = "i386" ]]; then + echo "::set-output name=platform::linux/386" + elif [[ "${{ matrix.architecture }}" = "armhf" ]]; then + echo "::set-output name=platform::linux/arm/v6" + elif [[ "${{ matrix.architecture }}" = "armv7" ]]; then + echo "::set-output name=platform::linux/arm/v7" + elif [[ "${{ matrix.architecture }}" = "aarch64" ]]; then + echo "::set-output name=platform::linux/arm64/v8" + else + echo "::error ::Could not determine platform for architecture ${{ matrix.architecture }}" + exit 1 + fi + - name: πŸš€ Build + uses: docker/build-push-action@v2.2.2 + with: + push: false + context: ${{ needs.information.outputs.target }} + file: ${{ needs.information.outputs.target }}/Dockerfile + cache-from: | + type=local,src=/tmp/.docker-cache + ghcr.io/hassio-addons/${{ needs.information.outputs.slug }}/${{ matrix.architecture }}:edge + cache-to: type=local,mode=max,dest=/tmp/.docker-cache + platforms: ${{ steps.flags.outputs.platform }} + build-args: | + BUILD_ARCH=${{ matrix.architecture }} + BUILD_DATE=${{ steps.flags.outputs.date }} + BUILD_DESCRIPTION=${{ needs.information.outputs.description }} + BUILD_FROM=${{ steps.flags.outputs.from }} + BUILD_NAME=${{ needs.information.outputs.name }} + BUILD_REF=${{ github.sha }} + BUILD_REPOSITORY=${{ github.repository }} + BUILD_VERSION=edge diff --git a/.github/workflows/deploy.yaml b/.github/workflows/deploy.yaml new file mode 100644 index 0000000..1190d75 --- /dev/null +++ b/.github/workflows/deploy.yaml @@ -0,0 +1,206 @@ +--- +name: Deploy + +# yamllint disable-line rule:truthy +on: + release: + types: + - published + workflow_run: + workflows: ["CI"] + branches: [main] + types: + - completed + +jobs: + information: + if: | + github.event_name == 'release' + || ( + github.event_name == 'workflow_run' + && github.event.workflow_run.conclusion == 'success' + ) + name: ℹ️ Gather add-on information + runs-on: ubuntu-latest + outputs: + architectures: ${{ steps.information.outputs.architectures }} + build: ${{ steps.information.outputs.build }} + description: ${{ steps.information.outputs.description }} + environment: ${{ steps.release.outputs.environment }} + name: ${{ steps.information.outputs.name }} + slug: ${{ steps.information.outputs.slug }} + target: ${{ steps.information.outputs.target }} + version: ${{ steps.release.outputs.version }} + steps: + - name: ‡️ Check out code from GitHub + uses: actions/checkout@v2.3.4 + - name: πŸš€ Run add-on information action + id: information + uses: frenck/action-addon-information@v1.0.0 + - name: ℹ️ Gather version and environment + id: release + run: | + sha="${{ github.sha }}" + environment="edge" + version="${sha:0:7}" + if [[ "${{ github.event_name }}" = "release" ]]; then + version="${{ github.event.release.tag_name }}" + version="${version,,}" + version="${version#v}" + environment="stable" + if [[ "${{ github.event.release.prerelease }}" = "true" ]]; then + environment="beta" + fi + fi + + echo "::set-output name=environment::${environment}" + echo "::set-output name=version::${version}" + + deploy: + name: πŸ‘· Build & Deploy ${{ matrix.architecture }} + needs: information + runs-on: ubuntu-latest + strategy: + matrix: + architecture: ${{ fromJson(needs.information.outputs.architectures) }} + steps: + - name: ‡️ Check out code from GitHub + uses: actions/checkout@v2.3.4 + - name: πŸ— Set up build cache + id: cache + uses: actions/cache@v2.1.3 + with: + path: /tmp/.docker-cache + key: docker-${{ github.ref }}-${{ matrix.architecture }}-${{ github.sha }} + restore-keys: | + docker-${{ github.ref }}-${{ matrix.architecture }} + - name: πŸ— Set up QEMU + uses: docker/setup-qemu-action@v1.0.1 + - name: πŸ— Set up Docker Buildx + uses: docker/setup-buildx-action@v1.1.1 + - name: ℹ️ Compose build flags + id: flags + run: | + echo "::set-output name=date::$(date +"%Y-%m-%dT%H:%M:%SZ")" + from=$(jq --raw-output ".build_from.${{ matrix.architecture }}" "${{ needs.information.outputs.build }}") + echo "::set-output name=from::${from}" + + if [[ "${{ matrix.architecture}}" = "amd64" ]]; then + echo "::set-output name=platform::linux/amd64" + elif [[ "${{ matrix.architecture }}" = "i386" ]]; then + echo "::set-output name=platform::linux/386" + elif [[ "${{ matrix.architecture }}" = "armhf" ]]; then + echo "::set-output name=platform::linux/arm/v6" + elif [[ "${{ matrix.architecture }}" = "armv7" ]]; then + echo "::set-output name=platform::linux/arm/v7" + elif [[ "${{ matrix.architecture }}" = "aarch64" ]]; then + echo "::set-output name=platform::linux/arm64/v8" + else + echo "::error ::Could not determine platform for architecture ${{ matrix.architecture }}" + exit 1 + fi + - name: πŸ— Login to GitHub Container Registry + uses: docker/login-action@v1.8.0 + with: + registry: ghcr.io + username: ${{ secrets.GHCR_USERNAME }} + password: ${{ secrets.GHCR_PASSWORD }} + - name: πŸš€ Build and push + uses: docker/build-push-action@v2.2.2 + with: + push: true + # yamllint disable rule:line-length + tags: | + ghcr.io/hassio-addons/${{ needs.information.outputs.slug }}/${{ matrix.architecture }}:${{ needs.information.outputs.environment }} + ghcr.io/hassio-addons/${{ needs.information.outputs.slug }}/${{ matrix.architecture }}:${{ needs.information.outputs.version }} + # yamllint enable rule:line-length + context: ${{ needs.information.outputs.target }} + file: ${{ needs.information.outputs.target }}/Dockerfile + cache-from: | + type=local,src=/tmp/.docker-cache + ghcr.io/hassio-addons/${{ needs.information.outputs.slug }}/${{ matrix.architecture }}:edge + cache-to: type=local,mode=max,dest=/tmp/.docker-cache + platforms: ${{ steps.flags.outputs.platform }} + build-args: | + BUILD_ARCH=${{ matrix.architecture }} + BUILD_DATE=${{ steps.flags.outputs.date }} + BUILD_DESCRIPTION=${{ needs.information.outputs.description }} + BUILD_FROM=${{ steps.flags.outputs.from }} + BUILD_NAME=${{ needs.information.outputs.name }} + BUILD_REF=${{ github.sha }} + BUILD_REPOSITORY=${{ github.repository }} + BUILD_VERSION=${{ needs.information.outputs.version }} + + publish-edge: + name: πŸ“’ Publish to edge repository + if: needs.information.outputs.environment == 'edge' + needs: + - information + - deploy + environment: + name: ${{ needs.information.outputs.environment }} + runs-on: ubuntu-latest + steps: + - name: πŸš€ Dispatch repository updater update signal + uses: peter-evans/repository-dispatch@v1.1.3 + with: + token: ${{ secrets.DISPATCH_TOKEN }} + repository: hassio-addons/repository-edge + event-type: update + client-payload: > + { + "addon": "${{ needs.information.outputs.slug }}", + "name": "${{ needs.information.outputs.name }}", + "repository": "${{ github.repository }}", + "version": "${{ needs.information.outputs.version }}" + } + + publish-beta: + name: πŸ“’ Publish to beta repository + if: | + needs.information.outputs.environment == 'beta' || + needs.information.outputs.environment == 'stable' + needs: + - information + - deploy + environment: + name: ${{ needs.information.outputs.environment }} + runs-on: ubuntu-latest + steps: + - name: πŸš€ Dispatch repository updater update signal + uses: peter-evans/repository-dispatch@v1.1.3 + with: + token: ${{ secrets.DISPATCH_TOKEN }} + repository: hassio-addons/repository-beta + event-type: update + client-payload: > + { + "addon": "${{ needs.information.outputs.slug }}", + "name": "${{ needs.information.outputs.name }}", + "repository": "${{ github.repository }}", + "version": "${{ github.event.release.tag_name }}" + } + + publish-stable: + name: πŸ“’ Publish to stable repository + if: needs.information.outputs.environment == 'stable' + needs: + - information + - deploy + environment: + name: ${{ needs.information.outputs.environment }} + runs-on: ubuntu-latest + steps: + - name: πŸš€ Dispatch repository updater update signal + uses: peter-evans/repository-dispatch@v1.1.3 + with: + token: ${{ secrets.DISPATCH_TOKEN }} + repository: hassio-addons/repository + event-type: update + client-payload: > + { + "addon": "${{ needs.information.outputs.slug }}", + "name": "${{ needs.information.outputs.name }}", + "repository": "${{ github.repository }}", + "version": "${{ github.event.release.tag_name }}" + } 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/.gitignore b/.gitignore deleted file mode 100644 index e69de29..0000000 diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml deleted file mode 100644 index ec9e4f2..0000000 --- a/.gitlab-ci.yml +++ /dev/null @@ -1,13 +0,0 @@ ---- -include: https://raw.githubusercontent.com/hassio-addons/organization/master/gitlabci/addon.yml - -variables: - ADDON_GITHUB_REPO: "hassio-addons/addon-chrony" - ADDON_SLUG: "chrony" - ADDON_TARGET: "chrony" - - ADDON_AARCH64_BASE: "hassioaddons/base-aarch64:8.0.6" - ADDON_AMD64_BASE: "hassioaddons/base-amd64:8.0.6" - ADDON_ARMHF_BASE: "hassioaddons/base-armhf:8.0.6" - ADDON_ARMV7_BASE: "hassioaddons/base-armv7:8.0.6" - ADDON_I386_BASE: "hassioaddons/base-i386:8.0.6" diff --git a/renovate.json b/renovate.json deleted file mode 100644 index 58ca74e..0000000 --- a/renovate.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "extends": [ - "config:base" - ], - "commitMessageAction": "Updates", - "commitMessageTopic": "{{depName}}", - "commitMessagePrefix": ":arrow_up:", - "labels": [ - "Type: Maintenance" - ] -}