diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml new file mode 100644 index 0000000..f413289 --- /dev/null +++ b/.github/workflows/release.yml @@ -0,0 +1,66 @@ +name: Make Release +# Create a release on the given branch +# Release and tag name format will be - +# 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@v2 + 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 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 + - 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 + 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 + version=$(xmlstarlet fo -R "$(find . -name addon.xml.in)" | xmlstarlet sel -t -v 'string(/addon/@version)') + echo ::set-output name=version::$version + branch=$(echo ${GITHUB_REF#refs/heads/}) + echo ::set-output name=branch::$branch + 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. 1.0.0-Matrix + # - 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 }}