ci: match release bundles by extension, and ship the rpm
Renaming the app to JellyTau renamed its bundles, and the release job globbed `bundle/deb/jellytau_*.deb`. The copy was wrapped in `if [ -f ... ]`, so the rename would have dropped the .deb from the release silently — a green build producing an incomplete release. Matching by extension removes the coupling between the product name and the pipeline, and an empty dist/linux now fails the job instead of passing quietly. That `if [ -f "dir/"*.ext ]` guard was also wrong on its own terms: with more than one match, test gets extra arguments and returns false. Found while verifying the rename: the rpm has been built by every release since deb+rpm became the bundle targets, and never copied, published or documented. It ships now. Also declares the package rename. Tauri kebab-cases productName into the Debian package name, so "JellyTau" produces `jelly-tau` — a different package from the `jellytau` earlier releases installed, which would have put a second copy alongside the old one. deb now declares Replaces/Conflicts/Provides and rpm Obsoletes/Provides, verified in the built control file. TRACES: | DR-214
This commit is contained in:
@@ -131,13 +131,27 @@ jobs:
|
|||||||
- name: Prepare Linux artifacts
|
- name: Prepare Linux artifacts
|
||||||
run: |
|
run: |
|
||||||
mkdir -p dist/linux
|
mkdir -p dist/linux
|
||||||
# Copy AppImage
|
# Match by extension, not by product name. Bundle filenames follow
|
||||||
if [ -f "src-tauri/target/release/bundle/appimage/jellytau_"*.AppImage ]; then
|
# `productName`, so renaming the app (jellytau -> JellyTau) made the
|
||||||
cp src-tauri/target/release/bundle/appimage/jellytau_*.AppImage dist/linux/
|
# old `jellytau_*.deb` glob match nothing — and because the copy was
|
||||||
fi
|
# wrapped in `if [ -f ... ]`, the artifact simply vanished from the
|
||||||
# Copy .deb if built
|
# release with no error. Each bundle directory holds one file.
|
||||||
if [ -f "src-tauri/target/release/bundle/deb/jellytau_"*.deb ]; then
|
#
|
||||||
cp src-tauri/target/release/bundle/deb/jellytau_*.deb dist/linux/
|
# `if [ -f "dir/"*.ext ]` was also wrong on its own terms: with more
|
||||||
|
# than one match `test` gets extra arguments and fails.
|
||||||
|
shopt -s nullglob
|
||||||
|
for bundle in \
|
||||||
|
src-tauri/target/release/bundle/appimage/*.AppImage \
|
||||||
|
src-tauri/target/release/bundle/deb/*.deb \
|
||||||
|
src-tauri/target/release/bundle/rpm/*.rpm; do
|
||||||
|
cp -v "$bundle" dist/linux/
|
||||||
|
done
|
||||||
|
shopt -u nullglob
|
||||||
|
|
||||||
|
# A release with no Linux package is a failure, not a quiet success.
|
||||||
|
if [ -z "$(ls -A dist/linux/)" ]; then
|
||||||
|
echo "::error::No Linux bundles found under src-tauri/target/release/bundle/"
|
||||||
|
exit 1
|
||||||
fi
|
fi
|
||||||
ls -lah dist/linux/
|
ls -lah dist/linux/
|
||||||
|
|
||||||
@@ -342,10 +356,11 @@ jobs:
|
|||||||
echo "" >> release_notes.md
|
echo "" >> release_notes.md
|
||||||
echo "#### Linux" >> release_notes.md
|
echo "#### Linux" >> release_notes.md
|
||||||
echo "- **AppImage** - Run directly on most Linux distributions" >> release_notes.md
|
echo "- **AppImage** - Run directly on most Linux distributions" >> release_notes.md
|
||||||
echo "- **DEB** - Install via \`sudo dpkg -i jellytau_*.deb\` (Ubuntu/Debian)" >> release_notes.md
|
echo "- **DEB** - Install via \`sudo dpkg -i JellyTau_*.deb\` (Ubuntu/Debian)" >> release_notes.md
|
||||||
|
echo "- **RPM** - Install via \`sudo rpm -i JellyTau-*.rpm\` (Fedora/openSUSE)" >> release_notes.md
|
||||||
echo "" >> release_notes.md
|
echo "" >> release_notes.md
|
||||||
echo "#### Windows" >> release_notes.md
|
echo "#### Windows" >> release_notes.md
|
||||||
echo "- **Installer (.exe)** - Run \`jellytau_*-setup.exe\` (NSIS). Unsigned — SmartScreen may warn on first run." >> release_notes.md
|
echo "- **Installer (.exe)** - Run \`JellyTau_*-setup.exe\` (NSIS). Unsigned — SmartScreen may warn on first run." >> release_notes.md
|
||||||
echo "" >> release_notes.md
|
echo "" >> release_notes.md
|
||||||
echo "#### Android" >> release_notes.md
|
echo "#### Android" >> release_notes.md
|
||||||
echo "- **APK** - Install via \`adb install jellytau-release.apk\` or sideload via file manager" >> release_notes.md
|
echo "- **APK** - Install via \`adb install jellytau-release.apk\` or sideload via file manager" >> release_notes.md
|
||||||
@@ -359,13 +374,13 @@ jobs:
|
|||||||
echo "" >> release_notes.md
|
echo "" >> release_notes.md
|
||||||
echo "#### Linux (AppImage)" >> release_notes.md
|
echo "#### Linux (AppImage)" >> release_notes.md
|
||||||
echo "\`\`\`bash" >> release_notes.md
|
echo "\`\`\`bash" >> release_notes.md
|
||||||
echo "chmod +x jellytau_*.AppImage" >> release_notes.md
|
echo "chmod +x JellyTau_*.AppImage" >> release_notes.md
|
||||||
echo "./jellytau_*.AppImage" >> release_notes.md
|
echo "./JellyTau_*.AppImage" >> release_notes.md
|
||||||
echo "\`\`\`" >> release_notes.md
|
echo "\`\`\`" >> release_notes.md
|
||||||
echo "" >> release_notes.md
|
echo "" >> release_notes.md
|
||||||
echo "#### Linux (DEB)" >> release_notes.md
|
echo "#### Linux (DEB)" >> release_notes.md
|
||||||
echo "\`\`\`bash" >> release_notes.md
|
echo "\`\`\`bash" >> release_notes.md
|
||||||
echo "sudo dpkg -i jellytau_*.deb" >> release_notes.md
|
echo "sudo dpkg -i JellyTau_*.deb" >> release_notes.md
|
||||||
echo "jellytau" >> release_notes.md
|
echo "jellytau" >> release_notes.md
|
||||||
echo "\`\`\`" >> release_notes.md
|
echo "\`\`\`" >> release_notes.md
|
||||||
echo "" >> release_notes.md
|
echo "" >> release_notes.md
|
||||||
|
|||||||
Vendored
+17
-4
@@ -116,17 +116,30 @@ Runs after both builds succeed (only on version tags):
|
|||||||
- **Use:** Run directly on any Linux distro
|
- **Use:** Run directly on any Linux distro
|
||||||
- **Installation:**
|
- **Installation:**
|
||||||
```bash
|
```bash
|
||||||
chmod +x jellytau_*.AppImage
|
chmod +x JellyTau_*.AppImage
|
||||||
./jellytau_*.AppImage
|
./JellyTau_*.AppImage
|
||||||
```
|
```
|
||||||
|
|
||||||
#### DEB Package
|
#### DEB Package
|
||||||
- **File:** `jellytau_*.deb`
|
- **File:** `JellyTau_*.deb`
|
||||||
- **Size:** ~80-120 MB
|
- **Size:** ~80-120 MB
|
||||||
- **Use:** Install on Debian/Ubuntu/similar
|
- **Use:** Install on Debian/Ubuntu/similar
|
||||||
- **Installation:**
|
- **Installation:**
|
||||||
```bash
|
```bash
|
||||||
sudo dpkg -i jellytau_*.deb
|
sudo dpkg -i JellyTau_*.deb
|
||||||
|
jellytau
|
||||||
|
```
|
||||||
|
- **Note:** the Debian package is named `jelly-tau` (Tauri kebab-cases
|
||||||
|
`productName`), while the command stays `jellytau`. The package declares
|
||||||
|
`Replaces`/`Conflicts`/`Provides: jellytau`, so upgrading from a release built
|
||||||
|
before the rename replaces it rather than installing a second copy.
|
||||||
|
|
||||||
|
#### RPM Package
|
||||||
|
- **File:** `JellyTau-*.rpm`
|
||||||
|
- **Use:** Install on Fedora/openSUSE/similar
|
||||||
|
- **Installation:**
|
||||||
|
```bash
|
||||||
|
sudo rpm -i JellyTau-*.rpm
|
||||||
jellytau
|
jellytau
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|||||||
@@ -50,7 +50,28 @@
|
|||||||
"category": "Video",
|
"category": "Video",
|
||||||
"shortDescription": "A cross-platform Jellyfin client",
|
"shortDescription": "A cross-platform Jellyfin client",
|
||||||
"longDescription": "JellyTau is a Jellyfin client for Linux and Android. It streams and downloads music and video from a Jellyfin server, plays them back offline, and can control other Jellyfin sessions on the network.",
|
"longDescription": "JellyTau is a Jellyfin client for Linux and Android. It streams and downloads music and video from a Jellyfin server, plays them back offline, and can control other Jellyfin sessions on the network.",
|
||||||
"licenseFile": "../LICENSE"
|
"licenseFile": "../LICENSE",
|
||||||
|
"linux": {
|
||||||
|
"deb": {
|
||||||
|
"provides": [
|
||||||
|
"jellytau"
|
||||||
|
],
|
||||||
|
"conflicts": [
|
||||||
|
"jellytau"
|
||||||
|
],
|
||||||
|
"replaces": [
|
||||||
|
"jellytau"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"rpm": {
|
||||||
|
"provides": [
|
||||||
|
"jellytau"
|
||||||
|
],
|
||||||
|
"obsoletes": [
|
||||||
|
"jellytau"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
},
|
},
|
||||||
"mainBinaryName": "jellytau"
|
"mainBinaryName": "jellytau"
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user