Skip to content

Commit

Permalink
Add a release workflow (#45)
Browse files Browse the repository at this point in the history
* Add a release workflow

This PR adds a GitHub CI workflow to push to the official Kodi
repositories.

* Cleanup

Co-authored-by: Michaël Arnauts <[email protected]>
  • Loading branch information
dagwieers and michaelarnauts committed Nov 3, 2020
1 parent 433a49b commit 3a18c21
Show file tree
Hide file tree
Showing 2 changed files with 108 additions and 5 deletions.
76 changes: 76 additions & 0 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
@@ -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/[email protected]
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 }}
37 changes: 32 additions & 5 deletions Makefile
Original file line number Diff line number Diff line change
@@ -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
Expand Down Expand Up @@ -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; \
)

0 comments on commit 3a18c21

Please sign in to comment.