feat: add build script for plugin metapackages and integrate into CI pipeline
This commit is contained in:
1 parent
9f16082be3
commit
c4982665a6
2 files changed
+78
No files matched your search
@@ -88,6 +88,10 @@ jobs:
|
|||||||
packaging/build-plugin-package.sh deb "$manifest" target/x86_64-unknown-linux-gnu/release dist
|
packaging/build-plugin-package.sh deb "$manifest" target/x86_64-unknown-linux-gnu/release dist
|
||||||
packaging/build-plugin-package.sh rpm "$manifest" target/x86_64-unknown-linux-gnu/release dist
|
packaging/build-plugin-package.sh rpm "$manifest" target/x86_64-unknown-linux-gnu/release dist
|
||||||
done < <(jq -c '.["include"][]' .plugin-release-plan.json)
|
done < <(jq -c '.["include"][]' .plugin-release-plan.json)
|
||||||
|
metapackage_version=$(jq -er '[.include[].engine_version] | unique | if length == 1 then .[0] else error("plugins target different engine versions") end' .plugin-release-plan.json)
|
||||||
|
metapackage_release=${GITHUB_RUN_NUMBER:?GITHUB_RUN_NUMBER is required}
|
||||||
|
packaging/build-plugin-metapackages.sh deb "$metapackage_version" "$metapackage_release" dist
|
||||||
|
packaging/build-plugin-metapackages.sh rpm "$metapackage_version" "$metapackage_release" dist
|
||||||
- name: Import GPG key
|
- name: Import GPG key
|
||||||
if: steps.plugins.outputs.count != '0'
|
if: steps.plugins.outputs.count != '0'
|
||||||
id: import-gpg
|
id: import-gpg
|
||||||
|
|||||||
Executable
+74
@@ -0,0 +1,74 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
set -euo pipefail
|
||||||
|
|
||||||
|
packager=${1:?packager must be deb or rpm}
|
||||||
|
version=${2:?metapackage version is required}
|
||||||
|
release=${3:?metapackage release is required}
|
||||||
|
dist_dir=${4:-dist}
|
||||||
|
nfpm_command=${NFPM:-nfpm}
|
||||||
|
|
||||||
|
if [[ "$packager" != "deb" && "$packager" != "rpm" ]]; then
|
||||||
|
echo "packager must be deb or rpm" >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
if [[ ! "$release" =~ ^[1-9][0-9]*$ ]]; then
|
||||||
|
echo "metapackage release must be a positive integer" >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [[ "$packager" == "deb" ]]; then
|
||||||
|
architecture=all
|
||||||
|
else
|
||||||
|
architecture=noarch
|
||||||
|
fi
|
||||||
|
|
||||||
|
mkdir -p "$dist_dir"
|
||||||
|
|
||||||
|
make_metapackage() {
|
||||||
|
local name=$1 description=$2
|
||||||
|
shift 2
|
||||||
|
local config
|
||||||
|
config=$(mktemp)
|
||||||
|
{
|
||||||
|
echo "name: $name"
|
||||||
|
echo "arch: $architecture"
|
||||||
|
echo "platform: linux"
|
||||||
|
echo "version: $version"
|
||||||
|
echo "release: $release"
|
||||||
|
echo "section: utils"
|
||||||
|
echo "priority: optional"
|
||||||
|
echo "maintainer: Elias Wendland <eliaswendland@pm.me>"
|
||||||
|
echo "description: $description"
|
||||||
|
echo "license: GPL-3.0-only"
|
||||||
|
echo "homepage: https://git.ewenlau.net/ewenlau/convertis"
|
||||||
|
echo "depends:"
|
||||||
|
for dependency in "$@"; do
|
||||||
|
echo " - $dependency"
|
||||||
|
done
|
||||||
|
} > "$config"
|
||||||
|
"$nfpm_command" package --config "$config" --packager "$packager" --target "$dist_dir/"
|
||||||
|
rm -f "$config"
|
||||||
|
}
|
||||||
|
|
||||||
|
# These dependencies deliberately have no version constraint. Each plugin has
|
||||||
|
# its own release cycle, so a metapackage must never pin an installed plugin to
|
||||||
|
# the version that happened to exist when the metapackage was built.
|
||||||
|
make_metapackage convertis-ffmpeg "All official FFmpeg plugins for Convertis" \
|
||||||
|
convertis \
|
||||||
|
convertis-ffmpeg-audio \
|
||||||
|
convertis-ffmpeg-video \
|
||||||
|
convertis-ffmpeg-video-to-frames \
|
||||||
|
convertis-ffmpeg-frames-to-video
|
||||||
|
|
||||||
|
make_metapackage convertis-image "All official image plugins for Convertis" \
|
||||||
|
convertis \
|
||||||
|
convertis-native-image \
|
||||||
|
convertis-image-ascii \
|
||||||
|
convertis-imagemagick \
|
||||||
|
convertis-graphicsmagick
|
||||||
|
|
||||||
|
make_metapackage convertis-plugins-all "Every official Convertis plugin" \
|
||||||
|
convertis \
|
||||||
|
convertis-ffmpeg \
|
||||||
|
convertis-image \
|
||||||
|
convertis-html
|
||||||
Reference in new issue
Block a user