mirror of
https://github.com/Deutscher-Tischfussballbund/com_sportsmanager.git
synced 2026-06-10 14:37:52 +00:00
100 lines
3.5 KiB
YAML
100 lines
3.5 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: list tags & refs
|
|
run: |
|
|
echo "GITHUB_REF=$GITHUB_REF"
|
|
git tag --list
|
|
git show-ref --tags || true
|
|
|
|
- name: Get version from git tag
|
|
run: echo "VERSION=$(git describe --tags --abbrev=0)" >> $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
|
|
|
|
- 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
|