mirror of
https://github.com/Portabase/portabase.git
synced 2026-07-14 11:16:13 +02:00
129 lines
3.8 KiB
YAML
129 lines
3.8 KiB
YAML
name: GitHub Release
|
|
|
|
on:
|
|
workflow_call:
|
|
inputs:
|
|
prerelease:
|
|
required: false
|
|
type: boolean
|
|
default: false
|
|
make_latest:
|
|
required: false
|
|
type: boolean
|
|
default: false
|
|
discord_title:
|
|
required: true
|
|
type: string
|
|
discord_color:
|
|
required: true
|
|
type: number
|
|
discord_footer:
|
|
required: true
|
|
type: string
|
|
secrets:
|
|
DISCORD_WEBHOOK:
|
|
required: true
|
|
GH_TOKEN:
|
|
required: true
|
|
|
|
jobs:
|
|
create-release:
|
|
runs-on: ubuntu-latest
|
|
permissions:
|
|
contents: write
|
|
steps:
|
|
- name: Check out the repo
|
|
uses: actions/checkout@v4
|
|
with:
|
|
fetch-depth: 0
|
|
|
|
- name: Build Changelog
|
|
id: build_changelog
|
|
uses: mikepenz/release-changelog-builder-action@v5
|
|
with:
|
|
mode: "COMMIT"
|
|
configurationJson: |
|
|
{
|
|
"template": "#{{CHANGELOG}}",
|
|
"categories": [
|
|
{
|
|
"title": "## Feature",
|
|
"labels": ["feat", "feature"]
|
|
},
|
|
{
|
|
"title": "## Fix",
|
|
"labels": ["fix", "bug"]
|
|
},
|
|
{
|
|
"title": "## Other",
|
|
"labels": []
|
|
}
|
|
],
|
|
"label_extractor": [
|
|
{
|
|
"pattern": "^(build|chore|ci|docs|feat|fix|perf|refactor|revert|style|test){1}(\([\w\-\.]+\))?(!)?: ([\w ])+([\s\S]*)",
|
|
"on_property": "title",
|
|
"target": "$1"
|
|
}
|
|
]
|
|
}
|
|
env:
|
|
GITHUB_TOKEN: ${{ secrets.GH_TOKEN }}
|
|
|
|
- name: Create GitHub Release
|
|
uses: softprops/action-gh-release@v2
|
|
with:
|
|
generate_release_notes: false
|
|
body: ${{ steps.build_changelog.outputs.changelog }}
|
|
prerelease: ${{ inputs.prerelease }}
|
|
make_latest: ${{ inputs.make_latest }}
|
|
env:
|
|
GITHUB_TOKEN: ${{ secrets.GH_TOKEN }}
|
|
|
|
- name: Send Discord Notification
|
|
env:
|
|
DISCORD_WEBHOOK: ${{ secrets.DISCORD_WEBHOOK }}
|
|
GH_TOKEN: ${{ secrets.GH_TOKEN }}
|
|
run: |
|
|
RELEASE_INFO=$(gh release view "${{ github.ref_name }}" -R ${{ github.repository }} --json name,url,body,author)
|
|
|
|
RELEASE_TITLE=$(echo "$RELEASE_INFO" | jq -r .name)
|
|
if [ -z "$RELEASE_TITLE" ] || [ "$RELEASE_TITLE" = "null" ]; then RELEASE_TITLE="${{ github.ref_name }}"; fi
|
|
|
|
RELEASE_URL=$(echo "$RELEASE_INFO" | jq -r .url)
|
|
RELEASE_BODY=$(echo "$RELEASE_INFO" | jq -r .body)
|
|
|
|
AUTHOR_NAME="Portabase"
|
|
AUTHOR_ICON="https://github.com/Portabase.png"
|
|
|
|
PAYLOAD=$(jq -n \
|
|
--arg title "$RELEASE_TITLE" \
|
|
--arg description "$RELEASE_BODY" \
|
|
--arg url "$RELEASE_URL" \
|
|
--arg author "$AUTHOR_NAME" \
|
|
--arg icon "$AUTHOR_ICON" \
|
|
--arg discord_title "${{ inputs.discord_title }}" \
|
|
--arg discord_footer "${{ inputs.discord_footer }}" \
|
|
--argjson discord_color ${{ inputs.discord_color }} \
|
|
'{
|
|
content: $discord_title,
|
|
embeds: [{
|
|
title: $title,
|
|
url: $url,
|
|
description: $description,
|
|
color: $discord_color,
|
|
author: {
|
|
name: $author,
|
|
icon_url: $icon
|
|
},
|
|
footer: {
|
|
text: $discord_footer
|
|
}
|
|
}]
|
|
}'
|
|
)
|
|
|
|
curl -H "Content-Type: application/json" \
|
|
-d "$PAYLOAD" \
|
|
"$DISCORD_WEBHOOK"
|