From 37cc9cd426708562c398a227c8295d29df457a7d Mon Sep 17 00:00:00 2001 From: phunkyfish Date: Tue, 13 Feb 2024 17:14:57 +0000 Subject: [PATCH] [github] Updated deprecated workflows actions --- .github/workflows/build.yml | 8 +-- .github/workflows/changelog-and-release.yml | 28 ++++----- .github/workflows/increment-version.yml | 63 +++++++++++++++++++ .github/workflows/release.yml | 18 +++--- .../sync-addon-metadata-translations.yml | 58 +++++++++++++++++ 5 files changed, 148 insertions(+), 27 deletions(-) create mode 100644 .github/workflows/increment-version.yml create mode 100644 .github/workflows/sync-addon-metadata-translations.yml diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index ac9d2e1..30ebb6d 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -24,13 +24,13 @@ jobs: if [[ $DEBIAN_BUILD == true ]]; then sudo apt-get update; fi if [[ $DEBIAN_BUILD == true ]]; then sudo apt-get install fakeroot; fi - name: Checkout Kodi repo - uses: actions/checkout@v2 + uses: actions/checkout@v4 with: repository: xbmc/xbmc ref: Nexus path: xbmc - - name: Checkout pvr.freebox repo - uses: actions/checkout@v2 + - name: Checkout add-on repo + uses: actions/checkout@v4 with: path: ${{ env.app_id }} - name: Configure @@ -41,7 +41,7 @@ jobs: run: | if [[ $DEBIAN_BUILD != true ]]; then cd ${app_id} && mkdir -p build && cd build; fi if [[ $DEBIAN_BUILD != true ]]; then cmake -DADDONS_TO_BUILD=${app_id} -DADDON_SRC_PREFIX=${{ github.workspace }} -DCMAKE_BUILD_TYPE=Debug -DCMAKE_INSTALL_PREFIX=${{ github.workspace }}/xbmc/addons -DPACKAGE_ZIP=1 ${{ github.workspace }}/xbmc/cmake/addons; fi - if [[ $DEBIAN_BUILD == true ]]; then wget https://raw.githubusercontent.com/xbmc/xbmc/master/xbmc/addons/kodi-dev-kit/tools/debian-addon-package-test.sh && chmod +x ./debian-addon-package-test.sh; fi + if [[ $DEBIAN_BUILD == true ]]; then wget https://raw.githubusercontent.com/xbmc/xbmc/Nexus/xbmc/addons/kodi-dev-kit/tools/debian-addon-package-test.sh && chmod +x ./debian-addon-package-test.sh; fi if [[ $DEBIAN_BUILD == true ]]; then sudo apt-get build-dep ${{ github.workspace }}/${app_id}; fi - name: Build env: diff --git a/.github/workflows/changelog-and-release.yml b/.github/workflows/changelog-and-release.yml index c952b58..1f00545 100644 --- a/.github/workflows/changelog-and-release.yml +++ b/.github/workflows/changelog-and-release.yml @@ -39,28 +39,29 @@ jobs: # Checkout the current repository into a directory (repositories name) - name: Checkout Repository - uses: actions/checkout@v2 + uses: actions/checkout@v4 with: fetch-depth: 0 path: ${{ github.event.repository.name }} - # Checkout the required scripts from kodi-pvr/pvr-scripts into the 'scripts' directory + # Checkout the required scripts from xbmc/binary-addon-scripts into the 'scripts' directory - name: Checkout Scripts - uses: actions/checkout@v2 + uses: actions/checkout@v4 with: fetch-depth: 0 - repository: kodi-pvr/pvr-scripts + repository: xbmc/binary-addon-scripts path: scripts # Install all dependencies required by the following steps # - libxml2-utils, xmlstarlet: reading news and version from addon.xml.in - name: Install dependencies run: | + sudo apt-get update sudo apt-get install libxml2-utils xmlstarlet # Setup python version 3.9 - name: Set up Python - uses: actions/setup-python@v2 + uses: actions/setup-python@v5 with: python-version: '3.9' @@ -84,6 +85,7 @@ jobs: # - steps.required-variables.outputs.version: version element from addon.xml.in # - steps.required-variables.outputs.branch: branch of the triggering ref # - steps.required-variables.outputs.today: today's date in format '%Y-%m-%d' + # Note: we use a random EOF for 'changes' as is best practice for for multiline variables - name: Get required variables id: required-variables run: | @@ -92,17 +94,15 @@ jobs: then changes=$(xmlstarlet fo -R "$(find . -name addon.xml.in)" | xmlstarlet sel -t -v 'string(/addon/extension/news)' | awk -v RS= 'NR==1') fi - changes="${changes//'%'/'%25'}" - changes="${changes//$'\n'/'%0A'}" - changes="${changes//$'\r'/'%0D'}" - changes="${changes//$'\\n'/'%0A'}" - changes="${changes//$'\\r'/'%0D'}" - echo ::set-output name=changes::$changes + EOF=$(dd if=/dev/urandom bs=15 count=1 status=none | base64) + echo "changes<<$EOF" >> $GITHUB_OUTPUT + echo "$changes" >> $GITHUB_OUTPUT + echo "$EOF" >> $GITHUB_OUTPUT version=$(xmlstarlet fo -R "$(find . -name addon.xml.in)" | xmlstarlet sel -t -v 'string(/addon/@version)') - echo ::set-output name=version::$version + echo "version=$version" >> $GITHUB_OUTPUT branch=$(echo ${GITHUB_REF#refs/heads/}) - echo ::set-output name=branch::$branch - echo ::set-output name=today::$(date +'%Y-%m-%d') + echo "branch=$branch" >> $GITHUB_OUTPUT + echo "today=$(date +'%Y-%m-%d')" >> $GITHUB_OUTPUT working-directory: ${{ github.event.repository.name }} # Create a commit of the incremented version and changelog, news changes diff --git a/.github/workflows/increment-version.yml b/.github/workflows/increment-version.yml new file mode 100644 index 0000000..c665e94 --- /dev/null +++ b/.github/workflows/increment-version.yml @@ -0,0 +1,63 @@ +name: Increment version when languages are updated + +on: + push: + branches: [ Matrix, Nexus ] + paths: + - '**resource.language.**strings.po' + +jobs: + default: + if: github.repository == 'aassif/pvr.freebox' + runs-on: ubuntu-latest + name: Increment add-on version when languages are updated + + steps: + + - name: Checkout Repository + uses: actions/checkout@v4 + with: + fetch-depth: 0 + path: ${{ github.event.repository.name }} + + - name: Checkout Scripts + uses: actions/checkout@v4 + with: + fetch-depth: 0 + repository: xbmc/weblate-supplementary-scripts + path: scripts + + - name: Set up Python + uses: actions/setup-python@v5 + with: + python-version: '3.9' + + - name: Get changed files + uses: trilom/file-changes-action@v1.2.4 + + - name: Increment add-on version + run: | + python3 ../scripts/binary/increment_version.py $HOME/files.json -c -n + working-directory: ${{ github.event.repository.name }} + + - name: Install dependencies + run: | + sudo apt-get update + sudo apt-get install libxml2-utils xmlstarlet + + - name: Get required variables + id: required-variables + run: | + version=$(xmlstarlet fo -R "$(find . -name addon.xml.in)" | xmlstarlet sel -t -v 'string(/addon/@version)') + echo "version=$version" >> $GITHUB_OUTPUT + working-directory: ${{ github.event.repository.name }} + + - name: Create PR for incrementing add-on versions + uses: peter-evans/create-pull-request@v3.10.0 + with: + commit-message: Add-on version incremented to ${{ steps.required-variables.outputs.version }} from Weblate + title: Add-on version incremented to ${{ steps.required-variables.outputs.version }} from Weblate + body: Add-on version incremented triggered by ${{ github.sha }} + branch: inc-ver + delete-branch: true + path: ./${{ github.event.repository.name }} diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 0e12688..65f94cf 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -14,7 +14,7 @@ jobs: # Checkout the current repository into a directory (repositories name) - name: Checkout Repository - uses: actions/checkout@v2 + uses: actions/checkout@v4 with: fetch-depth: 0 path: ${{ github.event.repository.name }} @@ -23,12 +23,14 @@ jobs: # - libxml2-utils, xmlstarlet: reading news and version from addon.xml.in - name: Install dependencies run: | + sudo apt-get update sudo apt-get install libxml2-utils xmlstarlet # Create the variables required by the following steps # - steps.required-variables.outputs.changes: latest entry in the changelog.txt (if exists), or addon.xml.in news element # - steps.required-variables.outputs.version: version element from addon.xml.in # - steps.required-variables.outputs.branch: branch of the triggering ref + # Note: we use a random EOF for 'changes' as is best practice for for multiline variables - name: Get required variables id: required-variables run: | @@ -37,16 +39,14 @@ jobs: then changes=$(xmlstarlet fo -R "$(find . -name addon.xml.in)" | xmlstarlet sel -t -v 'string(/addon/extension/news)' | awk -v RS= 'NR==1') fi - changes="${changes//'%'/'%25'}" - changes="${changes//$'\n'/'%0A'}" - changes="${changes//$'\r'/'%0D'}" - changes="${changes//$'\\n'/'%0A'}" - changes="${changes//$'\\r'/'%0D'}" - echo ::set-output name=changes::$changes + EOF=$(dd if=/dev/urandom bs=15 count=1 status=none | base64) + echo "changes<<$EOF" >> $GITHUB_OUTPUT + echo "$changes" >> $GITHUB_OUTPUT + echo "$EOF" >> $GITHUB_OUTPUT version=$(xmlstarlet fo -R "$(find . -name addon.xml.in)" | xmlstarlet sel -t -v 'string(/addon/@version)') - echo ::set-output name=version::$version + echo "version=$version" >> $GITHUB_OUTPUT branch=$(echo ${GITHUB_REF#refs/heads/}) - echo ::set-output name=branch::$branch + echo "branch=$branch" >> $GITHUB_OUTPUT working-directory: ${{ github.event.repository.name }} # Create a release at {steps.required-variables.outputs.branch} diff --git a/.github/workflows/sync-addon-metadata-translations.yml b/.github/workflows/sync-addon-metadata-translations.yml new file mode 100644 index 0000000..5709751 --- /dev/null +++ b/.github/workflows/sync-addon-metadata-translations.yml @@ -0,0 +1,58 @@ +name: Sync addon metadata translations + +on: + push: + branches: [ Matrix, Nexus ] + paths: + - '**addon.xml.in' + - '**resource.language.**strings.po' + +jobs: + default: + if: github.repository == 'aassif/pvr.freebox' + runs-on: ubuntu-latest + + strategy: + + fail-fast: false + matrix: + python-version: [ 3.9 ] + + steps: + + - name: Checkout repository + uses: actions/checkout@v4 + with: + path: project + + - name: Checkout sync_addon_metadata_translations repository + uses: actions/checkout@v4 + with: + repository: xbmc/sync_addon_metadata_translations + path: sync_addon_metadata_translations + + - name: Set up Python ${{ matrix.python-version }} + uses: actions/setup-python@v5 + with: + python-version: ${{ matrix.python-version }} + + - name: Install dependencies + run: | + python -m pip install --upgrade pip + python -m pip install sync_addon_metadata_translations/ + + - name: Run sync-addon-metadata-translations + run: | + sync-addon-metadata-translations + working-directory: ./project + + - name: Create PR for sync-addon-metadata-translations changes + uses: peter-evans/create-pull-request@v3.10.0 + with: + commit-message: Sync of addon metadata translations + title: Sync of addon metadata translations + body: Sync of addon metadata translations triggered by ${{ github.sha }} + branch: amt-sync + delete-branch: true + path: ./project + reviewers: gade01