-
Notifications
You must be signed in to change notification settings - Fork 10
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
b0d14d3
commit cc1706e
Showing
3 changed files
with
278 additions
and
0 deletions.
There are no files selected for viewing
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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,149 @@ | ||
name: Changelog and Release | ||
# Update the changelog and news(optionally), bump the version, and create a release | ||
# | ||
# The release is created on the given branch, release and tag name format will be <version>-<branch> and | ||
# the body of the release will be created from the changelog.txt or news element in the addon.xml.in | ||
# | ||
# options: | ||
# - version_type: 'minor' / 'micro' # whether to do a minor or micro version bump | ||
# - changelog_text: string to add to the changelog and news | ||
# - update_news: 'true' / 'false' # whether to update the news in the addon.xml.in | ||
# - add_date: 'true' / 'false' # Add date to version number in changelog and news. ie. v1.0.1 (2021-7-17) | ||
|
||
on: | ||
workflow_dispatch: | ||
inputs: | ||
version_type: | ||
description: 'Create a ''minor'' or ''micro'' release?' | ||
required: true | ||
default: 'minor' | ||
changelog_text: | ||
description: 'Input the changes you''d like to add to the changelogs. Your text should be encapsulated in "''s with line feeds represented by literal \n''s. ie. "This is the first change\nThis is the second change"' | ||
required: true | ||
default: '' | ||
update_news: | ||
description: 'Update news in addon.xml.in? [true|false]' | ||
required: true | ||
default: 'true' | ||
add_date: | ||
description: 'Add date to version number in changelog and news. ie. "v1.0.1 (2021-7-17)" [true|false]' | ||
required: true | ||
default: 'false' | ||
|
||
jobs: | ||
default: | ||
runs-on: ubuntu-latest | ||
name: Changelog and Release | ||
|
||
steps: | ||
|
||
# Checkout the current repository into a directory (repositories name) | ||
- name: Checkout Repository | ||
uses: actions/checkout@v4 | ||
with: | ||
fetch-depth: 0 | ||
path: ${{ github.event.repository.name }} | ||
|
||
# Checkout the required scripts from xbmc/binary-addon-scripts into the 'scripts' directory | ||
- name: Checkout Scripts | ||
uses: actions/checkout@v4 | ||
with: | ||
fetch-depth: 0 | ||
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@v5 | ||
with: | ||
python-version: '3.9' | ||
|
||
# Run the python script to increment the version, changelog and news | ||
- name: Increment version and update changelogs | ||
run: | | ||
arguments= | ||
if [[ ${{ github.event.inputs.update_news }} == true ]] ; | ||
then | ||
arguments=$(echo $arguments && echo --update-news) | ||
fi | ||
if [[ ${{ github.event.inputs.add_date }} == true ]] ; | ||
then | ||
arguments=$(echo $arguments && echo --add-date) | ||
fi | ||
python3 ../scripts/changelog_and_release.py ${{ github.event.inputs.version_type }} ${{ github.event.inputs.changelog_text }} $arguments | ||
working-directory: ${{ github.event.repository.name }} | ||
|
||
# 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 | ||
# - 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: | | ||
changes=$(cat "$(find . -name changelog.txt)" | awk -v RS= 'NR==1') | ||
if [ -z "$changes" ] ; | ||
then | ||
changes=$(xmlstarlet fo -R "$(find . -name addon.xml.in)" | xmlstarlet sel -t -v 'string(/addon/extension/news)' | awk -v RS= 'NR==1') | ||
fi | ||
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 "version=$version" >> $GITHUB_OUTPUT | ||
branch=$(echo ${GITHUB_REF#refs/heads/}) | ||
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 | ||
# Commit message (add_date=false): changelog and version v{steps.required-variables.outputs.version} | ||
# Commit message (add_date=true): changelog and version v{steps.required-variables.outputs.version} ({steps.required-variables.outputs.today}) | ||
- name: Commit changes | ||
run: | | ||
git config --local user.email "41898282+github-actions[bot]@users.noreply.github.com" | ||
git config --local user.name "github-actions[bot]" | ||
commit_message="changelog and version v${{ steps.required-variables.outputs.version }}" | ||
if [[ ${{ github.event.inputs.add_date }} == true ]] ; | ||
then | ||
commit_message="$commit_message (${{ steps.required-variables.outputs.today }})" | ||
fi | ||
git commit -m "$commit_message" -a | ||
working-directory: ${{ github.event.repository.name }} | ||
|
||
# Push the commit(s) created above to the triggering branch | ||
- name: Push changes | ||
uses: ad-m/github-push-action@master | ||
with: | ||
branch: ${{ github.ref }} | ||
directory: ${{ github.event.repository.name }} | ||
|
||
# Sleep for 60 seconds to allow for any delays in the push | ||
- name: Sleep for 60 seconds | ||
run: sleep 60s | ||
shell: bash | ||
|
||
# Create a release at {steps.required-variables.outputs.branch} | ||
# - tag and release name format: {steps.required-variables.outputs.version}-{steps.required-variables.outputs.branch} ie. 21.0.0-Omega | ||
# - release body: {steps.required-variables.outputs.changes} | ||
- name: Create Release | ||
id: create-release | ||
uses: actions/create-release@v1 | ||
env: | ||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | ||
with: | ||
tag_name: ${{ steps.required-variables.outputs.version }}-${{ steps.required-variables.outputs.branch }} | ||
release_name: ${{ steps.required-variables.outputs.version }}-${{ steps.required-variables.outputs.branch }} | ||
body: ${{ steps.required-variables.outputs.changes }} | ||
draft: false | ||
prerelease: false | ||
commitish: ${{ steps.required-variables.outputs.branch }} |
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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,63 @@ | ||
name: Increment version when languages are updated | ||
|
||
on: | ||
push: | ||
branches: [ Matrix, Nexus, Omega ] | ||
paths: | ||
- '**resource.language.**strings.po' | ||
|
||
jobs: | ||
default: | ||
if: github.repository == 'xbmc/screensaver.pyro' | ||
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/[email protected] | ||
|
||
- 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/[email protected] | ||
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 }} |
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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,66 @@ | ||
name: Make Release | ||
# Create a release on the given branch | ||
# Release and tag name format will be <version>-<branch> | ||
# The body of the release will be created from the changelog.txt or news element in the addon.xml.in | ||
|
||
on: workflow_dispatch | ||
|
||
jobs: | ||
default: | ||
runs-on: ubuntu-latest | ||
name: Make Release | ||
|
||
steps: | ||
|
||
# Checkout the current repository into a directory (repositories name) | ||
- name: Checkout Repository | ||
uses: actions/checkout@v4 | ||
with: | ||
fetch-depth: 0 | ||
path: ${{ github.event.repository.name }} | ||
|
||
# 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 | ||
# 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: | | ||
changes=$(cat "$(find . -name changelog.txt)" | awk -v RS= 'NR==1') | ||
if [ -z "$changes" ] ; | ||
then | ||
changes=$(xmlstarlet fo -R "$(find . -name addon.xml.in)" | xmlstarlet sel -t -v 'string(/addon/extension/news)' | awk -v RS= 'NR==1') | ||
fi | ||
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 "version=$version" >> $GITHUB_OUTPUT | ||
branch=$(echo ${GITHUB_REF#refs/heads/}) | ||
echo "branch=$branch" >> $GITHUB_OUTPUT | ||
working-directory: ${{ github.event.repository.name }} | ||
|
||
# Create a release at {steps.required-variables.outputs.branch} | ||
# - tag and release name format: {steps.required-variables.outputs.version}-{steps.required-variables.outputs.branch} ie. 21.0.0-Omega | ||
# - release body: {steps.required-variables.outputs.changes} | ||
- name: Create Release | ||
id: create-release | ||
uses: actions/create-release@v1 | ||
env: | ||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | ||
with: | ||
tag_name: ${{ steps.required-variables.outputs.version }}-${{ steps.required-variables.outputs.branch }} | ||
release_name: ${{ steps.required-variables.outputs.version }}-${{ steps.required-variables.outputs.branch }} | ||
body: ${{ steps.required-variables.outputs.changes }} | ||
draft: false | ||
prerelease: false | ||
commitish: ${{ steps.required-variables.outputs.branch }} |