Make Release #99
Workflow file for this run
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# Based on https://github.com/im85288/service.upnext/blob/master/.github/workflows/release.yml | |
name: Make Release | |
on: | |
workflow_dispatch: | |
push: | |
tags: | |
- 'v*' | |
- '*-dev' | |
jobs: | |
release: | |
if: github.repository == 'anxdpanic/plugin.video.youtube' || github.event_name == 'workflow_dispatch' | |
name: Make Release | |
runs-on: ubuntu-latest | |
permissions: | |
contents: write | |
steps: | |
- name: Release Status | |
id: release | |
run: | | |
version=${GITHUB_REF/refs\/tags\//} | |
if [[ $version == *[-+]@(alpha|beta|dev)*([.0-9a-z]) ]] ; | |
then | |
echo "pre-release=true" >> $GITHUB_OUTPUT | |
else | |
echo "pre-release=false" >> $GITHUB_OUTPUT | |
fi | |
- name: Checkout Add-on | |
uses: actions/checkout@v4 | |
with: | |
path: ${{ github.event.repository.name }} | |
- name: Install dependencies | |
run: | | |
sudo apt-get update | |
sudo apt-get install libxml2-utils xmlstarlet zip | |
- name: Get Changelog | |
id: changelog | |
run: | | |
readarray -t changes < <(awk '/^## /{rel_num++} {if(rel_num==2){exit} if(rel_num==1){print}}' changelog.txt) | |
echo "body<<${{ secrets.GITHUB_TOKEN }}" >> $GITHUB_OUTPUT | |
for change in "${changes[@]}"; do | |
echo "${change}" >> $GITHUB_OUTPUT | |
done | |
echo "${{ secrets.GITHUB_TOKEN }}" >> $GITHUB_OUTPUT | |
working-directory: ${{ github.event.repository.name }} | |
- name: Create Zip | |
id: zip | |
run: | | |
mv .git .. | |
rm -rf .??* | |
rm *.md | |
news=$(awk '/^## /{rel_num++} {if(rel_num==2){exit} if(rel_num==1){print}}' changelog.txt | sed -E 's/ ?#[[:digit:]]+[., ]?//g;s/\r//') | |
version=$(xmlstarlet sel -t -v 'string(/addon/@version)' addon.xml) | |
xmlstarlet ed -L -P \ | |
-s '/addon/extension[@point="xbmc.addon.metadata"]' -t elem -n news -v "${news:0:1500}" \ | |
addon.xml | |
filename=${{ github.event.repository.name }}-${version}.zip | |
cd .. | |
zip -r $filename ${{ github.event.repository.name }} | |
mv .git ${{ github.event.repository.name }} | |
echo "filename=$filename" >> $GITHUB_OUTPUT | |
working-directory: ${{ github.event.repository.name }} | |
- name: Create Zip (Unofficial) | |
id: zip-unofficial | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
run: | | |
git reset --hard ${{ github.sha }} | |
git checkout . | |
git fetch origin nexus-unofficial | |
git -c user.email="\<\>" -c user.name="make-release" merge -X theirs --allow-unrelated-histories origin/nexus-unofficial | |
git clean -fdx | |
mv .git .. | |
rm -rf .??* | |
rm *.md | |
news=$(awk '/^## /{rel_num++} {if(rel_num==2){exit} if(rel_num==1){print}}' changelog.txt | sed -E 's/ ?#[[:digit:]]+[., ]?//g;s/\r//') | |
version=$(xmlstarlet sel -t -v 'string(/addon/@version)' addon.xml) | |
version="${version}+unofficial.1" | |
version=${version/+/!}; version=${version//+/.}; version=${version/!/+} | |
xmlstarlet ed -L -P \ | |
-s '/addon/extension[@point="xbmc.addon.metadata"]' -t elem -n news -v "${news:0:1500}" \ | |
-u '/addon/@version' -v "${version}" \ | |
addon.xml | |
filename=${{ github.event.repository.name }}-${version}.zip | |
cd .. | |
zip -r $filename ${{ github.event.repository.name }} | |
mv .git ${{ github.event.repository.name }} | |
echo "filename=$filename" >> $GITHUB_OUTPUT | |
working-directory: ${{ github.event.repository.name }} | |
- name: Create Zip (Leia) | |
id: zip-leia | |
run: | | |
git reset --hard ${{ github.sha }} | |
git checkout . | |
git clean -fdx | |
mv .git .. | |
rm -rf .??* | |
rm *.md | |
news=$(awk '/^## /{rel_num++} {if(rel_num==2){exit} if(rel_num==1){print}}' changelog.txt | sed -E 's/ ?#[[:digit:]]+[., ]?//g;s/\r//') | |
version=$(xmlstarlet sel -t -v 'string(/addon/@version)' addon.xml) | |
version="${version}+leia.1" | |
version=${version/+/!}; version=${version//+/.}; version=${version/!/+} | |
xmlstarlet ed -L -P \ | |
-s '/addon/extension[@point="xbmc.addon.metadata"]' -t elem -n news -v "${news:0:1500}" \ | |
-u '/addon/@version' -v "${version}" \ | |
-u '/addon/requires/import[@addon="xbmc.python"]/@version' -v '2.26.0' \ | |
-d '/addon/requires/import[@addon="script.module.requests"]/@version' \ | |
-d '/addon/requires/import[@addon="inputstream.adaptive"]/@version' \ | |
-d '/addon/requires/import[@addon="script.module.inputstreamhelper"]/@version' \ | |
-s '/addon/requires' -t elem -n import_temp \ | |
-s '/addon/requires/import_temp' -t attr -n addon -v 'script.module.kodi-six' \ | |
-r '/addon/requires/import_temp' -v import \ | |
addon.xml | |
filename=${{ github.event.repository.name }}-${version}.zip | |
cd .. | |
zip -r $filename ${{ github.event.repository.name }} | |
mv .git ${{ github.event.repository.name }} | |
echo "filename=$filename" >> $GITHUB_OUTPUT | |
working-directory: ${{ github.event.repository.name }} | |
- name: Create Zip (Leia-Unofficial) | |
id: zip-unofficial-leia | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
run: | | |
git reset --hard ${{ github.sha }} | |
git checkout . | |
git fetch origin nexus-unofficial | |
git -c user.email="\<\>" -c user.name="make-release" merge -X theirs --allow-unrelated-histories origin/nexus-unofficial | |
git clean -fdx | |
mv .git .. | |
rm -rf .??* | |
rm *.md | |
news=$(awk '/^## /{rel_num++} {if(rel_num==2){exit} if(rel_num==1){print}}' changelog.txt | sed -E 's/ ?#[[:digit:]]+[., ]?//g;s/\r//') | |
version=$(xmlstarlet sel -t -v 'string(/addon/@version)' addon.xml) | |
version="${version}+leia.unofficial.1" | |
version=${version/+/!}; version=${version//+/.}; version=${version/!/+} | |
xmlstarlet ed -L -P \ | |
-s '/addon/extension[@point="xbmc.addon.metadata"]' -t elem -n news -v "${news:0:1500}" \ | |
-u '/addon/@version' -v "${version}" \ | |
-u '/addon/requires/import[@addon="xbmc.python"]/@version' -v '2.26.0' \ | |
-d '/addon/requires/import[@addon="script.module.requests"]/@version' \ | |
-d '/addon/requires/import[@addon="inputstream.adaptive"]/@version' \ | |
-d '/addon/requires/import[@addon="script.module.inputstreamhelper"]/@version' \ | |
-s '/addon/requires' -t elem -n import_temp \ | |
-s '/addon/requires/import_temp' -t attr -n addon -v 'script.module.kodi-six' \ | |
-r '/addon/requires/import_temp' -v import \ | |
addon.xml | |
filename=${{ github.event.repository.name }}-${version}.zip | |
cd .. | |
zip -r $filename ${{ github.event.repository.name }} | |
mv .git ${{ github.event.repository.name }} | |
echo "filename=$filename" >> $GITHUB_OUTPUT | |
working-directory: ${{ github.event.repository.name }} | |
- name: Create Release | |
id: create-release | |
uses: actions/create-release@v1 | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
with: | |
tag_name: ${{ github.ref }} | |
release_name: ${{ github.ref }} | |
body: ${{ steps.changelog.outputs.body }} | |
draft: false | |
prerelease: ${{ steps.release.outputs.pre-release }} | |
- name: Upload Zip | |
id: upload | |
uses: actions/upload-release-asset@v1 | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
with: | |
upload_url: ${{ steps.create-release.outputs.upload_url }} | |
asset_name: ${{ steps.zip.outputs.filename }} | |
asset_path: ${{ steps.zip.outputs.filename }} | |
asset_content_type: application/zip | |
- name: Upload Zip (Unofficial) | |
id: upload-unofficial | |
uses: actions/upload-release-asset@v1 | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
with: | |
upload_url: ${{ steps.create-release.outputs.upload_url }} | |
asset_name: ${{ steps.zip-unofficial.outputs.filename }} | |
asset_path: ${{ steps.zip-unofficial.outputs.filename }} | |
asset_content_type: application/zip | |
- name: Upload Zip (Leia) | |
id: upload-leia | |
uses: actions/upload-release-asset@v1 | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
with: | |
upload_url: ${{ steps.create-release.outputs.upload_url }} | |
asset_name: ${{ steps.zip-leia.outputs.filename }} | |
asset_path: ${{ steps.zip-leia.outputs.filename }} | |
asset_content_type: application/zip | |
- name: Upload Zip (Leia-Unofficial) | |
id: upload-unofficial-leia | |
uses: actions/upload-release-asset@v1 | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
with: | |
upload_url: ${{ steps.create-release.outputs.upload_url }} | |
asset_name: ${{ steps.zip-unofficial-leia.outputs.filename }} | |
asset_path: ${{ steps.zip-unofficial-leia.outputs.filename }} | |
asset_content_type: application/zip |