inkstitch/bin/build-distribution-archives

137 wiersze
5.7 KiB
Plaintext
Executable File

VERSION="$(echo ${GITHUB_REF} | sed -e 's|refs/heads/||' -e 's|refs/tags/||' -e 's|/|-|g')"
OS="${BUILD:-$(uname)}"
mkdir artifacts
if [ "$BUILD" = "osx" ]; then
cp -a icons locales print LICENSE VERSION images/examples palettes symbols fonts inx dist/inkstitch.app/Contents/Resources
rm -rf dist/inkstitch/
temp_path="/tmp/inkstitch/"
# inside the scripts folder are:
# - preinstaller (checks for previously installed inkstitch and deletes it) and
# - postinstaller (moves inkstitch folder from /tmp to user Inkscape extensions folder in $HOME)
# The postinstaller is a workaround for a proper way to install in user $HOME space
# Build on GitHub will be handled differently from local builds.
# Local builds will not be signed nor notarized. They are run to produce releases for legacy versions of macOS.
# Notarization for development branches can be forced with this variable set to true
NOTARIZE_DEVELOPMENT_BUILDS=false
if [[ ! -z "${GITHUB_REF}" ]]; then
# This code signs and notarize the inkstitch.app
DEV_IDENT="Developer ID Application: Lex Neva (929A568N58)"
echo "Signing of inkstitch.app"
# Coyping inkstitch-gui.app into inkstitch
ditto electron/build/mac dist/inkstitch.app/Contents/MacOS/electron
# signing the binary may fix notary issue
/usr/bin/codesign -s "${DEV_IDENT}" \
--deep \
--force \
--entitlements installer_scripts/entitlements.plist \
-o runtime \
--timestamp \
dist/inkstitch.app/Contents/MacOS/inkstitch -v
# last signing before packaging
/usr/bin/codesign -s "${DEV_IDENT}" \
--deep \
--force \
--entitlements installer_scripts/entitlements.plist \
-o runtime \
--timestamp \
dist/inkstitch.app -v
echo "Running pkgbuild"
INSTALLER_IDENT="Developer ID Installer: Lex Neva (929A568N58)"
/usr/bin/pkgbuild --root dist/inkstitch.app \
-s "${INSTALLER_IDENT}" \
--component-plist installer_scripts/inkstitch.plist \
--ownership recommended \
--identifier org.inkstitch.installer \
--version ${VERSION} \
--scripts installer_scripts/scripts \
--install-location ${temp_path}inkstitch.app \
artifacts/inkstitch-${VERSION}-${OS}.pkg
if [[ "${GITHUB_REF}" =~ ^refs/tags/v[0-9.]+$ || $NOTARIZE_DEVELOPMENT_BUILDS == true ]]; then
echo "Notary starting"
bash bin/notarize-app "929A568N58" \
"${NOTARY_ACCOUNT}" \
"${NOTARY_PASSWORD}" \
"org.inkstitch.app" \
artifacts/inkstitch-${VERSION}-${OS}.pkg
fi
else
# local builds will not be signed or notarized
cp -a electron/build/mac dist/inkstitch.app/Contents/MacOS/electron
pkgbuild --root dist/inkstitch.app \
--component-plist installer_scripts/inkstitch.plist \
--ownership recommended \
--identifier org.inkstitch.installer \
--version ${VERSION} \
--scripts installer_scripts/scripts \
--install-location ${temp_path}inkstitch.app \
artifacts/inkstitch-${VERSION}-${OS}.pkg
fi
else
cp -a images/examples palettes symbols fonts inx LICENSE VERSION dist/inkstitch
cp -a icons locales print dist/inkstitch/bin
cp -a electron/build/*-unpacked dist/inkstitch/electron
fi
if [ "$BUILD" = "windows" ]; then
# build the installer locally
# remotely it will be called through build.yml after signing
if [[ -z "${GITHUB_REF}" ]]; then
bash bin/build-windows-installer
fi
fi
if [ "$BUILD" = "linux" ]; then
gem install fpm
if [[ "$VERSION" =~ ^v[0-9][.0-9]+$ ]]; then
VERSION=${VERSION#v}
else
# dpkg requires versions to start with a number, so we have to add
# 0.0.1 for development builds
VERSION="0.0.1-${VERSION}"
fi
echo -n "$INKSTITCH_GPG_KEY" | base64 -d | gpg --import
cat <<EOF > $HOME/.rpmmacros
%_gpg_name EA93BCE2CCD0FB2E77B2CC29E8120E50709E5C44
%_signature gpg
EOF
fpm -s dir \
-t deb \
-n inkstitch \
-v "$VERSION" \
-d "inkscape >= 1.0.0" \
--license "GPL-3.0" \
--description "An open-source machine embroidery design platform based on Inkscape" \
--url "https://inkstitch.org" \
--maintainer "maintainer@inkstitch.org" \
--after-install bin/after-install \
--before-remove bin/before-remove \
--verbose \
dist/inkstitch=/opt
fpm -s dir \
-t rpm \
-n inkstitch \
-v "$VERSION" \
-d "inkscape >= 1.0.0" \
--license "GPL-3.0" \
--description "An open-source machine embroidery design platform based on Inkscape" \
--url "https://inkstitch.org" \
--maintainer "maintainer@inkstitch.org" \
--after-install bin/after-install \
--before-remove bin/before-remove \
--verbose \
dist/inkstitch=/opt
rpmsign --addsign inkstitch*.rpm
mv inkstitch*.deb inkstitch*.rpm artifacts/
tar -C dist -Jcf artifacts/inkstitch-${VERSION}-${OS}.tar.xz inkstitch
cat "$(dirname "$0")/linux-sh-installer" artifacts/inkstitch-${VERSION}-${OS}.tar.xz > artifacts/inkstitch-${VERSION}-${OS}.sh
fi