From 574d6ea90dd6716dedfa6c832d1315dbb5c041d7 Mon Sep 17 00:00:00 2001 From: Sylvain Date: Fri, 8 Mar 2024 12:37:54 +0100 Subject: [PATCH 1/9] Refractor updater.sh and _common.sh --- .github/workflows/updater.sh | 22 ---------------------- scripts/_common.sh | 15 ++++++++++----- 2 files changed, 10 insertions(+), 27 deletions(-) diff --git a/.github/workflows/updater.sh b/.github/workflows/updater.sh index ab7938d..94c7567 100644 --- a/.github/workflows/updater.sh +++ b/.github/workflows/updater.sh @@ -40,28 +40,6 @@ then exit 0 fi -#================================================= -# SPECIFIC UPDATE STEPS -#================================================= - -# Replace new version in _common.sh -sed -i "s/^app_version=.*/app_version=$upstream_version/" scripts/_common.sh - -# Replace python required version -py_required_major=$(curl -Ls https://pypi.org/pypi/$app/json | jq -r .info.requires_python | cut -d '=' -f 2 | rev | cut -d"." -f2- | rev) -py_required_minor=$(curl -s "https://www.python.org/ftp/python/" | grep ">$py_required_major" | cut -d '/' -f 2 | cut -d '>' -f 2 | sort -rV | head -n 1) -current_py_required_minor=$(cat scripts/_common.sh | grep "py_required_version=" | cut -d '=' -f 2) -if ! dpkg --compare-versions "$current_py_required_minor" "lt" "$py_required_minor" -then - echo "::warning :: No need to update required python version" -else - echo "::warning :: Updating required python version to new upstream python version" - sed -i "s/^py_required_version=.*/py_required_version=$py_required_minor/" scripts/_common.sh -fi -# Replace pip required version -pip_required=$(curl -Ls https://pypi.org/pypi/$app/json | jq -r .info.requires_dist[] | grep "pip") #"pip (<23.1,>=21.0)" -sed -i "s/^pip_required=.*/pip_required=\"$pip_required\"/" scripts/_common.sh - #================================================= # GENERIC FINALIZATION #================================================= diff --git a/scripts/_common.sh b/scripts/_common.sh index 15e7793..7d9883d 100644 --- a/scripts/_common.sh +++ b/scripts/_common.sh @@ -4,12 +4,14 @@ # COMMON VARIABLES #================================================= -# Release to install -app_version=2024.2.5 +# App version +## yq is not a dependencie of yunohost package so tomlq command is not available (see https://github.com/YunoHost/yunohost/blob/dev/debian/control) +app_version=$(cat ../manifest.toml | grep 'version = '| cut -d '=' -f 2 | cut -d '~' -f 1 | tr -d ' "') #2024.2.5 -# Requirements -py_required_version=3.11.8 -pip_required="pip (>=21.3.1)" +# Python required version +## jq is a dependencie of yunohost package (see https://github.com/YunoHost/yunohost/blob/dev/debian/control) +py_required_major=$(curl -Ls https://pypi.org/pypi/$app/$app_version/json | jq -r '.info.requires_python' | cut -d '=' -f 2 | rev | cut -d '.' -f2- | rev) #3.11 +py_required_version=$(curl -Ls https://www.python.org/ftp/python/ | grep '>'$py_required_major | cut -d '/' -f 2 | cut -d '>' -f 2 | sort -rV | head -n 1) #3.11.8 # Fail2ban failregex="^%(__prefix_line)s.*\[homeassistant.components.http.ban\] Login attempt or request with invalid authentication from.* \(\).* Requested URL: ./auth/.*" @@ -113,6 +115,9 @@ myynh_install_python () { # Install/Upgrade Homeassistant in virtual environement myynh_install_homeassistant () { + # Requirements + pip_required=$(curl -Ls https://pypi.org/pypi/$app/$app_version/json | jq -r '.info.requires_dist[]' | grep 'pip') #pip (<23.1,>=21.0) + # Create the virtual environment ynh_exec_as $app $py_app_version -m venv --without-pip "$install_dir" From 2798db7f3793bd4e2d17d65c76a8cc1afd5bb805 Mon Sep 17 00:00:00 2001 From: yunohost-bot Date: Fri, 8 Mar 2024 11:37:52 +0000 Subject: [PATCH 2/9] Auto-update README --- README.md | 15 +++++++-------- README_fr.md | 15 +++++++-------- 2 files changed, 14 insertions(+), 16 deletions(-) diff --git a/README.md b/README.md index 7c3703f..321dfd6 100644 --- a/README.md +++ b/README.md @@ -27,10 +27,9 @@ Home Assistant is an open source home automation that puts local control and pri - Companion Mobile Apps ; - Home Energy Management." - **Shipped version:** 2024.2.5~ynh1 -**Demo:** https://demo.home-assistant.io +**Demo:** ## Screenshots @@ -38,11 +37,11 @@ Home Assistant is an open source home automation that puts local control and pri ## Documentation and resources -* Official app website: -* Official admin documentation: -* Upstream app code repository: -* YunoHost Store: -* Report a bug: +- Official app website: +- Official admin documentation: +- Upstream app code repository: +- YunoHost Store: +- Report a bug: ## Developer info @@ -56,4 +55,4 @@ or sudo yunohost app upgrade homeassistant -u https://github.com/YunoHost-Apps/homeassistant_ynh/tree/testing --debug ``` -**More info regarding app packaging:** \ No newline at end of file +**More info regarding app packaging:** diff --git a/README_fr.md b/README_fr.md index 457fd7e..a7f3fca 100644 --- a/README_fr.md +++ b/README_fr.md @@ -26,10 +26,9 @@ Home Assistant zst une application domotique open source qui donne la priorité - Toutes les données de votre maison intelligente restent locales ; - Applications mobiles compagnons ; - Gestion de l'énergie domestique. - **Version incluse :** 2024.2.5~ynh1 -**Démo :** https://demo.home-assistant.io +**Démo :** ## Captures d’écran @@ -37,11 +36,11 @@ Home Assistant zst une application domotique open source qui donne la priorité ## Documentations et ressources -* Site officiel de l’app : -* Documentation officielle de l’admin : -* Dépôt de code officiel de l’app : -* YunoHost Store: -* Signaler un bug : +- Site officiel de l’app : +- Documentation officielle de l’admin : +- Dépôt de code officiel de l’app : +- YunoHost Store : +- Signaler un bug : ## Informations pour les développeurs @@ -55,4 +54,4 @@ ou sudo yunohost app upgrade homeassistant -u https://github.com/YunoHost-Apps/homeassistant_ynh/tree/testing --debug ``` -**Plus d’infos sur le packaging d’applications :** \ No newline at end of file +**Plus d’infos sur le packaging d’applications :** From 7a8d7907c8aa266e7dadc9f9c03474138f7bb1b0 Mon Sep 17 00:00:00 2001 From: Sylvain Date: Fri, 8 Mar 2024 12:45:32 +0100 Subject: [PATCH 3/9] Update workflow master promotion pull request --- .github/workflows/update_master.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/update_master.yml b/.github/workflows/update_master.yml index a289a45..1c477f1 100644 --- a/.github/workflows/update_master.yml +++ b/.github/workflows/update_master.yml @@ -10,7 +10,7 @@ jobs: masterPromotion: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 with: ref: master - name: Reset promotion branch @@ -18,7 +18,7 @@ jobs: git fetch origin testing:testing git reset --hard testing - name: Create Pull Request - uses: peter-evans/create-pull-request@v5 + uses: peter-evans/create-pull-request@v6 with: branch: master-promotion title: 'Upgrade master from testing' From 8eca6a87f6b325dc1e89eec91aaa9f1d77c678be Mon Sep 17 00:00:00 2001 From: Sylvain Date: Fri, 8 Mar 2024 13:12:28 +0100 Subject: [PATCH 4/9] Update workflow package linter --- .github/workflows/package_linter.yml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/package_linter.yml b/.github/workflows/package_linter.yml index 73e99db..625631c 100644 --- a/.github/workflows/package_linter.yml +++ b/.github/workflows/package_linter.yml @@ -5,19 +5,19 @@ on: workflow_dispatch: push: branches: - - main + - master-promotion pull_request: schedule: - cron: '0 8 * * *' jobs: - test: + packageLinter: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - name: Set up Python - uses: actions/setup-python@v4 + uses: actions/setup-python@v5 with: python-version: '3.9' From 9b5df6c8ca162f9c8da23ed85bc58d2a772fc22f Mon Sep 17 00:00:00 2001 From: Sylvain Date: Fri, 8 Mar 2024 13:24:48 +0100 Subject: [PATCH 5/9] Update _common.sh --- scripts/_common.sh | 22 ++++++++++++++++------ 1 file changed, 16 insertions(+), 6 deletions(-) diff --git a/scripts/_common.sh b/scripts/_common.sh index 7d9883d..e3f6d13 100644 --- a/scripts/_common.sh +++ b/scripts/_common.sh @@ -5,16 +5,26 @@ #================================================= # App version -## yq is not a dependencie of yunohost package so tomlq command is not available (see https://github.com/YunoHost/yunohost/blob/dev/debian/control) -app_version=$(cat ../manifest.toml | grep 'version = '| cut -d '=' -f 2 | cut -d '~' -f 1 | tr -d ' "') #2024.2.5 +## yq is not a dependencie of yunohost package so tomlq command is not available +## (see https://github.com/YunoHost/yunohost/blob/dev/debian/control) +app_version=$(ynh_exec_quiet cat ../manifest.toml \ + | grep 'version = ' | cut -d '=' -f 2 \ + | cut -d '~' -f 1 | tr -d ' "') #2024.2.5 # Python required version -## jq is a dependencie of yunohost package (see https://github.com/YunoHost/yunohost/blob/dev/debian/control) -py_required_major=$(curl -Ls https://pypi.org/pypi/$app/$app_version/json | jq -r '.info.requires_python' | cut -d '=' -f 2 | rev | cut -d '.' -f2- | rev) #3.11 -py_required_version=$(curl -Ls https://www.python.org/ftp/python/ | grep '>'$py_required_major | cut -d '/' -f 2 | cut -d '>' -f 2 | sort -rV | head -n 1) #3.11.8 +## jq is a dependencie of yunohost package +## (see https://github.com/YunoHost/yunohost/blob/dev/debian/control) +py_required_major=$(ynh_exec_quiet curl -Ls https://pypi.org/pypi/$app/$app_version/json \ + | jq -r '.info.requires_python' | cut -d '=' -f 2 \ + | rev | cut -d '.' -f2- | rev) #3.11 +py_required_version=$(ynh_exec_quiet curl -Ls https://www.python.org/ftp/python/ \ + | grep '>'$py_required_major | cut -d '/' -f 2 \ + | cut -d '>' -f 2 | sort -rV | head -n 1) #3.11.8 # Fail2ban -failregex="^%(__prefix_line)s.*\[homeassistant.components.http.ban\] Login attempt or request with invalid authentication from.* \(\).* Requested URL: ./auth/.*" +failregex="^%(__prefix_line)s.*\[homeassistant.components.http.ban\] \ + Login attempt or request with invalid authentication \ + from.* \(\).* Requested URL: ./auth/.*" #================================================= # PERSONAL HELPERS From 4404b8b129e162a61cd470ada5275c0f819b2f09 Mon Sep 17 00:00:00 2001 From: Sylvain Date: Fri, 8 Mar 2024 13:25:29 +0100 Subject: [PATCH 6/9] Move to autoupdate strategy --- .github/workflows/updater.sh | 56 ----------------------------------- .github/workflows/updater.yml | 55 ---------------------------------- manifest.toml | 10 ++++++- 3 files changed, 9 insertions(+), 112 deletions(-) delete mode 100644 .github/workflows/updater.sh delete mode 100644 .github/workflows/updater.yml diff --git a/.github/workflows/updater.sh b/.github/workflows/updater.sh deleted file mode 100644 index 94c7567..0000000 --- a/.github/workflows/updater.sh +++ /dev/null @@ -1,56 +0,0 @@ -#!/bin/bash - -#================================================= -# PACKAGE UPDATING HELPER -#================================================= - -# This script is meant to be run by GitHub Actions -# The YunoHost-Apps organisation offers a template Action to run this script periodically -# Since each app is different, maintainers can adapt its contents so as to perform -# automatic actions when a new upstream release is detected. - -# Remove this exit command when you are ready to run this Action -#exit 1 - -#================================================= -# FETCHING LATEST RELEASE AND ITS ASSETS -#================================================= - -# Fetching information -app=$(cat manifest.toml | tomlq -j '.id') -current_version=$(cat manifest.toml | tomlq -j '.version|split("~")[0]') -upstream_version=$(curl -Ls https://pypi.org/pypi/$app/json | jq -r .info.version) - -# Setting up the environment variables -echo "Current version: $current_version" -echo "Latest release from upstream: $upstream_version" -echo "VERSION=$upstream_version" >> $GITHUB_ENV -# For the time being, let's assume the script will fail -echo "PROCEED=false" >> $GITHUB_ENV - -# Proceed only if the retrieved version is greater than the current one -if ! dpkg --compare-versions "$current_version" "lt" "$upstream_version" -then - echo "::warning :: No new version available" - exit 0 -# Proceed only if a PR for this new version does not already exist -elif git ls-remote -q --exit-code --heads https://github.com/$GITHUB_REPOSITORY.git ci-auto-update-v$upstream_version -then - echo "::warning ::A branch already exists for this update" - exit 0 -fi - -#================================================= -# GENERIC FINALIZATION -#================================================= - -# Replace new version in manifest -sed -i "s/^version = .*/version = \"$upstream_version~ynh1\"/" manifest.toml -#DOES NOT WORK BECAUSE IT REORDER ALL THE MANIFEST IN A STRANGE WAY -#echo "$(tomlq --toml-output --slurp --indent 4 ".[] | .version = \"$version~ynh1\"" manifest.toml)" > manifest.toml - -# No need to update the README, yunohost-bot takes care of it - -# The Action will proceed only if the PROCEED environment variable is set to true -echo "PROCEED=true" >> $GITHUB_ENV -exit 0 diff --git a/.github/workflows/updater.yml b/.github/workflows/updater.yml deleted file mode 100644 index d18a9e5..0000000 --- a/.github/workflows/updater.yml +++ /dev/null @@ -1,55 +0,0 @@ -# This workflow allows GitHub Actions to automagically update your app whenever a new upstream release is detected. -# You need to enable Actions in your repository settings, and fetch this Action from the YunoHost-Apps organization. -# This file should be enough by itself, but feel free to tune it to your needs. -# It calls updater.sh, which is where you should put the app-specific update steps. -name: Check for new upstream releases -on: - # Allow to manually trigger the workflow - workflow_dispatch: - # Run it every day at 6:00 UTC - schedule: - - cron: '0 6 */7 * *' -jobs: - updater: - runs-on: ubuntu-latest - steps: - - name: Fetch the source code - uses: actions/checkout@v3 - with: - token: ${{ secrets.GITHUB_TOKEN }} - - name: Install python - uses: actions/setup-python@v4 - - name: Install yq/tomlq - id: install_yq - run: pip install yq - - name: Run the updater script - id: run_updater - run: | - # Setting up Git user - git config --global user.name 'yunohost-bot' - git config --global user.email 'yunohost-bot@users.noreply.github.com' - # Run the updater script - /bin/bash .github/workflows/updater.sh - - name: Commit changes - id: commit - if: ${{ env.PROCEED == 'true' }} - run: | - git commit -am "Upgrade to v$VERSION" - - name: Create Pull Request - id: cpr - if: ${{ env.PROCEED == 'true' }} - uses: peter-evans/create-pull-request@v4 - with: - token: ${{ secrets.GITHUB_TOKEN }} - commit-message: Update to version ${{ env.VERSION }} - committer: 'yunohost-bot ' - author: 'yunohost-bot ' - signoff: false - base: testing - branch: ci-auto-update-v${{ env.VERSION }} - delete-branch: true - title: 'Upgrade to version ${{ env.VERSION }}' - body: | - Upgrade to v${{ env.VERSION }} - [See upstream release page](https://github.com/home-assistant/core/releases/tag/${{ env.VERSION }}) - draft: false diff --git a/manifest.toml b/manifest.toml index c1a406e..beea61d 100644 --- a/manifest.toml +++ b/manifest.toml @@ -5,7 +5,7 @@ name = "Home Assistant" description.en = "Home automation platform" description.fr = "Plateforme domotique" -version = "2024.2.5~ynh1" +version = "2024.2.5~ynh2" maintainers = ["ewilly"] @@ -77,6 +77,14 @@ ram.runtime = "2G" default = "America/Los_Angeles" [resources] + [resources.sources] + + [resources.sources.main] + url = "https://github.com/home-assistant/core/archive/refs/tags/2024.2.5.tar.gz" + sha256 = "cb65a0c60621688eab43b646e545d2a991cd9eacc65e02d3a39d0ddbd5a645d4" + + autoupdate.strategy = "latest_github_release" + [resources.system_user] [resources.install_dir] From 531a9651277fbf0cdd0d513c149e031589fd9961 Mon Sep 17 00:00:00 2001 From: yunohost-bot Date: Fri, 8 Mar 2024 12:25:25 +0000 Subject: [PATCH 7/9] Auto-update README --- README.md | 2 +- README_fr.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 321dfd6..ac662c3 100644 --- a/README.md +++ b/README.md @@ -27,7 +27,7 @@ Home Assistant is an open source home automation that puts local control and pri - Companion Mobile Apps ; - Home Energy Management." -**Shipped version:** 2024.2.5~ynh1 +**Shipped version:** 2024.2.5~ynh2 **Demo:** diff --git a/README_fr.md b/README_fr.md index a7f3fca..d27da2e 100644 --- a/README_fr.md +++ b/README_fr.md @@ -26,7 +26,7 @@ Home Assistant zst une application domotique open source qui donne la priorité - Toutes les données de votre maison intelligente restent locales ; - Applications mobiles compagnons ; - Gestion de l'énergie domestique. -**Version incluse :** 2024.2.5~ynh1 +**Version incluse :** 2024.2.5~ynh2 **Démo :** From 50f7c8916328a3c9e7adc45c552daa4cb5dab4ad Mon Sep 17 00:00:00 2001 From: Sylvain Date: Fri, 8 Mar 2024 13:32:10 +0100 Subject: [PATCH 8/9] Update _common.sh --- scripts/_common.sh | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/scripts/_common.sh b/scripts/_common.sh index e3f6d13..43d308d 100644 --- a/scripts/_common.sh +++ b/scripts/_common.sh @@ -1,5 +1,11 @@ #!/bin/bash +#================================================= +# IMPORT GENERIC HELPERS +#================================================= + +source /usr/share/yunohost/helpers + #================================================= # COMMON VARIABLES #================================================= From c9587ba729b027f5331d15aeabf75399e2b38d06 Mon Sep 17 00:00:00 2001 From: Sylvain Date: Fri, 8 Mar 2024 13:58:07 +0100 Subject: [PATCH 9/9] Update _common.sh --- scripts/_common.sh | 16 ++++------------ 1 file changed, 4 insertions(+), 12 deletions(-) diff --git a/scripts/_common.sh b/scripts/_common.sh index 43d308d..ac2acdd 100644 --- a/scripts/_common.sh +++ b/scripts/_common.sh @@ -1,11 +1,5 @@ #!/bin/bash -#================================================= -# IMPORT GENERIC HELPERS -#================================================= - -source /usr/share/yunohost/helpers - #================================================= # COMMON VARIABLES #================================================= @@ -13,24 +7,22 @@ source /usr/share/yunohost/helpers # App version ## yq is not a dependencie of yunohost package so tomlq command is not available ## (see https://github.com/YunoHost/yunohost/blob/dev/debian/control) -app_version=$(ynh_exec_quiet cat ../manifest.toml \ +app_version=$(cat ../manifest.toml 2>/dev/null \ | grep 'version = ' | cut -d '=' -f 2 \ | cut -d '~' -f 1 | tr -d ' "') #2024.2.5 # Python required version ## jq is a dependencie of yunohost package ## (see https://github.com/YunoHost/yunohost/blob/dev/debian/control) -py_required_major=$(ynh_exec_quiet curl -Ls https://pypi.org/pypi/$app/$app_version/json \ +py_required_major=$(curl -Ls https://pypi.org/pypi/$app/$app_version/json \ | jq -r '.info.requires_python' | cut -d '=' -f 2 \ | rev | cut -d '.' -f2- | rev) #3.11 -py_required_version=$(ynh_exec_quiet curl -Ls https://www.python.org/ftp/python/ \ +py_required_version=$(curl -Ls https://www.python.org/ftp/python/ \ | grep '>'$py_required_major | cut -d '/' -f 2 \ | cut -d '>' -f 2 | sort -rV | head -n 1) #3.11.8 # Fail2ban -failregex="^%(__prefix_line)s.*\[homeassistant.components.http.ban\] \ - Login attempt or request with invalid authentication \ - from.* \(\).* Requested URL: ./auth/.*" +failregex="^%(__prefix_line)s.*\[homeassistant.components.http.ban\] Login attempt or request with invalid authentication from.* \(\).* Requested URL: ./auth/.*" #================================================= # PERSONAL HELPERS