mirror of
https://github.com/wfxr/forgit.git
synced 2026-09-10 07:16:23 -04:00
Meta: Add GitHub release action
The action is executed on every tag and creates a GitHub release. The release contains a .tar.gz asset and a changelog consisting of all commit messages since the previous tag. Commits with a commit message starting with "Meta" are excluded from the changelog.
This commit is contained in:
parent
fe4ac0f9f2
commit
eedf3ae890
27
.github/scripts/changelog.sh
vendored
Executable file
27
.github/scripts/changelog.sh
vendored
Executable file
|
|
@ -0,0 +1,27 @@
|
|||
#!/bin/bash
|
||||
|
||||
url=$(git remote get-url origin | sed -r 's/(.*)\.git/\1/')
|
||||
|
||||
previous_tag=$(git describe --tags --abbrev=0 HEAD~)
|
||||
|
||||
echo "Changes since $previous_tag:"
|
||||
echo
|
||||
|
||||
# Loop through all commits since previous tag
|
||||
for rev in $(git log $previous_tag..HEAD --format="%H" --reverse --no-merges)
|
||||
do
|
||||
summary=$(git log $rev~..$rev --format="%s")
|
||||
# Exclude commits starting with "Meta"
|
||||
if [[ $summary != Meta* ]]
|
||||
then
|
||||
# Print markdown list of commit headlines
|
||||
echo "* [$summary]($url/commit/$rev)"
|
||||
# Append commit body indented (blank lines and signoff trailer removed)
|
||||
git log $rev~..$rev --format="%b" | sed '/^\s*$/d' | sed '/^Signed-off-by:/d' | \
|
||||
while read -r line
|
||||
do
|
||||
# Escape markdown formatting symbols _ * `
|
||||
echo " $line" | sed 's/_/\\_/g' | sed 's/`/\\`/g' | sed 's/\*/\\\*/g'
|
||||
done
|
||||
fi
|
||||
done
|
||||
8
.github/workflows/ci.yaml
vendored
8
.github/workflows/ci.yaml
vendored
|
|
@ -4,7 +4,13 @@ name: ci
|
|||
|
||||
# Controls when the action will run. Triggers the workflow on push or pull request
|
||||
# events, but only for the master branch
|
||||
on: [push, pull_request]
|
||||
on:
|
||||
push:
|
||||
branches:
|
||||
- '**'
|
||||
pull_request:
|
||||
branches:
|
||||
- '**'
|
||||
|
||||
# A workflow run is made up of one or more jobs that can run sequentially or in parallel
|
||||
jobs:
|
||||
|
|
|
|||
29
.github/workflows/release.yaml
vendored
Normal file
29
.github/workflows/release.yaml
vendored
Normal file
|
|
@ -0,0 +1,29 @@
|
|||
name: Release
|
||||
|
||||
on:
|
||||
push:
|
||||
tags:
|
||||
- '**'
|
||||
|
||||
jobs:
|
||||
|
||||
release:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v2
|
||||
with:
|
||||
fetch-depth: 0
|
||||
|
||||
- name: Create Package
|
||||
run: tar -czf forgit-${{github.ref_name}}.tar.gz --exclude LICENSE --exclude README.md *
|
||||
|
||||
- name: Generate Changelog
|
||||
run: .github/scripts/changelog.sh > CHANGELOG.md
|
||||
|
||||
- name: Release
|
||||
uses: softprops/action-gh-release@v1
|
||||
with:
|
||||
body_path: CHANGELOG.md
|
||||
files: forgit-${{github.ref_name}}.tar.gz
|
||||
Loading…
Reference in a new issue