diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml new file mode 100644 index 0000000..8ad75ed --- /dev/null +++ b/.github/workflows/release.yml @@ -0,0 +1,76 @@ +name: Release +on: + push: + tags: + - 'v*' +jobs: + build: + name: Release service.iptv.manager + if: startsWith(github.ref, 'refs/tags/') # prevent from running if it's not a tag + runs-on: ubuntu-latest + steps: + - name: Checkout code + uses: actions/checkout@v2 + + - name: Build zip files + id: build + run: | + sudo apt-get install libxml2-utils + make multizip release=1 + echo ::set-output name=leia-filename::$(cd ..;ls service.iptv.manager*.zip | grep -v '+matrix.' | head -1) + echo ::set-output name=matrix-filename::$(cd ..;ls service.iptv.manager*+matrix.*.zip | head -1) + + - name: Get body + id: get-body + run: | + description=$(sed '1,6d;/^## /,$d' CHANGELOG.md) + echo $description + description="${description//'%'/'%25'}" + description="${description//$'\n'/'%0A'}" + description="${description//$'\r'/'%0D'}" + echo ::set-output name=body::$description + + - name: Create Release + id: create_release + uses: actions/create-release@v1 + env: + GITHUB_TOKEN: ${{ secrets.GH_TOKEN }} + with: + tag_name: ${{ github.ref }} + release_name: ${{ github.ref }} + body: ${{ steps.get-body.outputs.body }} + draft: false + prerelease: false + + - name: Upload Leia zip + uses: actions/upload-release-asset@v1 + env: + GITHUB_TOKEN: ${{ secrets.GH_TOKEN }} + with: + upload_url: ${{ steps.create_release.outputs.upload_url }} + asset_name: ${{ steps.build.outputs.leia-filename }} + asset_path: ../${{ steps.build.outputs.leia-filename }} + asset_content_type: application/zip + + - name: Upload Matrix zip + uses: actions/upload-release-asset@v1 + env: + GITHUB_TOKEN: ${{ secrets.GH_TOKEN }} + with: + upload_url: ${{ steps.create_release.outputs.upload_url }} + asset_name: ${{ steps.build.outputs.matrix-filename }} + asset_path: ../${{ steps.build.outputs.matrix-filename }} + asset_content_type: application/zip + + - name: Generate distribution zip and submit to official kodi repository + id: kodi-addon-submitter + uses: xbmc/action-kodi-addon-submitter@v1.2 + with: + kodi-repository: repo-scripts + addon-id: service.iptv.manager + kodi-version: leia + kodi-matrix: true + env: + GH_USERNAME: ${{ secrets.GH_USERNAME }} + GH_TOKEN: ${{ secrets.GH_TOKEN }} + EMAIL: ${{ secrets.EMAIL }} diff --git a/Makefile b/Makefile index fdee712..dac1895 100644 --- a/Makefile +++ b/Makefile @@ -1,12 +1,18 @@ export PYTHONPATH := $(CURDIR):$(CURDIR)/tests PYTHON := python +KODI_PYTHON_ABIS := 3.0.0 2.26.0 -# Collect information to build as sensible package name name = $(shell xmllint --xpath 'string(/addon/@id)' addon.xml) version = $(shell xmllint --xpath 'string(/addon/@version)' addon.xml) git_branch = $(shell git rev-parse --abbrev-ref HEAD) git_hash = $(shell git rev-parse --short HEAD) -zip_name = $(name)-$(version)-$(git_branch)-$(git_hash).zip + +ifdef release + zip_name = $(name)-$(version).zip +else + zip_name = $(name)-$(version)-$(git_branch)-$(git_hash).zip +endif + include_files = addon.xml context.py default.py LICENSE README.md resources/ service.py include_paths = $(patsubst %,$(name)/%,$(include_files)) exclude_files = \*.new \*.orig \*.pyc \*.pyo @@ -58,6 +64,27 @@ build: clean cd ..; zip -r $(zip_name) $(include_paths) -x $(exclude_files) @echo "Successfully wrote package as: ../$(zip_name)" -release: build - rm -rf ../repo-scripts/$(name)/* - unzip ../$(zip_name) -d ../repo-scripts/ +release: +ifneq ($(release),) + @github_changelog_generator -u add-ons -p service.iptv.manager --no-issues --future-release v$(release); + + @echo "cd /addon/@version\nset $$release\nsave\nbye" | xmllint --shell addon.xml; \ +# date=$(shell date '+%Y-%m-%d'); \ +# echo "cd /addon/extension[@point='xbmc.addon.metadata']/news\nset v$$release ($$date)\nsave\nbye" | xmllint --shell addon.xml; \ + + # Next steps to release: + # - Modify the news-section of addons.xml + # - git add . && git commit -m "Prepare for v$(release)" && git push + # - git tag v$(release) && git push --tags +else + @echo "Usage: make release release=1.0.0" +endif + +multizip: clean + @-$(foreach abi,$(KODI_PYTHON_ABIS), \ + echo "cd /addon/requires/import[@addon='xbmc.python']/@version\nset $(abi)\nsave\nbye" | xmllint --shell addon.xml; \ + matrix=$(findstring $(abi), $(word 1,$(KODI_PYTHON_ABIS))); \ + if [ $$matrix ]; then version=$(version)+matrix.1; else version=$(version); fi; \ + echo "cd /addon/@version\nset $$version\nsave\nbye" | xmllint --shell addon.xml; \ + make build; \ + )