mirror of
https://github.com/Deutscher-Tischfussballbund/com_sportsmanager.git
synced 2026-06-10 06:27:52 +00:00
122 lines
4.8 KiB
YAML
122 lines
4.8 KiB
YAML
# This workflow will run release using node and then publish a package to GitHub Packages when a release is created
|
|
# For more information see: https://docs.github.com/en/actions/publishing-packages/publishing-nodejs-packages
|
|
|
|
name: Sportsmanager Release
|
|
|
|
on:
|
|
push:
|
|
tags:
|
|
- 'v[0-9]+.[0-9]+.[0-9]+' # run only on version tags like v1.0.0
|
|
jobs:
|
|
build:
|
|
runs-on: ubuntu-latest
|
|
|
|
steps:
|
|
- name: Checkout code
|
|
uses: actions/checkout@v4
|
|
with:
|
|
ref: sportsmanager2-prod
|
|
|
|
- name: Set up Node.js
|
|
uses: actions/setup-node@v4
|
|
with:
|
|
node-version: 20
|
|
|
|
- name: Install npm dependencies
|
|
run: npm ci
|
|
|
|
- name: Get version from git tag
|
|
run: echo "VERSION=${GITHUB_REF#refs/tags/}" >> $GITHUB_ENV
|
|
|
|
- name: Set DATE
|
|
run: echo "DATE=$(date +'%Y-%m-%d')" >> $GITHUB_ENV
|
|
|
|
- name: Update version.php
|
|
run: |
|
|
echo "<?php" > src/structure/components/com_sportsmanager/util/version.php
|
|
echo "defined('_JEXEC') or die;" >> src/structure/components/com_sportsmanager/util/version.php
|
|
echo "return [" >> src/structure/components/com_sportsmanager/util/version.php
|
|
echo " 'version' => '${{ env.VERSION }}'," >> src/structure/components/com_sportsmanager/util/version.php
|
|
echo " 'date' => '$(date +%F)'," >> src/structure/components/com_sportsmanager/util/version.php
|
|
echo "];" >> src/structure/components/com_sportsmanager/util/version.php
|
|
echo "Updating version to $VERSION in sportsmanager.xml"
|
|
sed -i "s#<version>.*</version>#<version>$VERSION</version>#" src/structure/sportsmanager.xml
|
|
echo "Updating Date to $DATE in sportsmanager.xml"
|
|
sed -i "s#<creationDate>.*</creationDate>#<creationDate>$DATE</creationDate>#" src/structure/sportsmanager.xml
|
|
|
|
- name: Generate release notes
|
|
id: release_notes_extension
|
|
uses: release-drafter/release-drafter@v6
|
|
with:
|
|
config-name: release-drafter_extension.yml
|
|
version: ${{ github.ref_name }}
|
|
env:
|
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
|
|
- name: Save release notes to file
|
|
run: |
|
|
echo "${{ steps.release_notes_extension.outputs.body }}" > RELEASE_NOTES.md
|
|
|
|
- name: Run build script
|
|
run: npm run release
|
|
|
|
- name: Generate release notes
|
|
id: release_notes_github
|
|
uses: release-drafter/release-drafter@v6
|
|
with:
|
|
config-name: release-drafter_github.yml
|
|
env:
|
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
|
|
- name: Save release notes to file
|
|
run: |
|
|
echo "${{ steps.release_notes_github.outputs.body }}" > RELEASE_NOTES.md
|
|
|
|
- name: Create GitHub Release
|
|
uses: softprops/action-gh-release@v2
|
|
with:
|
|
tag_name: "${{ github.ref_name }}"
|
|
name: "Release ${{ github.ref_name }}"
|
|
files: package/packages/com_sportsmanager.zip
|
|
body_path: "RELEASE_NOTES.md"
|
|
env:
|
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
|
|
- name: Delete draft release via API # workaround: remove leftover draft by release-drafter
|
|
env:
|
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
REPO: ${{ github.repository }}
|
|
run: |
|
|
drafts=$(curl -s -H "Authorization: token $GITHUB_TOKEN" \
|
|
https://api.github.com/repos/$REPO/releases | jq '.[] | select(.draft == true)')
|
|
|
|
if [ -n "$drafts" ]; then
|
|
id=$(echo "$drafts" | jq -r '.id')
|
|
curl -s -X DELETE -H "Authorization: token $GITHUB_TOKEN" \
|
|
https://api.github.com/repos/$REPO/releases/$id
|
|
echo "Deleted draft release with ID: $id"
|
|
else
|
|
echo "No draft releases found"
|
|
fi
|
|
|
|
- name: Send notification to Teams
|
|
run: |
|
|
curl -H 'Content-Type: application/json' \
|
|
-d "{
|
|
\"@type\": \"MessageCard\",
|
|
\"@context\": \"http://schema.org/extensions\",
|
|
\"summary\": \"New Release\",
|
|
\"themeColor\": \"0076D7\",
|
|
\"title\": \"🚀 New Release: ${{ github.ref_name }}\",
|
|
\"sections\": [{
|
|
\"activityTitle\": \"Repository: ${{ github.repository }}\",
|
|
\"text\": \"${{ steps.release_notes_github.outputs.body }}\"
|
|
}],
|
|
\"potentialAction\": [{
|
|
\"@type\": \"OpenUri\",
|
|
\"name\": \"View Release\",
|
|
\"targets\": [{ \"os\": \"default\", \"uri\": \"https://github.com/${{ github.repository }}/releases/tag/${{ github.ref_name }}\" }]
|
|
}]
|
|
}" \
|
|
${{ secrets.TEAMS_WEBHOOK_URL }}
|