Adding gitbacked version 2023-05-07 (00885c3).
Signed-off-by: Daniel Baumann <daniel@debian.org>
This commit is contained in:
parent
e643a7cdf9
commit
21dcd0a5ac
24 changed files with 2270 additions and 0 deletions
196
plugins/55/gitbacked/.github/workflows/build_release.yml
vendored
Normal file
196
plugins/55/gitbacked/.github/workflows/build_release.yml
vendored
Normal file
|
@ -0,0 +1,196 @@
|
|||
# ------------------------------------------------------------------------------------------
|
||||
# This is a workflow to release this project as a zipped installable artifact.
|
||||
# Release version numbering and release notes generation is following standards defined by:
|
||||
#
|
||||
# https://semver.org
|
||||
# https://keepachangelog.com
|
||||
# https://common-changelog.org
|
||||
#
|
||||
# Note: Since DokuWiki is using version numbering in format YYYY-MM-DD we use this numbering
|
||||
# format rather than a dotted numbering scheme.
|
||||
# The git tag names have to use a 'v' as prefix to the DokuWiki version number.
|
||||
#
|
||||
# ------------------------------------------------------------------------------------------
|
||||
name: Build a release
|
||||
|
||||
on:
|
||||
# Triggers the workflow on push of a tag filtering the tag to meet
|
||||
# semantic version numbering according to https://semver.org
|
||||
# Here we use the DokuWiki conform version number pattern.
|
||||
push:
|
||||
tags:
|
||||
['v[0-9]+-[0-9]+-[0-9]+']
|
||||
|
||||
# Allows you to run this workflow manually from the Actions tab
|
||||
workflow_dispatch:
|
||||
|
||||
jobs:
|
||||
# Ensure that we run on tag references only
|
||||
validate_github_reference:
|
||||
name: Validate the tag reference
|
||||
# The type of runner that the job will run on
|
||||
runs-on: ubuntu-latest
|
||||
# Validate tag
|
||||
if: ${{ !startsWith(github.ref, 'refs/tags/v') }}
|
||||
steps:
|
||||
- run: |
|
||||
echo "The selected git ref=${{ github.ref }} is NOT a valid release tag. Please select a valid release TAG as reference."
|
||||
exit 1
|
||||
|
||||
# Create a release
|
||||
release:
|
||||
name: Release
|
||||
# The type of runner that the job will run on
|
||||
runs-on: ubuntu-latest
|
||||
# Set job wide environment
|
||||
env:
|
||||
APP_NAME: dokuwiki-plugin-gitbacked
|
||||
APP_INFO_FILE: plugin.info.txt
|
||||
APP_INFO_FILE_VERSION_KEY: date
|
||||
BUILD_DIR: build
|
||||
ZIP_EXCLUSIONS: '*.git* .editorconfig /*.github/* /*build/* RELEASE_HEAD.md'
|
||||
|
||||
steps:
|
||||
# Log use case if triggered manually
|
||||
- name: Log use case if triggered manually
|
||||
if: ${{ github.event_name == 'workflow_dispatch' }}
|
||||
run: |
|
||||
echo "Workflow has been triggered manually"
|
||||
|
||||
# Log use case if triggered by push
|
||||
- name: Log use case if triggered by push
|
||||
if: ${{ github.event_name == 'push' }}
|
||||
run: |
|
||||
echo "Workflow has been triggered by push to ${{ github.ref }}"
|
||||
|
||||
# Check out this repo
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v3
|
||||
|
||||
# Set version tags as global environment properties
|
||||
- name: Prepare Version Tags
|
||||
run: |
|
||||
#echo "MAJOR_VERSION=$(echo ${GITHUB_REF/refs\/tags\//} | awk -F'-' '{print $1}')" >> $GITHUB_ENV
|
||||
#echo "MINOR_VERSION=$(echo ${GITHUB_REF/refs\/tags\//} | awk -F'-' '{print $1"-"$2}')" >> $GITHUB_ENV
|
||||
#echo "FULL_VERSION=$(echo ${GITHUB_REF/refs\/tags\//} | awk -F'-' '{print $1"-"$2"-"$3}')" >> $GITHUB_ENV
|
||||
echo "VERSION_TAG=${GITHUB_REF/refs\/tags\//}" >> $GITHUB_ENV
|
||||
echo "RELEASE_VERSION=${GITHUB_REF/refs\/tags\/v/}" >> $GITHUB_ENV
|
||||
echo "APP_INFO_VERSION=$(sed -n -E 's/^${{ env.APP_INFO_FILE_VERSION_KEY }}[ \t]+([0-9-]+).*/\1/p' ${{ env.APP_INFO_FILE }})" >> $GITHUB_ENV
|
||||
|
||||
# Validate app info version and set release name
|
||||
- name: Validate app info version and set release name
|
||||
run: |
|
||||
if [ "${{ env.RELEASE_VERSION }}" != "${{ env.APP_INFO_VERSION }}" ]; then
|
||||
echo "Mismatch of release version=${{ env.RELEASE_VERSION }} and application info version=${{ env.APP_INFO_VERSION }}!" >&2
|
||||
echo "Please review the value for key=${{ env.APP_INFO_FILE_VERSION_KEY }} in file ${{ env.APP_INFO_FILE }}."
|
||||
exit 1
|
||||
fi
|
||||
echo "RELEASE_NAME=Release ${{ env.APP_INFO_VERSION }}" >> $GITHUB_ENV
|
||||
|
||||
- name: Validate CHANGELOG.md for this release version
|
||||
# explanation of sed command:
|
||||
# 1. select lines between SED_VERSION_BEGIN_PATTERN and SED_VERSION_END_PATTERN
|
||||
# 2. invert this selection
|
||||
# 3. delete it
|
||||
# => only selection is remaining in stream
|
||||
run: |
|
||||
SED_VERSION_BEGIN_PATTERN="/^## \\[${{ env.RELEASE_VERSION }}\\]/"
|
||||
SED_VERSION_END_PATTERN="/^## /"
|
||||
echo "Pattern used for sed: ${SED_VERSION_BEGIN_PATTERN},${SED_VERSION_END_PATTERN} ! d"
|
||||
#
|
||||
# Extract the release notes for this RELEASE_VERSION including the line of the previous version:
|
||||
#
|
||||
RELEASE_NOTES_WITH_PREV_VERSION=$(sed -e "${SED_VERSION_BEGIN_PATTERN},${SED_VERSION_END_PATTERN} ! d" CHANGELOG.md)
|
||||
echo ">>>>>> RELEASE_NOTES_WITH_PREV_VERSION - BEGIN >>>>>>"
|
||||
echo "${RELEASE_NOTES_WITH_PREV_VERSION}"
|
||||
echo "<<<<<< RELEASE_NOTES_WITH_PREV_VERSION - END <<<<<<"
|
||||
#
|
||||
# Format the release notes:
|
||||
#
|
||||
# 1. Remove last 2 lines: head -n 2
|
||||
# 2. Remove any empty line from the end: sed -e :a -e '/^\n*$/{$d;N;ba' -e '}'
|
||||
# (s. http://sed.sourceforge.net/sed1line.txt for reference)
|
||||
#
|
||||
#RELEASE_VERSION_NOTES=$(echo "$RELEASE_NOTES_WITH_PREV_VERSION" | head -n -2 | sed -e :a -e '/^\n*$/{$d;N;ba' -e '}')
|
||||
#echo "${RELEASE_VERSION_NOTES}" >> RELEASE.md
|
||||
#printf "\n" >> RELEASE.md
|
||||
#
|
||||
# Extract previous release version:
|
||||
#
|
||||
# 1. Cut the last line only: tail -1
|
||||
# 2. Get the version from the enclosing [] brackets: awk -F "[][]" '{ print $2 }'
|
||||
#
|
||||
PREV_RELEASE_VERSION=$(echo "$RELEASE_NOTES_WITH_PREV_VERSION" | tail -1 | awk -F "[][]" '{ print $2 }')
|
||||
if [ -z "$PREV_RELEASE_VERSION" ]; then
|
||||
EXPECTED_COMPARE_URL="${{ github.server_url }}/${{ github.repository }}/releases/tag/v${{ env.RELEASE_VERSION }}"
|
||||
else
|
||||
EXPECTED_COMPARE_URL="${{ github.server_url }}/${{ github.repository }}/compare/v${PREV_RELEASE_VERSION}..v${{ env.RELEASE_VERSION }}"
|
||||
fi
|
||||
# Validate CHANGELOG.md content
|
||||
IS_OK="true"
|
||||
if ! grep -q "^## \\[${{ env.RELEASE_VERSION }}\\]" CHANGELOG.md; then
|
||||
IS_OK="false"
|
||||
echo "ERROR: CHANGELOG.md does not contain an entry for this release version of format: ## [${{ env.RELEASE_VERSION }}]"
|
||||
fi
|
||||
if ! grep -q "^\\[${{ env.RELEASE_VERSION }}\\]: ${EXPECTED_COMPARE_URL}" CHANGELOG.md; then
|
||||
IS_OK="false"
|
||||
echo "ERROR: CHANGELOG.md does not contain a line with a compare link of format: [${{ env.RELEASE_VERSION }}]: ${EXPECTED_COMPARE_URL}"
|
||||
fi
|
||||
if [ "$IS_OK" != "true" ]; then
|
||||
echo "Please review CHANGELOG.md and update it for the content expected."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Prepare release notes and build directory
|
||||
- name: Prepare release notes and build directory
|
||||
run: |
|
||||
mkdir ${{ env.BUILD_DIR }}
|
||||
#cp ./README.md ${{ env.BUILD_DIR }}/README.md
|
||||
touch ${{ env.BUILD_DIR }}/README.md
|
||||
cp ./CHANGELOG.md ${{ env.BUILD_DIR }}/CHANGELOG.md
|
||||
cp ./.github/workflows/resources/RELEASE_HEAD.md ${{ env.BUILD_DIR }}/RELEASE_HEAD.md
|
||||
|
||||
# Format the filename of this release
|
||||
- name: Format release filename
|
||||
id: format_release_filename
|
||||
run: |
|
||||
echo "FILE_NAME=${{ env.APP_NAME }}-${{ env.APP_INFO_VERSION }}.zip" >> $GITHUB_OUTPUT
|
||||
|
||||
# Create archive file
|
||||
- name: Build release archive
|
||||
uses: GHCICD/zip-release@master
|
||||
with:
|
||||
type: 'zip'
|
||||
filename: ${{ env.BUILD_DIR }}/${{ steps.format_release_filename.outputs.FILE_NAME }}
|
||||
exclusions: ${{ env.ZIP_EXCLUSIONS }}
|
||||
|
||||
# Create release notes by release-notes-from-changelog
|
||||
- name: Create release notes by GHCICD/release-notes-from-changelog@v1
|
||||
uses: GHCICD/release-notes-from-changelog@v1
|
||||
with:
|
||||
version: ${{ env.RELEASE_VERSION }}
|
||||
working-directory: ${{ env.BUILD_DIR }}
|
||||
|
||||
- name: Log RELEASE.md
|
||||
run: |
|
||||
echo ">>>>> build/RELEASE.md:"
|
||||
cat ${{ env.BUILD_DIR }}/RELEASE.md
|
||||
echo "<<<<<"
|
||||
# echo ">>>>> build/CHANGELOG.md:"
|
||||
# cat ${{ env.BUILD_DIR }}/CHANGELOG.md
|
||||
# echo "<<<<<"
|
||||
|
||||
# Create release with info from CHANGELOG.md
|
||||
- name: Create GitHub release by ncipollo/release-action@v1
|
||||
id: create_release
|
||||
uses: ncipollo/release-action@v1
|
||||
with:
|
||||
token: ${{ secrets.GITHUB_TOKEN }}
|
||||
name: ${{ env.RELEASE_NAME }}
|
||||
tag: ${{ env.VERSION_TAG }}
|
||||
bodyFile: ${{ env.BUILD_DIR }}/RELEASE.md
|
||||
artifacts: ${{ env.BUILD_DIR }}/${{ steps.format_release_filename.outputs.FILE_NAME }}
|
||||
artifactContentType: application/zip
|
||||
#
|
||||
# EOF
|
||||
#
|
Loading…
Add table
Add a link
Reference in a new issue