Skip to content

Commit 2585c50

Browse files
author
Meyn
committed
Improved Release Packaging & Artifact Handling
1 parent 72add92 commit 2585c50

File tree

1 file changed

+82
-36
lines changed

1 file changed

+82
-36
lines changed

.github/workflows/build.yml

Lines changed: 82 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -17,43 +17,47 @@ jobs:
1717
build:
1818
strategy:
1919
matrix:
20-
framework: [ net6.0 ]
20+
framework: [net6.0]
2121
runs-on: ubuntu-latest
2222
steps:
2323
- name: Checkout
2424
uses: actions/checkout@v4
2525
with:
2626
submodules: true
27+
fetch-depth: 0
2728

2829
- name: Extract version from tag
2930
id: extract_version
3031
run: |
3132
TAG_VERSION=${GITHUB_REF#refs/tags/v}
3233
echo "Extracted version: $TAG_VERSION"
3334
echo "PACKAGE_VERSION=$TAG_VERSION" >> $GITHUB_ENV
34-
35-
# Log the extracted version
36-
echo "Version: $TAG_VERSION"
37-
38-
# Check if the version is a pre-release (starts with 0.)
3935
if [[ "$TAG_VERSION" == 0.* ]]; then
40-
echo "This is a pre-release version."
4136
echo "IS_PRERELEASE=true" >> $GITHUB_ENV
4237
else
43-
echo "This is a stable release."
4438
echo "IS_PRERELEASE=false" >> $GITHUB_ENV
4539
fi
4640
47-
- name: Log version and pre-release status
41+
- name: Determine branch and modify package name
42+
id: branch_check
4843
run: |
49-
echo "Version: $PACKAGE_VERSION"
50-
echo "Is Pre-release: $IS_PRERELEASE"
44+
BRANCH_NAME=$(git branch -r --contains HEAD | sed -e 's/ *origin\///g' | grep -v HEAD | head -n 1)
45+
if [ -z "$BRANCH_NAME" ]; then
46+
echo "No branch found; defaulting to master"
47+
BRANCH_NAME="master"
48+
fi
49+
if [ "$BRANCH_NAME" = "master" ]; then
50+
BUILD_SUFFIX="net6.0"
51+
else
52+
BUILD_SUFFIX="$BRANCH_NAME"
53+
fi
54+
echo "Detected branch: $BRANCH_NAME, Build suffix: $BUILD_SUFFIX"
55+
echo "BUILD_SUFFIX=$BUILD_SUFFIX" >> $GITHUB_ENV
5156
52-
- name: Extract repository name without owner
57+
- name: Extract repository name
5358
id: extract_repo_name
5459
run: |
55-
REPO_NAME=$(echo $GITHUB_REPOSITORY | cut -d'/' -f2)
56-
echo "Repository name: $REPO_NAME"
60+
REPO_NAME=$(basename $GITHUB_REPOSITORY)
5761
echo "PLUGIN_NAME=$REPO_NAME" >> $GITHUB_ENV
5862
5963
- name: Setup .NET Core
@@ -67,7 +71,10 @@ jobs:
6771
6872
- name: Build with package version
6973
run: |
70-
dotnet build *.sln -c Release -f ${{ matrix.framework }} -p:Version=${{ env.PACKAGE_VERSION }} -p:AssemblyVersion=${{ env.PACKAGE_VERSION }} -p:FileVersion=${{ env.PACKAGE_VERSION }}
74+
dotnet build *.sln -c Release -f ${{ matrix.framework }} \
75+
-p:Version=${{ env.PACKAGE_VERSION }} \
76+
-p:AssemblyVersion=${{ env.PACKAGE_VERSION }} \
77+
-p:FileVersion=${{ env.PACKAGE_VERSION }}
7178
7279
- name: Find Plugin Output Directory
7380
id: find_plugin_dir
@@ -77,52 +84,91 @@ jobs:
7784
echo "Error: Plugin output directory not found!"
7885
exit 1
7986
fi
80-
echo "PLUGIN_OUTPUT_DIR=$PLUGIN_OUTPUT_DIR" >> $GITHUB_OUTPUT
87+
echo "PLUGIN_OUTPUT_DIR=$PLUGIN_OUTPUT_DIR" >> $GITHUB_ENV
8188
82-
- name: Zip files matching pattern
89+
- name: Zip Plugin
8390
run: |
84-
cd ./_plugins/net6.0/${{ env.PLUGIN_NAME }}/
85-
zip -r ${{ env.PLUGIN_NAME }}-v${{ env.PACKAGE_VERSION }}.${{ matrix.framework }}.zip *.${{ env.PLUGIN_NAME }}.* *.Plugin.${{ env.PLUGIN_NAME }}.*
91+
cd ${{ env.PLUGIN_OUTPUT_DIR }}
92+
zip -r ${{ env.PLUGIN_NAME }}-v${{ env.PACKAGE_VERSION }}.${{ env.BUILD_SUFFIX }}.zip *.${{ env.PLUGIN_NAME }}.* *.Plugin.${{ env.PLUGIN_NAME }}.*
8693
8794
- name: Get commit messages since last release
8895
id: get_commit_messages
8996
run: |
90-
LAST_TAG=$(git describe --tags --abbrev=0 $(git rev-list --tags --max-count=1) 2>/dev/null || true)
91-
if [ -z "$LAST_TAG" ]; then
92-
echo "No previous tag found. Using initial commit."
93-
COMMIT_MESSAGES=$(git log --pretty=format:"- %s")
97+
CURRENT_TAG=${GITHUB_REF#refs/tags/}
98+
PREVIOUS_TAG=$(git describe --tags --abbrev=0 ${CURRENT_TAG}^ 2>/dev/null || true)
99+
if [ -z "$PREVIOUS_TAG" ]; then
100+
echo "No previous tag found. Retrieving all commit messages up to ${CURRENT_TAG}."
101+
COMMIT_MESSAGES=$(git log --pretty=format:"- %h %s" $CURRENT_TAG)
94102
else
95-
COMMIT_MESSAGES=$(git log $LAST_TAG..HEAD --pretty=format:"- %s")
103+
COMMIT_MESSAGES=$(git log ${PREVIOUS_TAG}..${CURRENT_TAG} --pretty=format:"- %h %s")
96104
fi
97105
if [ -z "$COMMIT_MESSAGES" ]; then
98-
COMMIT_MESSAGES=$(git log --oneline $(git describe --tags --abbrev=0)@^..@ | sed 's/^/- /')
106+
echo "No commit messages found!"
107+
COMMIT_MESSAGES="- No significant changes."
99108
fi
100-
if [ -z "$COMMIT_MESSAGES" ]; then
101-
COMMIT_MESSAGES=$(git log --all --oneline | sed 's/^/- /')
102-
fi
103-
echo "Commit messages: $COMMIT_MESSAGES"
109+
echo "Commit messages from ${PREVIOUS_TAG:-start} to ${CURRENT_TAG}: $COMMIT_MESSAGES"
104110
echo "COMMIT_MESSAGES<<EOF" >> $GITHUB_ENV
105111
echo "$COMMIT_MESSAGES" >> $GITHUB_ENV
106112
echo "EOF" >> $GITHUB_ENV
107113
114+
- name: Fetch Minimum Lidarr Version from Submodule
115+
id: fetch_minimum_lidarr_version
116+
run: |
117+
if [ -f "Submodules/Lidarr/azure-pipelines.yml" ]; then
118+
RAW_YAML=$(cat Submodules/Lidarr/azure-pipelines.yml)
119+
else
120+
echo "Error: Submodules/Lidarr/azure-pipelines.yml not found!"
121+
exit 1
122+
fi
123+
MAJOR_VERSION=$(echo "$RAW_YAML" | grep "majorVersion:" | head -n 1 | sed "s/.*majorVersion: *'\([^']*\)'.*/\1/")
124+
echo "Extracted majorVersion: $MAJOR_VERSION"
125+
DOT_COUNT=$(echo "$MAJOR_VERSION" | awk -F. '{print NF-1}')
126+
if [ "$DOT_COUNT" -eq 2 ]; then
127+
MINIMUM_LIDARR_VERSION="${MAJOR_VERSION}.0"
128+
else
129+
MINIMUM_LIDARR_VERSION="$MAJOR_VERSION"
130+
fi
131+
echo "Minimum Lidarr Version: $MINIMUM_LIDARR_VERSION"
132+
echo "MINIMUM_LIDARR_VERSION=$MINIMUM_LIDARR_VERSION" >> $GITHUB_ENV
133+
108134
- name: Debug environment variables
109135
run: |
110136
echo "COMMIT_MESSAGES: $COMMIT_MESSAGES"
111-
echo "TAG_DESCRIPTION: $TAG_DESCRIPTION"
137+
echo "TAG_VERSION: $TAG_VERSION"
112138
echo "IS_PRERELEASE: $IS_PRERELEASE"
139+
echo "BUILD_SUFFIX: $BUILD_SUFFIX"
140+
echo "MINIMUM_LIDARR_VERSION: $MINIMUM_LIDARR_VERSION"
113141
114142
- name: Create GitHub Release and Upload Artifact
115143
uses: softprops/action-gh-release@v1
116144
with:
117145
tag_name: ${{ github.ref }}
118-
name: 🚀 Release ${{ env.PACKAGE_VERSION }}
146+
name: "🚀 Release ${{ env.PACKAGE_VERSION }}"
119147
body: |
120-
### 📝 **Changes**
148+
### 📝 What's New:
121149
${{ env.COMMIT_MESSAGES }}
122150
123-
----
151+
---
152+
153+
### 📥 Installation Notes:
154+
155+
#### Docker Setup (Hotio Image) 🐳
156+
```yml
157+
image: ghcr.io/hotio/lidarr:pr-plugins
158+
```
159+
160+
#### Non-Docker Setup
161+
Go to `System -> General -> Branch` and Replace "master" with "plugins"
162+
163+
**Plugin Installation:**
164+
- In Lidarr, navigate to **System -> Plugins**
165+
- Paste the URL: `https://github.com/TypNull/${{ env.PLUGIN_NAME }}`
166+
167+
---
124168
125-
### 📦 **Artifact**
126-
The plugin artifact is attached to this release. Download it below!
169+
### 📦 Artifact
170+
**Package:** [${{ env.PLUGIN_NAME }}-v${{ env.PACKAGE_VERSION }}.${{ env.BUILD_SUFFIX }}](https://github.com/${{ github.repository }}/releases/download/${{ github.ref_name }}/${{ env.PLUGIN_NAME }}-v${{ env.PACKAGE_VERSION }}.${{ env.BUILD_SUFFIX }}.zip)
171+
**Minimum Lidarr Version:** ${{ env.MINIMUM_LIDARR_VERSION }}
172+
prerelease: ${{ env.IS_PRERELEASE }}
127173
files: |
128-
${{ steps.find_plugin_dir.outputs.PLUGIN_OUTPUT_DIR }}/${{ env.PLUGIN_NAME }}-v${{ env.PACKAGE_VERSION }}.${{ matrix.framework }}.zip
174+
${{ env.PLUGIN_OUTPUT_DIR }}/${{ env.PLUGIN_NAME }}-v${{ env.PACKAGE_VERSION }}.${{ env.BUILD_SUFFIX }}.zip

0 commit comments

Comments
 (0)